value of variable is changed in iteration
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
summyia qamar
am 15 Dez. 2016
Kommentiert: summyia qamar
am 15 Dez. 2016
a=[2 2.8];b=[2.8 3];c=[2.5 3];d=[2 2.8];e=[2.5 3];f=[2.8,3];g=[2.5 3];
m=[];
for z=a;
for y=b;
for x=c;
for w=d;
for v=e;
for u=f;
for t=g;
f=48*z+33*y+10*x+37*w+30*v+45*u+64*t;
m=[m;z y x w v u t f]
end
end
end
end
end
end
end
the 5th iteration shown is result is
m =
2 2.8 2.5 2 2.5 2.8 2.5 648.4
2 2.8 2.5 2 2.5 2.8 3 680.4
2 2.8 2.5 2 2.5 3 2.5 657.4
2 2.8 2.5 2 2.5 3 3 689.4
2 2.8 2.5 2 3 689.4 2.5 31560
and so on the values of 6th colume are changed while I have given the values f=[2.8 3]..why it is selecting 689.4 in next iteration?
4 Kommentare
José-Luis
am 15 Dez. 2016
Please look at my answer that does what you want, in a simpler way.
Please accept the answer that best solves your problem.
Akzeptierte Antwort
José-Luis
am 15 Dez. 2016
Bearbeitet: José-Luis
am 15 Dez. 2016
Is this what you are trying to do?
a=[2 2.8];
b=[2.8 3];
c=[2.5 3];
d=[2 2.8];
e=[2.5 3];
f=[2.8,3];
g=[2.5 3];
[A,B,C,D,E,F,G] = ndgrid(a,b,c,d,e,f,g);
result = [A(:),B(:),C(:),D(:),E(:),F(:),G(:)];
temp_var = (48 .* A) + (33 .* B) + (10 .* C) + (37 .* D) + (30 .* E) + (45 .*F) + (64 .* G);
result = [result, temp_var(:)];
Weitere Antworten (1)
Adam
am 15 Dez. 2016
Why would you ever choose to do this in 7 nested for loops?!
You could do this far quicker just using the original a, b, c etc rather than z, y, x in a loop.
What is the final result you are trying to achieve?
As far as your bug goes though you are reassigning f in your loop which is also used as one of your original variables. Rename this and it will probably do what you want.
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!