MATLAB Answers

How do I calculate monthly mean of a 3-D matrix?

6 ビュー (過去 30 日間)
Levente Samu
Levente Samu 2020 年 9 月 12 日
コメント済み: jonas 2020 年 9 月 13 日
Hello all,
I have a 111x151x14243 matrix (lat, lon, time), called cmprecip, containing daily total precipitation data and I have a 14243x1 datetime array, called cmtime, in 'dd.MM:yyyy' format. I would like to calculate monthly mean from the daily data. So the output would be a 111x151x468 matrix. As a rookie in Matlab, my initial thought was to concatenate the matrix and the array and then use 'retime' just as I did before with 2-D arrays, but I was not able to make it work.
Is there a way to solve this issue? Thank you guys for your help in advance!
Levente

  0 件のコメント

サインインしてコメントする。

採用された回答

jonas
jonas 2020 年 9 月 12 日
Using retime is one option, you would just have to shape your array into a timetable first, which is a bit of a hassle.
I think this should work as well
%some data
A = 1:10000;
A = reshape(A,10,10,100);
t = (linspace(datetime(2000,1,1),datetime(2005,1,1),100))';
%find unique month ids
[U,~,G] = unique([year(t),month(t)],'rows');
%preallocate output variable
out = nan(size(A,1),size(A,2),size(U,1));
%loop over months
for i = 1:size(U,1)
f = A(:,:,G==i);
out(:,:,i) = mean(f,3);
end

  2 件のコメント

Levente Samu
Levente Samu 2020 年 9 月 13 日
Thank you Jonas so much! It worked perfectly.
jonas
jonas 2020 年 9 月 13 日
My pleasure!

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by