How to make variables in a while loop be an array

Could anybody help me with this please? I am trying to work out a optimisation problem. I am using a while loop. I am able to obtain results in an array e.g. result(n).however, I am not able to make variable "n" as an array,hence, the value that I can access is always the last n value appeared. I would like to know how to make the variables into an array form that I can access the optimal result,aslo the corresponding variable "n" value.

3 Comments

The question is vague. Can you provide a simple example?
Thank you very much for your response Mr Jiang. However, I may have not explained my problem properly. As the "n" shown should be the variables,hence please have a look the loop written and hoping make it more clear,
idx = 0;
while ....
result(n) = ....
n = n + 1; %!
all_n(idx) = n; %! ???????????????
end
Which as the "result" will be in an array, I can use "max" function to obtain the optimal result,however, I can not obtain a corresponding "n" value,for instance, if the results look at [result(n)]= 1 4 6 8 3, and n is always showning as n=1, n= 2,n=3,n=4,n=5. however,the optimal result appeared as the fourth term,which the corresponding n value should be n=4. I hope I have explained my problem clearly. please help me with this problem. Many thanks.
Sorry, the initial value should be n=0 before the while loop.

Sign in to comment.

 Accepted Answer

idx = 0;
while ....
n = ....
result(n) = ....
idx = idx + 1; %!
all_n(idx) = n; %!
end
Then later you can (for example)
for K = 1 : idx
this_n = all_n(idx);
disp(result(this_n))
end

4 Comments

Thank you very much for your response Mr Roberson. However, I may have not explained my problem properly. As the "n" shown should be the variables,hence please let me borrow your loop written and hoping make it more clear,
idx = 0;
while ....
result(n) = ....
n = n + 1; %!
all_n(idx) = n; %! ???????????????
end
Which as the "result" will be in an array, I can use "max" function to obtain the optimal result,however, I can not obtain a corresponding "n" value,for instance, if the results look at [result(n)]= 1 4 6 8 3, and n is always showning as n=1, n= 2,n=3,n=4,n=5. however,the optimal result appeared as the fourth term,which the corresponding n value should be n=4. I hope I have explained my problem clearly. please help me with this problem. Many thanks.
Sorry, the initial value should be n=0 before the while loop.
[maxvalue, maxidx] = max(result);
Then the index of the maximum value is maxidx
This does not require that the n be recorded.
Thanks a million Mr Roberson. I think I got the answer. I really appreciate your help.

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!