Histogram with counting number of "1" per bin
5 次查看(过去 30 天)
显示 更早的评论
Hi,
I have the following data: The intensity of a stimulus can be varied on a certain range, subjects have to say then for each intensity, if they can perceive the stimulus. Out of this data I would like to plot a histogram - and so far I have not found any existent Matlab function to do so (?).
So say the data would look like:
A = [100 120 80 85 130 145 160 95 105 110 115 135 150;
0 1 0 0 1 1 1 1 1 1 0 0 1]
and I would like to split up the range [80,160] into 4 bins and count the number of 1's for each bin.
0 个评论
采纳的回答
Image Analyst
2015-5-4
Try this:
A = [100 120 80 85 130 145 160 95 105 110 115 135 150];
counts = [ 0 1 0 0 1 1 1 1 1 1 0 0 1]
edges = linspace(80, 160, 5) % % 5 edges for 4 bins
myHistCounts = histcounts(A.*counts, edges)
works as long as your counts are only 0 and 1. You can have two of the same value, like 2 at 120 with a 1 as long as the 120's are separate, which I think they would be because each element is for one stimulus.
3 个评论
Image Analyst
2015-5-5
You can use plot() or bar(). I tend to prefer bar() for histograms.
bar(edges(1:end-1), myHistCounts, 'BarWidth', 1, 'FaceColor', 'b');
or something like that
更多回答(1 个)
Ahmet Cecen
2015-5-4
A trick for that would be to covert that data into this:
B=[120, 130, 145, 160, 95, 105, 110, 150];
basically keeping the only the values that has 1s below. Now you can use the hist function properly to get a histogram easily.
You can use the binranges argument to specify those bins from 80 to 160 by 20. Check:
doc hist
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Distribution Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!