How to take an average every four columns?

1 view (last 30 days)
Hi, I have seen similar questions but I am getting stuck altering the code for what I want. I have a matrix of (64 x 18144), each row is a met station and each column is a 15 minute data measurement - I want to convert this to hourly data for each station - so I want to have an output matrix of (64 x 4536). I have seen some solutions but I don't have the 'tools' they require. Any help/ideas would be very much appreciated! :)

Accepted Answer

James Tursa
James Tursa on 13 Feb 2018
x = your 64x1844 matrix
result = reshape(mean(reshape(x.',4,[])),size(x,2)/4,[]).';

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 13 Feb 2018
Edited: Andrei Bobrov on 13 Feb 2018
A - your matrix (64 x 18144)
B = A.';
[m,n] = size(B);
t = minutes((0:m)'*15);
Tb = array2timetable(B,'RowTimes',t);
Tout = retime(Tb,'hourly','mean');
out = Tout{:,:}';

Categories

Find more on Creating and Concatenating Matrices 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!