How to bin struct fields based on value in another field?

4 ビュー (過去 30 日間)
Nicholas Kavouris
Nicholas Kavouris 2023 年 1 月 22 日
回答済み: Walter Roberson 2023 年 1 月 22 日
I have a structure with multiple fields. I would like to plot a histogram of values of data in one field based on conditions in another field of each row of the struct. How would i do this?
EX:
test(1).initial=13
test(1).final=43
test(2).initial=8
test(2).final=58
test(3).initial=[26,14]
test(3).final=52
i would like to bin test.final so rows with corresponding test.initial(1) values 0-10, 11-20, 20-35 are grouped together
  3 件のコメント
Nicholas Kavouris
Nicholas Kavouris 2023 年 1 月 22 日
i added this in as the struct i am working with has a variable number of indices in each row in the column id like to sort by

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

回答 (1 件)

Walter Roberson
Walter Roberson 2023 年 1 月 22 日
initials = arrayfun(@(S) S.initial(1), test);
finals = [test.final].'; %assuming only one value per entry
bins = discretize(initials, [0 11 21 35]);
splitapply(@histogram, finals, bins);
legend({'[0-11)', '[11-21)', '[21-35]'});
Your bin list included 20 twice, and does not include the range between 10 and 11 (exclusive), so I had to guess what you wanted.

Community Treasure Hunt

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

Start Hunting!

Translated by