Info

此问题已关闭。 请重新打开它进行编辑或回答。

How to store a data by getting from for loop in matlab ?

1 次查看(过去 30 天)
For example i'm getting value like this
a=[192.1225 60.2626 0.9993 100.3275];
for 'n' number of iteration, which means i will get so many values like
a=[192.1225 60.2626 0.9993 100.3275];
a=[20.1225 66.2626 1.0 10.8775];
a=[2.0925 64.2626 1.0 110.5475]; .....
it will continues like this and it will stop based on the 'for loop'
and now i want to store all the 'a' values in 'b' like this
b=[192.1225 60.2626 0.9993 100.3275
20.1225 66.2626 1.0 10.8775
2.0925 64.2626 1.0 110.5475];
and again the same value should display like this
p=[192.1225 60.2626 0.9993 100.3275];
q=[20.1225 66.2626 1.0 10.8775];
r=[2.0925 64.2626 1.0 110.5475]; .....

回答(2 个)

Adam
Adam 2014-11-24
If you know how many columns a is going to have and how many rows your final result will have (presumably you do if it is in a for loop) then you don't need the intermediate 'a' result at all.
Just pre-declare b as e.g
b = zeros( n, 4 );
for i = 1:n
b( i, : ) = yourCalculation();
end
where n is obviously however many rows you intends to have.
  9 个评论
Adam
Adam 2014-11-25
Your
b( i, : ) = CH;
instruction appears to be in an inner loop defined by k and an outer loop defined by i. So you will lose all the results except the last one from your inner k-controlled loop and only store the last result for each iteration of the outer loop.
I would strongly advise factoring your code out into functions though to make it more readable as one huge file with loads of nested for loops and instructions is hard to understand

Orion
Orion 2014-11-24
编辑:Orion 2014-11-24
it's basic concatenation
b=[];
for i=1:n
% some calculation
a = % your new row vector
b=[b;a];
end
then you get a matrix b, and you just have to rerieve the line that interests you.
l = b(2,:);
...
  6 个评论
Orion
Orion 2014-11-24
编辑:Orion 2014-11-24
In your code, you put
b=[];
for i=1:n
% some calculation
a = CH;
b=[b;a];
b
end
You are concatenating n times a with himself in b. it's useless.
You need to add a new row in b, only if there is a new calculation.
See the 2 modif I made in attached file (search %# Modification).
b is initialized at the beginning, and increases only where a new CH is calculated.
I don't know if this is the result you want. bu this is the methid you need to do.
You just might change the condition for the concatenation (or the location in the code), but this only depends on what you want to do.
Matlab111
Matlab111 2014-11-24
ya. but sir, you just run the code once again and type capital 'X' in command window and similarly Capital 'Y' after executing that you will get the position on 'Cluster head (CH)' so at final i want only those values with energy and distance.
For example
CH=[164.9445 90.7746 0.9996 65.5964]
in this first two values represents 'X' and 'Y' and remaining are energy and distance.

Community Treasure Hunt

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

Start Hunting!

Translated by