2012-06-19 18 views
8

He encontrado muchos códigos MATLAB que tienen un %#ok<SAGROW> comentarios. Este comentario se usa en diferentes circunstancias y no puedo entender lo que significa.¿Qué significa% # ok <SAGROW> comment en MATLAB?

A modo de ejemplo:

i = 1; 
flag = true; 
for l = 1:k 
    while(flag==true) 
     if(probs(i)~=0) 
      leaves(l).val = i-1; %#ok<*SAGROW> 
      leaves(l).zero = ''; 
      leaves(l).one = ''; 
      leaves(l).prob = probs(i); 
      i = i + 1; 
      flag = false; 
     else 
      i = i+1; 
      flag = true; 
     end 
    end 
flag =true; 
end 

Hay otras referencias a este comentario también, por instace:

Respuesta

6

Suprime las advertencias mlint. En este caso específico, se trata de no preasignar una matriz.

mlint es una de las herramientas de análisis de código estático que tiene Matlab. Encuentra posibles errores y muestra advertencias.

Editar (1): acabo dio cuenta de que su pregunta es acerca SAGROW, no AGROW. No pude encontrarlo. Supongo que es una sintaxis mlint antigua/nueva.

2

No sé SAGROW, pero AGROW significaría que una matriz/vector/matriz dada <name> might be growing inside a loop. Consider preallocating for speed.

+0

¿'AGROW' le dice al MATLAB que debe asignar previamente la matriz/matriz para aumentar el rendimiento, o simplemente suprime la advertencia de preasignación? – Isaac

+0

Simplemente suprima la advertencia. – glglgl

4

General answer (para diferentes valores entre paréntesis angulares):

Tipo msgid:SAGROW en Preferencias -> Analizador de Código.

Para otros msgid:<your-ok-msg-id>.

edición: camino más corto, 1. Retire el comentario, 2. leer la descripción de la pieza codeanalyzer subrayado de código.

+0

¿Cómo haces el reverso? – Eric

+1

@Eric Haga clic derecho en las palabras con el subrayado rojo, y elija "Supress [warning-magssage] ..." -> "En esta línea" le dará el código correcto para suprimir esta advertencia. – Adiel