Azzera filtri
Azzera filtri

Changing variable in a looped code

2 visualizzazioni (ultimi 30 giorni)
Mazhar
Mazhar il 3 Set 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,

Risposta accettata

Ilham Hardy
Ilham Hardy il 3 Set 2013
hint:
doc eval
  7 Commenti
Mazhar
Mazhar il 3 Set 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 il 3 Set 2013
Modificato: Ilham Hardy il 3 Set 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)

Accedi per commentare.

Più risposte (2)

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

Walter Roberson
Walter Roberson il 3 Set 2013

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by