Binning data into equally spaced intervals
3 views (last 30 days)
Show older comments
Hi, I have a large matrix and I'm attempting to bin the data in intervals of 5.
For example, I want all the numbers (most are non integres, ex. 1.2) between 0 to 5 in one bin, then 5 to 10 in another, etc. until I get to 2000 (so 400 bins in total). Also, for each bin, I'd like to find the median or average value, and create a vector with these values.
Any help would be greatly appreciated!
0 Comments
Accepted Answer
Star Strider
on 20 Jul 2021
One approach —
v = rand(1,1000)*2000;
edges = 0:5:2000;
[counts,edg,bin] = histcounts(v, edges); % Bin Counts
Meanv = accumarray(bin(:),v(:),[],@mean); % Mean Values OF Each Bin
ctrs = edges(1:end-1)+mean(diff(edges)/2); % Bin Centres
figure
subplot(2,1,1)
bar(ctrs, counts)
title('Histogram')
subplot(2,1,2)
scatter(ctrs, Meanv,'.')
title('Mean Values Of Each Bin')
xlabel('Bin')
.
0 Comments
More Answers (0)
See Also
Categories
Find more on Annotations 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!