Calculate mean from daily to monthly values
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
minh lan
am 16 Mai 2019
Beantwortet: ABHILASH SINGH
am 13 Mär. 2020
I have I have a data containing daily pricipitation data from 2001 to 2010, each year I have 1 file
lon=ncread(ncfile,'lon');
lat=ncread(ncfile,'lat');
precip=ncread(ncfile,'precip');
precip 360 x 280 x 365
lat 280x1
lon 360x1
I want to calculate the monthly mean for each year and then calculate average for 10 years.
the slow way I can do like that:
JAN{K}=nansum(precip{K}(:,:,1:31),3); %K is number of year
FEB{K}=nansum(precip{K}(:,:,32:59),3);
JAN=cat(3,JAN{:});
JAN=mean(JAN,3);
but for 2004, 2008 we have 366 day and this way is not very good to calculate
How can I do that with loop?
Thanks
0 Kommentare
Akzeptierte Antwort
convert_to_metric
am 16 Mai 2019
Hi minh lan,
You can consider making use of the month funciton. Take a look at the following code, perhaps it will lead you to a solution.
data=[1:365]*10; % just some example data
length_of_precip_data=length(data); % you might need to use the size function in place of length depending on how your data is organized
year=2010; % for example
start=datetime(year,1,1);
m=month(start+caldays(1:length_of_precip_data)-1); % now you have an array the same size as your data that indicates which month an element is in
% so if you want to find just values from february:
data(m==2) % february is the second month, ie m==2
0 Kommentare
Weitere Antworten (2)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!