Grouping Data Into Smaller "Bins"

6 views (last 30 days)
Nikitas Provatakis
Nikitas Provatakis on 12 Dec 2018
Edited: Jan on 12 Dec 2018
Hi everyone,
I have a matrix G containing a number of data points (say 5000 for the sake of this example). I would like to create a new matrix, K consisting of only 50 elements, so that every element is the average of the corresponding 100 elements in matrix G.
For example the third element of K should be the mean of elements 100 to 150 of G.
Any way to quickly do that?

Accepted Answer

Jan
Jan on 12 Dec 2018
Edited: Jan on 12 Dec 2018
G = rand(5000, 3); % "data points" is not clear
N = 100;
siz = size(G);
GG = reshape(G, [N, siz(1)/N, siz(2)]);
R = reshape(sum(GG, 1) / N, siz(1)/N, siz(2));
If the length of the first dimension is not a multiple of N, you might want to crop the input at first.
R = BlockMean(G, N, 1) / N;

More Answers (0)

Categories

Find more on Resizing and Reshaping 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!