Creating a monthly average from a matrix
2 ビュー (過去 30 日間)
古いコメントを表示
My data, which has 30 years of monthly data, over a 2 degree grid of the globe:
>> whos KoppenA_prate
Name Size Bytes Class Attributes
KoppenA_prate 90x180x360 23328000 single
Not every pixel has data, just the pixels that fit into Koppen classification A
>> sum(A(:))
ans =
559
My question: Any ideas on how I could write a loop to create an average monthly value over the 30 years?
Thanks a bunch!
5 件のコメント
採用された回答
Cedric
2013 年 8 月 21 日
編集済み: Cedric
2013 年 8 月 21 日
Just
avgAllYears = mean(KoppenA_prate, 3) ;
where 3 is the dimension along which the mean must be computed. With that you get a 90x180 array of means over all times.
EDIT:
siz = size(KoppenA_prate) ;
avg = zeros(siz(1), siz(2), 12) ;
for mId = 1 : 12
avg(:,:,mId) = mean(KoppenA_prate(:,:,mId:12:end), 3) ;
end
EDIT2: or, more efficient but more complicated
siz = size(KoppenA_prate) ;
buf = mean(reshape(KoppenA_prate, siz(1), 12*siz(2), []), 3) ;
avg = reshape(buf, siz(1), siz(2), []) ;
Note: both produce a 90x180x12 array of monthly averages, were e.g. avg(:,:,5) is the average of 5th months over all years.
4 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Time Series Events についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!