How do I calculate monthly mean of a 3-D matrix?
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Levente Samu
el 12 de Sept. de 2020
Comentada: Ronald
el 8 de Abr. de 2024
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 comentarios
Respuesta aceptada
jonas
el 12 de Sept. de 2020
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
3 comentarios
Ronald
el 8 de Abr. de 2024
Thanks Jonas for your answer. It solves my querry for 3D timeseries temporal reshaping. I will link it as an answer to my question too.
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!