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.

采纳的回答

Image Analyst
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
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
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

类别

Help CenterFile Exchange 中查找有关 Data Distribution Plots 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by