我是 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 的中间) - 我把垃圾箱弄乱了吗?
作为一种奖励,我最后想在条形图上画一条曲线。曲线应该以非常概括的方式显示在我之前描述的峰值之后,因此我可以提供有关除条形之外的数据分布的更详细信息。
感谢您的各种帮助或想法!
更新
非常感谢您的提示。我改变histc
了hist
bins=[0.25:0.5:4.75];
hist(a_dif_1(:), bins)
...而且 Matlab 给了我我想要的东西: