For Loop and final output matrix
Afficher commentaires plus anciens
Hello Matlab Wizards, I hope everyone is doing wonderful. I have written a code that has an outside loop that consists of basically increasing the values of all variables in one of the input matrices within the second column incrementally from 0:750. The end product is a matrix that is computed based on some other matrices. What I would like help with is; I need to get some intermediate matrices out everytime an iteration takes place( i.e., if the loop goes 10 times, I need to save a particular intermediate matrix ten times) because I have to verify something. This is an example of my code:
function [CrUnit,AgrCarbonSimuN1,CR9,AgrCarbonSimuN2,AgrCarbonSimuN3,MN, MSA1,...
MSA2, MSA3] = CarbonProject(X, Lam,Y,UnitArea,ALLC3P,n,m)
%Carbon Storage convereted by Spatial Unit by period ( Period 1 through 3)
Xv=X
for k=0:750;
X(:,2)=X(:,2)+k;
[Mtest,MN, MN1, MN2, MN3, Mtest1, Mtest2] = Predict_all( X,Lam,Y)
[MS1, MS2,MS3,MSA1,MSA2, MSA3, MSA ] = MatrixCountnew(Mtest1,Mtest2,...
MN1, MN2, MN3,Y,UnitArea,n)
[CS,CS3030,CSLS,SUMCSLS,CrUnit] = CarbonPixels( ALLC3P,MSA,UnitArea,m );
for j=1:44040 ;
CR9(j,1)=CrUnit(:,:,j);
end
Period1Carbon= CR9(1:14680);
Period2Carbon= CR9(14681:29360);
Period3Carbon= CR9(29361:44040);
for cr7=1:14680;
[AgrCarbon1(cr7,:)]=[Period1Carbon(cr7,:)];
[AgrCarbon2(cr7,:)]=[Period2Carbon(cr7,:)];
[AgrCarbon3(cr7,:)]=[Period3Carbon(cr7,:)];
end
AgrCarbonSimuN1(1:14680,k+1)=AgrCarbon1;
AgrCarbonSimuN2(1:14680,k+1)=AgrCarbon2;
AgrCarbonSimuN3(1:14680,k+1)=AgrCarbon3;
X=Xv;
end
So basically, by the end of each iteation(i=0:750) I would like to have these matrices: MN1, and MSA1 not just when all the loop is done 750 times. I hope I made some sense.
4 commentaires
Amine Ben Ayara
le 4 Oct 2016
dpb
le 4 Oct 2016
That's because you didn't use the {}Code button and TMW in their infinite wisdom still thinks a word-wrapping textbox is the appropriate form for a code forum... :(
HINT: IFF you know the trick, it's easy to get code formatted--simply enter two blank spaces in front of the first line of code, preceding the code section with a blank line.
dpb
le 4 Oct 2016
What's the dimension of the two arrays of interest now?
Andrei Bobrov
le 5 Oct 2016
CrUnit - array with size: (1 x 1 x 44040)?
Réponses (2)
Benjaminas Marcinkevicius
le 5 Oct 2016
Example how i usually do it, a big ugly, but works if understood your problem correctly. you end up with cell array filled with your desired matrix.
%code
a = cell(20,1); % create cell array
for j=1:20
if (mod(j,10) == 0) % condition how often do you want to dump your matrix
a{j,1}= [1 1 1 1 1];
end
end
a = a(~cellfun('isempty',a)) % clear empty cell arrays
1 commentaire
Amine Ben Ayara
le 5 Oct 2016
Modifié(e) : Andrei Bobrov
le 5 Oct 2016
Andrei Bobrov
le 5 Oct 2016
Modifié(e) : Andrei Bobrov
le 5 Oct 2016
Variant:
function [CrU,AgrCarbonSimu,MN,MN1,MSA1, MSA2, MSA3]...
= CarbonProject(X, Lam,Y,UnitArea,ALLC3P,n,m)
%Carbon Storage convereted by Spatial Unit by period ( Period 1 through 3)
AgrCarbonSimu = zeros(14680,751,3);
xx = bsxfun(@plus,X(:,2),0:750);
MN = cell(751,1);
MN1 = cell(751,1);
MSA1 = cell(751,1);
MSA2 = cell(751,1);
MSA3 = cell(751,1);
CrU = zeros(14680,751);
for k = 1:751;
[Mtest,MN{k}, MN1{k}, MN2, MN3, Mtest1, Mtest2] = Predict_all(xx(:,k),Lam,Y)
[MS1, MS2,MS3,MSA1{k},MSA2{k}, MSA3{k}, MSA ]...
= MatrixCountnew(Mtest1,Mtest2,MN1{k}, MN2, MN3,Y,UnitArea,n);
[CS,CS3030,CSLS,SUMCSLS,CrU(:,k)] = CarbonPixels( ALLC3P,MSA,UnitArea,m );
AgrCarbonSimu(:,k+1,:) = reshape(CrU(:,k),[],3);
end
1 commentaire
Amine Ben Ayara
le 5 Oct 2016
Modifié(e) : Andrei Bobrov
le 5 Oct 2016
Catégories
En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!