How to output a variable from a loop as a large array
조회 수: 1 (최근 30일)
이전 댓글 표시
I'm hoping to output the variable 'fluxset' from a loop into an array which would store all the outputs into one large array.
I have tried a fluxset(month)=... array storage method to no luck, I also tried outputting the variable as a series of .mat files using the sprintf function to name the files however the variable names were all the same and I could not fix this issue due to a supposed 'dynamic variable naming' issue.
My code is approx. in the form:
for year=[1993:2007]
for month=[1:12]
...
fluxset=[fluxa;fluxb;fluxc]
end
end
I hope to either store an all loop outputs array or alternatively a year by year output array.
If anyone could help, I would be greatly appreciative.
댓글 수: 5
Conrad
2012년 7월 12일
Could try:
years = 1993:2007;
months = 1:12;
fluxset = zeros(numel(years),numel(months),3);
for year = years
for month = months
fluxset(year-years(1)+1,month-months(1)+1,:) = [1 1 1]';
end
end
Note that I used dummy values [1 1 1]' in place of [fluxa;fluxb;fluxc].
Conrad
채택된 답변
Michelle
2012년 7월 12일
If I understand you right - I THINK you want the information from each loop to be added on to the array right? If so, this could work but creating a different variable - one that gets recomputed with each loop, adn then the "master" variable that gets the recomputed varible added on to it with each loop:
fluxset = [];
for year=[1993:2007]
for month=[1:12]
fluxset0=...%Computations here;
fluxset = [fluxset; fluxset0];
end
추가 답변 (1개)
Jan
2012년 7월 12일
And with the important pre-allocation:
n = (2007 - 1993 + 1) * 12;
fluxset = zeros(n, 3); % Pre-allocate!
index = 0;
for year = 1993:2007
for month=[1:12]
...
index = index + 1;
fluxset(index, :) = [fluxa, fluxb, fluxc];
end
end
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!