我是 matlab 的新手,我已经搜索了一大堆不同的网站,但我没有找到解决方案(至少是一个可以理解的解决方案)。
我有一个 290x233 的矩阵,其 double 值范围为 0.1 到 4.7。我想从这个矩阵中的所有数据中生成一个直方图,其中有 0.5 范围内的条形 -> 我希望能够看到在 0 到 0.5 之间,从 0.5 到 1 之间有多少个值等等在...
到目前为止,我设法接近绘制条形图。使用此代码:
bins=[0.25:0.5:4.75];
n2=histc(a_dif_1, bins);
bar(bins,n2,'hist');
我设法得到一个结果,每个箱子内都有一大堆峰(见下图)。这意味着它向我显示了 bin 范围内每个单个值的出现。
然后我发现了“堆叠”选项和使用
bins=[0.25:0.5:4.75];
n2=histc(a_dif_1, bins);
bar(bins,n2,0.8,'stacked','b');
通过这种方式,我至少得到了大条形图,仅显示了 1 个 bin 内出现的总次数(因此下面显示了 10 个矩形条形图)。
现在我想知道这是否是绘制条形图的正确方法,只显示一个 bin 中的值的总量?除此之外,我注意到我的条形图有点偏离垃圾箱的中心(右侧的条形图并不完全位于两个 x 刻度的中间)——我是不是把垃圾箱弄乱了??
作为奖励,我终于想在条形图的顶部画一条曲线。曲线应该以非常概括的方式显示在我之前描述的峰值之后,这样我就可以提供关于除条形之外的数据分布的更详细信息。
感谢您提供各种帮助或想法!
更新
非常感谢您的提示。我将 histc
更改为 hist
bins=[0.25:0.5:4.75];
hist(a_dif_1(:), bins)
...而 Matlab 正是我想要的:
最佳答案
a = 0.1;
b = 4.7;
r = a + (b-a).*rand(290,233);
bins=[0.25:0.5:4.75];
hist(r(:))
hist(r(:),bins)
你觉得合适吗?
关于随机分布数据的Matlab直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13307852/