Calculate mean from daily to monthly values

8 views (last 30 days)
I have I have a data containing daily pricipitation data from 2001 to 2010, each year I have 1 file
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
but for 2004, 2008 we have 366 day and this way is not very good to calculate
How can I do that with loop?

Accepted Answer

convert_to_metric on 16 May 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
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


Community Treasure Hunt

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

Start Hunting!