Sum the daily data based on month and year

6 Ansichten (letzte 30 Tage)
Ryn
Ryn am 29 Apr. 2019
Beantwortet: ABHILASH SINGH am 13 Mär. 2020
I have a three dimensional matrix of gridded data (16x18x7669) where 16 is the latitudes, 18 the longitudes and 7669 is the daily data from 1/1/1998 to 31/12/2018. I would like to get the monthly and yearly totals for each grid. I am a newbie in Matlab and I will appreciate suggestions on how to go about it. Thank you in advance

Akzeptierte Antwort

Stephane Dauvillier
Stephane Dauvillier am 29 Apr. 2019
Bearbeitet: Stephane Dauvillier am 29 Apr. 2019
Lets assume your 3D variable is called data
Frist get the group id : which width of data correspond to the same month of the same year:
time=datetime(1998,1,1):datetime(2018,12,31);
grp = findgroups(year(time),month(time));
Then cget the unique list of group
uniqueGr = unique(grp);
Initialize the result and loop on unique groupe element
result = zeros(size(data,1),size(data,2),numel(uniqueGr)) ;
for iGroup = 1:numel(uniqueGr)
Compute the sum on the 3rd dimension but only for the data which corresponding date to the current group
result(:,:,iGroup) = sum(data(:,:,grp==uniqueGr(iGroup)),3);
end
Note there is the function splitapply that makes this easier if you have 2D array
  3 Kommentare
Stephane Dauvillier
Stephane Dauvillier am 30 Apr. 2019
What do you mean by "unrealistic values" ?
You ask to sum the whatever data you have for each year.
Let's just take a tiny example
years = [1990,1990,1991];
data(:,:,1) = [1,2;3,4;5,6] ;
data(:,:,2) = [7,8;9,10;11,12];
data(:,:,3) = [13,14;15,16;17,18];
Then you will have as a result
for year 1990
result(:,:,1) = data(:,:,1) + data(:,:,2) = [8,10;12,14;16,18]
and for year 1991
result(:,:,2) = data(:,:,3) = [13,14;15,16;17,18];
Ryn
Ryn am 2 Mai 2019
Thank you Stephane

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

ABHILASH SINGH
ABHILASH SINGH am 13 Mär. 2020

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by