Changing variable in a looped code

3 Ansichten (letzte 30 Tage)
Mazhar
Mazhar am 3 Sep. 2013
Hi, I have been trying to figure this out for a while. It will help in many cases.
I have a set of variables as such;
x1 = [3 4 5 2 3];
x2 = [4 2 7 8 3];
x3 = [8 2 9 3 9];
y = [1 5 3 8 5];
I would like to write a looped program in which the x variable in use would change in each loop. for example,
for i=1:3
plot(x,y)
hold all
end
I would like the program to use x1 for the first loop and than x2 for the second loop and so on.
I have tried writing xi but that does not work.
Thanks,

Akzeptierte Antwort

Ilham Hardy
Ilham Hardy am 3 Sep. 2013
hint:
doc eval
  7 Kommentare
Mazhar
Mazhar am 3 Sep. 2013
Ok I see how it works with the plot command. But now I'm trying to include it in to other calculations, for example
z = [4 1 3 4 5];
for k=1:3
distance = z - x;
distancesqr = distance' * distance;
end
again the for the first loop x1 is used and then x2 for the second loop and so on.
Ilham Hardy
Ilham Hardy am 3 Sep. 2013
Bearbeitet: Ilham Hardy am 3 Sep. 2013
Then it is (for many reasons that will be described by another fellow member :D) discouraged using the eval.
If you have a possibility (and will) to change/adjust the x. Then it will better to transform x into cell array.
e.g.
x1 = [3 4 5 2 3];
x2 = [4 2 7 8 3];
x3 = [8 2 9 3 9];
x_all = {x1;x2;x3};
y = [1 5 3 8 5];
z = [4 1 3 4 5];
% pre-allocate
distancesqr=cell(1,3);
for id = 1:3
%eval(['plot(x' num2str(id) ',y)'])
figure(1)
plot(x_all{id},y)
hold all
distance = z - x_all{id};
distancesqr{id} = distance' * distance;
end
%bonus
figure(2)
plot(distancesqr{:},y)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

rifat
rifat am 3 Sep. 2013
for i=1:3
string=['plot(x' num2str(i) ',y);'];
eval(string);
end
I think this will do

Walter Roberson
Walter Roberson am 3 Sep. 2013

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by