Matlab随机扩散数据的直方图

时间:2012-11-09 12:11:50

标签: matlab histogram curve

我是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范围内每个单值的出现。

enter image description here

然后我发现了“堆叠”选项并使用

bins=[0.25:0.5:4.75];
n2=histc(a_dif_1, bins);
bar(bins,n2,0.8,'stacked','b');

这样我至少得到了一个大棒,只显示1个箱内出现的TOTAL总数(因此下面显示了10个矩形条)。

enter image description here

现在我想知道这是否是绘制条形图的正确方法,只显示条形图中的总值?除此之外,我注意到我的酒吧我有点偏离垃圾箱的中心(右边的条纹在两个x-ticks的中间不是正确的) - 我是否把垃圾箱搞砸了? / p>

作为一种奖励,我最终想在条形图上画一条曲线。曲线应该以非常概括的方式显示我之前描述的峰值,因此我可以提供有关数据分布的更详细信息。

感谢各种帮助或想法!

更新

非常感谢您的提示。我将histc更改为hist

bins=[0.25:0.5:4.75]; 
hist(a_dif_1(:), bins)

...... Matlab正在给我我想要的东西:

enter image description here

1 个答案:

答案 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)

对你好吗?

enter image description here