How to output a variable from a loop as a large array
Show older comments
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 Comments
per isakson
on 12 Jul 2012
save( sprintf( 'my_flux_%4u.mat', year ), 'fluxset' )
Josh
on 12 Jul 2012
Conrad
on 12 Jul 2012
What is the dimensions of [fluxa;fluxb;fluxc]?
Conrad
Josh
on 12 Jul 2012
Conrad
on 12 Jul 2012
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
Accepted Answer
More Answers (1)
Jan
on 12 Jul 2012
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
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!