10

Is there a matlab equivalent of the "for in" loop in python?

For instance in python, I can iterate through items of a list using the following code:

for c_value in C_VALUES:
stressed_geek
  • 2,118
  • 8
  • 33
  • 45
  • 1
    Be aware: iteration is usually not "the Matlab way to do it". Most uses of iteration in other languages (like Python) are more elegantly and efficiently expressed in Matlab as matrix operations. – Robert Cooper May 31 '12 at 22:24
  • 2
    @RobertCooper Thats true only regarding arrays and matrices. If I had 10 images or different sizes, and had to do the same operation on each of them, I would like to loop in the for _ in list format. – Anoop Mar 22 '14 at 17:20

3 Answers3

16

In MATLAB, for iterates over the columns of a matrix. Pretty much the same as your example, if C_VALUES were a row.

for val = row_vec
    #% stuff in the loop
end

is the MATLAB syntax. val will take on the values of row_vec as it iterates. The syntax you will often see (but isn't strictly necessary) is

for ii = 1:length(values)
    val = values(ii);
    #% stuff in the loop using val
end

Here, 1:length(values) creates a row vector [1 2 3 ...], and ii can be used to index into values.

(Note: i is another common choice, but as soon as you use i in this type of context where it is assigned a value, you don't get to use it in the imaginary number sense anymore).

Cris Luengo
  • 55,762
  • 10
  • 62
  • 120
tmpearce
  • 12,523
  • 4
  • 42
  • 60
3

Please try the following code.

 vs = [1 12 123 1234];
    for v = vs
        disp(v)
    end
0

Building on @tmpearce 's answer, a little trick I've found is to use:

for i = values(:)'
    #% i iterates through each element of 'values'
end

The colon operator ensures the array is a column vector, then transposing it gives you a row vector.