Avg over a 3d array?

Hi there!
So I have monthly gridded datasets in lat/lon/time(monthly): Example:
>> whos KoppenD_airT
Name Size Bytes Class Attributes
KoppenD_airT 360x720x361 374284800 single
>> whos KoppenDsa_airT
Name Size Bytes Class Attributes
KoppenDsa_airT 360x720x361 374284800 single
>> whos KoppenDsb_airT
Name Size Bytes Class Attributes
KoppenDsb_airT 360x720x361 374284800 single
I need to create climatologies of these regions so that I can plot monthly changes in temperature over my 30 year climate period. What is the best way to do this?
I need to aggregate my monthly data over the entire region to a single value so that I can plot all of my months.
Here's one attempt I've made that isn't working:
idx=find(Dsa);
for ii=idx
y=ind2sub(size(KoppenDsa_airT),ii);
x=squeeze(KoppenDsa_airT(y,:));
end
I get:
Index exceeds matrix dimensions.
Thanks!

 Accepted Answer

Matt J
Matt J on 12 Jul 2013
Edited: Matt J on 12 Jul 2013
aggregate my monthly data over the entire region to a single value
Does "aggregate" mean average? If so, this might be what you want,
mean(reshape(KoppenDsa_airT,[],361),1);

4 Comments

Kate
Kate on 12 Jul 2013
Wait, question: Now my values are ranging between -1 and 1. Is the above code referencing the 1 dimension of the array instead of the 3rd?
Matt J
Matt J on 12 Jul 2013
It should be averaging over each KoppenDsa_airT(:,:,i)
Kate
Kate on 12 Jul 2013
I realized my problem, I have a mask on my data so that non Koppen Dsa's are zero, I need to turn those into NaN's, thanks again for your help!
Matt J
Matt J on 12 Jul 2013
If you turn them into NaNs, you would probably have to use nanmean()

Sign in to comment.

More Answers (0)

Asked:

on 12 Jul 2013

Community Treasure Hunt

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

Start Hunting!