Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

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

조회 수: 2 (최근 30일)
Matlab111
Matlab111 2014년 11월 24일
마감: MATLAB Answer Bot 2021년 8월 20일
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
Stephen23
Stephen23 2014년 11월 25일
+1 for starting the code with array-preallocation.

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