2010-08-11 22 views

Respuesta

74

En Matlab, puede iterar sobre los elementos de la lista directamente. Esto puede ser útil si no necesita saber en qué elemento está trabajando actualmente.

Por lo tanto se puede escribir

for elm = list 
%# do something with the element 
end 

Tenga en cuenta que itera Matlab a través de las columnas de list, por lo que si list es un vector nx1, es posible que desee para su incorporación.

+0

También no es bueno si quiere cambiar el valor de los elementos que contienen – greg121

+4

Si no sabe si la lista es una columna o un vector de fila, puede usar la combinación bastante fea '(:) '': 'para elm = lista(:)'; % ...; end'. La combinación '(:) '' también creará vectores de fila a partir de matrices, así que trátelo con cuidado. – JaBe

+0

quieres decir '(:). '' ¿Verdad? De lo contrario, está utilizando el operador de conjugado complejo en lugar del operador de transposición. –

28
for i=1:length(list) 
    elm = list(i); 
    //do something with elm. 
5

con muchas funciones en matlab, no es necesario iterar en absoluto.

por ejemplo, multiplicar por su posición en la lista:

m = [1:numel(list)]'; 
elm = list.*m; 

algoritmos vectorizados en MATLAB son en general mucho más rápido.

2

Si solo desea aplicar una función a cada elemento y poner los resultados en una matriz de salida, puede usar arrayfun.

Como han señalado otros, para la mayoría de las operaciones, es mejor evitar los bucles en MATLAB y vectorise your code instead.