4

我是 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-ticks 的中间) - 我把垃圾箱弄乱了吗?

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

感谢您的各种帮助或想法!

更新

非常感谢您的提示。我改变histchist

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

...而且 Matlab 给了我我想要的东西:

在此处输入图像描述

4

1 回答 1

0
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)

这个可以吗?

在此处输入图像描述

于 2012-11-09T14:19:21.197 回答