# vector discretization to sum of values in each bin

12 views (last 30 days)
Amit Ifrach on 4 Oct 2021
Commented: Matt J on 4 Oct 2021
לק"י
Hi guys, I'm looking a way to discretize vector values to bins. I want to have bins that contain the sum of values of incidents each of them contain.
example:
lets take the matlab's discretize example:
data = [1 1 2 3 6 5 8 10 4 4]
edges = 2:2:10
so, edges is:
edges = 1×5
2 4 6 8 10
Y = discretize(data,edges)
so, Y is:
Y = 1×10
NaN NaN 1 1 3 2 4 4 2 2
what I want to get is a vector that sums all the values of incidents that fall into each bin. for this example:
desiredvector=[5, 13, 6, 18]
as you can see, I have 4 bins (as specified by edges), and in each bin i got the sum of values of the incidents that fall into it.
I hope I explained it well.. thanks any way!
Amit.

Matt J on 4 Oct 2021
Edited: Matt J on 4 Oct 2021
data = [1 1 2 3 6 5 8 10 4 4];
edges = 2:2:10;
Y = discretize(data,edges);
valid=isfinite(Y);
result=accumarray(findgroups(Y(valid)).' , data(valid).').'
result = 1×4
5 13 6 18
or
result=splitapply(@sum , data(valid) , findgroups(Y(valid)) )
result = 1×4
5 13 6 18
##### 2 CommentsShowHide 1 older comment
Matt J on 4 Oct 2021