我是matlab的新手,我已经搜索了很多不同的网站,但我找不到解决方案(至少是一个可以理解的解决方案)。
我有一个矩阵290x233,其双值范围从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中有一大堆峰值(见下图)。这意味着它向我显示了bin范围内每个单值的出现。
然后我发现了“堆叠”选项并使用
bins=[0.25:0.5:4.75];
n2=histc(a_dif_1, bins);
bar(bins,n2,0.8,'stacked','b');
这样我至少得到了一个大棒,只显示1个箱内出现的TOTAL总数(因此下面显示了10个矩形条)。
现在我想知道这是否是绘制条形图的正确方法,只显示条形图中的总值?除此之外,我注意到我的酒吧我有点偏离垃圾箱的中心(右边的条纹在两个x-ticks的中间不是正确的) - 我是否把垃圾箱搞砸了? / p>
作为一种奖励,我最终想在条形图上画一条曲线。曲线应该以非常概括的方式显示我之前描述的峰值,因此我可以提供有关数据分布的更详细信息。
感谢各种帮助或想法!
非常感谢您的提示。我将histc
更改为hist
bins=[0.25:0.5:4.75];
hist(a_dif_1(:), bins)
...... Matlab正在给我我想要的东西:
答案 0 :(得分:1)
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)
对你好吗?