vector discretization to sum of values in each bin

6 ビュー (過去 30 日間)
Amit Ifrach
Amit Ifrach 2021 年 10 月 4 日
コメント済み: Matt J 2021 年 10 月 4 日
לק"י
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
Matt J 2021 年 10 月 4 日
編集済み: Matt J 2021 年 10 月 4 日
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 件のコメント
Amit Ifrach
Amit Ifrach 2021 年 10 月 4 日
לק"י
thank you very much!!
Matt J
Matt J 2021 年 10 月 4 日
You're welcome, but please Accept-click the answer to certify that it resolved your question.

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by