Clear Filters
Clear Filters

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

2 views (last 30 days)
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?
i would like to bin so rows with corresponding test.initial(1) values 0-10, 11-20, 20-35 are grouped together
Nicholas Kavouris
Nicholas Kavouris on 22 Jan 2023
i only want to bin based on test.initial(1), any index beyond 1 is ignored
Nicholas Kavouris
Nicholas Kavouris on 22 Jan 2023
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

Sign in to comment.

Answers (1)

Walter Roberson
Walter Roberson on 22 Jan 2023
initials = arrayfun(@(S) S.initial(1), test);
finals = [].'; %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!