stressed_geek
stressed_geek

Reputation: 2176

Is there a Matlab loop equivalent to python's "for in" loop?

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:

Upvotes: 10

Views: 6491

Answers (3)

tmpearce
tmpearce

Reputation: 12693

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).

Upvotes: 16

sandshrew118
sandshrew118

Reputation: 1

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.

Upvotes: 0

Dmitriy Gorelov
Dmitriy Gorelov

Reputation: 31

Please try the following code.

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

Upvotes: 3

Related Questions