value of variable is changed in iteration
2 views (last 30 days)
Show older comments
summyia qamar
on 15 Dec 2016
Commented: summyia qamar
on 15 Dec 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 Comments
José-Luis
on 15 Dec 2016
Please look at my answer that does what you want, in a simpler way.
Please accept the answer that best solves your problem.
Accepted Answer
José-Luis
on 15 Dec 2016
Edited: José-Luis
on 15 Dec 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(:)];
More Answers (1)
Adam
on 15 Dec 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.
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!