How to iterate over a column vector in Matlab?

MatlabIteration

Matlab Problem Overview


> Possible Duplicate:
> How do I iterate through each element in an n-dimensional matrix in MATLAB?

I have a column vector list which I would like to iterate like this:

for elm in list
   //do something with elm

How?

Matlab Solutions


Solution 1 - Matlab

In Matlab, you can iterate over the elements in the list directly. This can be useful if you don't need to know which element you're currently working on.

Thus you can write

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

Note that Matlab iterates through the columns of list, so if list is a nx1 vector, you may want to transpose it.

Solution 2 - Matlab

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

Solution 3 - Matlab

with many functions in matlab, you don't need to iterate at all.

for example, to multiply by it's position in the list:

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

vectorized algorithms in matlab are in general much faster.

Solution 4 - Matlab

If you just want to apply a function to each element and put the results in an output array, you can use arrayfun.

As others have pointed out, for most operations, it's best to avoid loops in MATLAB and vectorise your code instead.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsnakileView Question on Stackoverflow
Solution 1 - MatlabJonasView Answer on Stackoverflow
Solution 2 - MatlabJamesView Answer on Stackoverflow
Solution 3 - MatlabMarcView Answer on Stackoverflow
Solution 4 - MatlabdelView Answer on Stackoverflow