web-dev-qa-db-fra.com

Comment parcourir un vecteur de colonne dans Matlab?

Duplicate possible:
Comment itérer dans chaque élément d’une matrice à n dimensions en MATLAB?

J'ai un vecteur de colonne list que je voudrais itérer comme ceci:

for Elm in list
   //do something with Elm

Comment?

49
snakile

Dans Matlab, vous pouvez parcourir directement les éléments de la liste. Cela peut être utile si vous n'avez pas besoin de savoir sur quel élément vous travaillez actuellement.

Ainsi, vous pouvez écrire

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

Notez que Matlab parcourt les colonnes de list, donc si list est un vecteur nx1, vous souhaiterez peut-être le transposer.

91
Jonas
for i=1:length(list)
  Elm = list(i);
  //do something with Elm.
30
James

avec beaucoup de fonctions dans Matlab, vous n'avez pas besoin de faire une itération du tout.

par exemple, multiplier par sa position dans la liste:

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

les algorithmes vectorisés dans Matlab sont en général beaucoup plus rapides.

6
Marc

Si vous souhaitez simplement appliquer une fonction à chaque élément et placer les résultats dans un tableau en sortie, vous pouvez utiliser arrayfun .

Comme d'autres l'ont fait remarquer, pour la plupart des opérations, il est préférable d'éviter les boucles dans MATLAB et vectorisez votre code à la place .

2
del