Considere preasignar para velocidad

Estaba haciendo lo siguiente

for i = 1:m, index = 0; for j = 1:n, index = index+values(i,j)*2^(j-1); if (j==1) symbol_chip = chip_values(index+1,:); else symbol_chip = [symbol_chip chip_values(index+1,:)]; end end end 

me dice lo siguiente:

symbol_chip podría estar creciendo dentro del ciclo. Considere preasignar para velocidad.

¿Algunas ideas?

Sí. Cada vez que te symbol_chip , tu bloque elseif symbol_chip tamaño de symbol_chip , que es costoso. En su lugar, symbol_chip = zeros(max_size, 1); escribir su código para que tenga (por ejemplo) symbol_chip = zeros(max_size, 1); antes del ciclo Luego, cambie los contenidos pero no el tamaño de symbol_chip .

Tendrás que cambiar ligeramente tu enfoque, pero será mucho más rápido si lo haces. Si no te molesta la velocidad actual, ¡no cambies nada!

M-Lint lanzará esta advertencia si tiene una variable que crece dentro de un bucle sin ser preasignada. Puede eliminar este error asignando previamente la variable de recostackción.

Por ejemplo, si usted sabía que la variable symbol_chip tendría como máximo i * j elementos, podría preasignarla con la instrucción:

 symbol_chip = zeros(i*j); 

Sin embargo, para la mayoría de las aplicaciones, la preasignación solo tendrá un efecto insignificante en el rendimiento del algoritmo. Solo me preocuparía si se trata de conjuntos de datos muy grandes.