Collect conditional matrices from a loop in a 2D or cell array

조회 수: 2 (최근 30일)
dirk-jAn
dirk-jAn 2012년 9월 6일
For a project, I need to draw millions of random 3x3 matrices, take the QR composition of them, transpose the Q matrix and multiply it with a given matrix. Of the resulting matrices (C), I need to store all these matrices that fulfill certain conditions (BB) to do statistical analysis with them (I prefer do that with Excel, so I would export the total array to excel).
My question is how to store these BB matrices from a loop without the last one overwriting the previous one. So far, I have:
B =[...
7.797562562, -0.832787948, -1.725054903;...
2.11093262, 3.138528042, -0.326926679;...
2.128339023, -0.061787665, 6.644309749];
for k = 1 : 50;
rd=rand(3);
[Q,R]=qr(rd);
D=Q';
C=B*D;
if C(1,1)>0 && C(2,2)>0 && C(3,3)>0 && C(3,1)<0 && C(3,2)>0,
BB=C;
end
end
Resulting is a collection (less than the amount of loops) of BB matrices, which I want to export. However, where I save them (save test.mat BB), the last BB matrix overwrites the other one and when I use subscripts to define the loop number, I get this error:
??? In an assignment A(I) = B, the number of elements in B and
I must be the same.
Anybody that can help me? I guess it shouldn´t be too difficult, so any answer could help me out!

채택된 답변

José-Luis
José-Luis 2012년 9월 6일
편집: José-Luis 2012년 9월 6일
Sounds like you need a cell array
B =[...
7.797562562, -0.832787948, -1.725054903;...
2.11093262, 3.138528042, -0.326926679;...
2.128339023, -0.061787665, 6.644309749];
numSim = 50;
results = cell(numSim,1);
counter = 1;
for k = 1 : numSim;
rd=rand(3);
[Q,R]=qr(rd);
D=Q';
C=B*D;
if C(1,1)>0 && C(2,2)>0 && C(3,3)>0 && C(3,1)<0 && C(3,2)>0,
results(counter) = {C};
counter = counter + 1;
%BB=C; No longer needed
end
end
results(counter + 1 : end) = [];
%All your results will be in the cell array
And if you need to extract a particular result
BB = results{ii};
Note that you could also save inside the loop, but since C is small, it is probably better this way.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by