'For' loop for specified integers (more than one)

Hello, I know that we can use for loop for specified integers like : for v=[1 5 23 99]. But I want to have more than one variable. I have to calculate every iteration in the loop with given initial condition (x,y,a). For example for:[ (x=1,y=0,a=0.2),(x=2,y=1,a=2) ] etc. Can I write it somehow ?

1 件のコメント

Adam
Adam 2016 年 5 月 10 日
Just put the other variables inside the loop as e.g.
a = a + 1;

サインインしてコメントする。

回答 (2 件)

KSSV
KSSV 2016 年 5 月 10 日

0 投票

P = [1 0 0.2 ; 2 1 2 ] ;
for i = 1:size(P,1)
x = P(i,1) ; y = P(i,2) ; a = P(i,3) ;
end

1 件のコメント

Stephen23
Stephen23 2016 年 5 月 10 日
編集済み: Stephen23 2016 年 5 月 10 日
Note that you should not use i for variable names, as this is the name of the inbuilt imaginary unit:
Ditto for j, size, length, etc, etc.
You can use which to check if variable names are already allocated.

サインインしてコメントする。

Stephen23
Stephen23 2016 年 5 月 10 日
編集済み: Stephen23 2016 年 5 月 10 日

0 投票

The simplest solution is to use indexing:
X = [1,2,3]
Y = [0,1,2];
A = [0.2,2,20];
for k = 1:numel(A)
x = X(k)
y = Y(k)
a = A(k)
end

5 件のコメント

Eirini Gk
Eirini Gk 2016 年 5 月 10 日
what is numel ?
Eirini Gk
Eirini Gk 2016 年 5 月 10 日
im not sure that i explain well. I have a function and I input (x,y,a etc) it calculate many things but it is not the problem. Now I want to calculate these things for more than one (actually 12) initial cond.(x,y,a) and compare them to a graph. So it is not convenient to run the function 12 times because I cant compare the results by hand. Thats why Im trying to find a wayx to calculate for these 12 in.cond. in the same function..So i thought that for loop will help.
Stephen23
Stephen23 2016 年 5 月 10 日
編集済み: Stephen23 2016 年 5 月 10 日
It would be easiest if you showed us the function, some example data, and what exactly you want to have at the output. Perhaps you could try something like this:
X = [1,2,3]
Y = [0,1,2];
A = [0.2,2,20];
out = cell(size(A));
for k = 1:numel(A)
x = X(k)
y = Y(k)
a = A(k)
out{k} = myFunction(x,y,a,...);
end
Eirini Gk
Eirini Gk 2016 年 5 月 10 日
One quastion more because Im quite new user of Matlab. If I have a variable s=0 s=s+1 that gets bigger in every iteration if I 'print' a(s) would it appear a(1), a(2) etc. or not ? Thank u very much
Stephen23
Stephen23 2016 年 5 月 10 日
@Eirini Gk: Yes, it is just basic indexing. You just have to keep in mind that MATLAB indexing (like is common in mathematics) starts from one, not zero.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索

質問済み:

2016 年 5 月 10 日

コメント済み:

2016 年 5 月 10 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by