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?
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.
for i=1:length(list)
Elm = list(i);
//do something with Elm.
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.
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 .