how to calculating monthly average?
    2 views (last 30 days)
  
       Show older comments
    
hi all I just want to be sure about this small monthly averaging code
 I=1;
 for i=1: length(x)/30; 
    y(i)=mean(x(I:I+29));
    L(i)=min(x(I:I+29));
    U(i)=max(x(I:I+29));
    I=I+29;
 end
where x is data matrix (365 day)
thank you
4 Comments
  Star Strider
      
      
 on 8 May 2016
				Well, some of the data, but not what we need to do what you want with it.
Without knowing the times (at least months-days-years, in some format) at which these are collected, it’s not possible to separate them by month.
Accepted Answer
  Image Analyst
      
      
 on 8 May 2016
        Try this:
dailyValues = rand(1,365);  % Sample data
daysInMonths = [31,28,31,30,31,30,31,31,30,31,30,31]
monthEnds = [0, cumsum(daysInMonths)]
for m = 1 : length(monthEnds)-1
  firstDay = monthEnds(m)+1;
  lastDay = monthEnds(m+1);
  fprintf('For month #%d, the first day = %d and the last day = %d\n',...
    m, firstDay, lastDay);
  monthlyAverage(m) = mean(dailyValues(firstDay:lastDay));
end
% Echo to command window.
monthlyAverage
Of course you need to take leap years into account, which I didn't do.
7 Comments
  Image Analyst
      
      
 on 13 May 2016
				JanuaryDailyAmounts = dailyValues(1:31);
FebruaryDailyAmounts = dailyValues(32:59);
MarchDailyAmounts = dailyValues(60:90);
and so on for months ending at rows 120 151 181 212 243 273 304 334 365.
You will then have 12 matrices.
More Answers (1)
  Steven Lord
    
      
 on 12 May 2016
        Find the month number (either directly from the file or using some of the tools associated with datetime objects then use the month numbers as the subscripts in a call to accumarray, specifying @mean as the accumulation function.
numRows = 30;
X = [randi(12, numRows, 1), randi(100, numRows, 1)] % Column 1 is month, column 2 is data
Y = accumarray(X(:, 1), X(:, 2), [], @mean)
See Also
Categories
				Find more on Dates and Time in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


