How I can perform a loop in order to calculate multiple means in a matrix based on multiple values?

2 views (last 30 days)
Hello Matlab community! I am learning how to perform loops!
I am working with multiple years of meteorological information, and I would like to perform a loop in order to compute the mean by each hour of record, and after that concatenate every result in a single matrix. I have to say that the records are at hour 0, 3, 6, 9, 12, 15, 18 and 21.
I have been working in the next code, but without results:
m3=zeros(8,100);
interval=0:3:21; %these are the hours which the mean would be calculated
for i=1:8
XMINHOUR(i)=XMIN(find(XMIN(:,1) == interval(i)),:);
D_0(i)=XMINHOUR;
m3=mean(D_0);
end
I have attached to the present message the data (variable XMIN)
Thanks in advance for your support!
Miguel
I wanted to ask you

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 8 Nov 2017
Edited: Andrei Bobrov on 8 Nov 2017
>> [g,v] = findgroups(XMIN(:,1));
>> out = splitapply(@mean,XMIN,g);
or
[ii,jj] = ndgrid(findgroups(XMIN(:,1)),1:size(XMIN,2));
out = accumarray([ii(:),jj(:)],XMIN(:),[],@mean);
  2 Comments
Miguel L
Miguel L on 8 Nov 2017
Hello Andrei!
I really appreciate your help! But I wanna ask you if there is an equivalent of "findgroups" or "splitapply" commands for MATLAB 2011 (my current version).
Best,
Miguel

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!