限制MATLAB直方图中显示的数据值

时间:2012-02-03 03:20:22

标签: matlab histogram

我有一个矢量,我想要打印数据的直方图。此数据范围为-100到+100。外边缘周围的数据量微不足道,因此我不想看到它。我最感兴趣的是显示从-20到+20的数据。

1.。)如何限制该窗口在我的直方图上打印?

我拥有的数据量是数据集中任何位置的数据量的0以上,至少为10:1。当我打印直方图时,元素频率的布局会丢失,因为它的数量超过了0.

2。)有没有办法可以将0值的数量缩放为-1个条目数的三倍?

我期待这个数据集的指数下降(一般情况下),因此频率为-1的三倍很容易让我看到其他数据的频率。

4 个答案:

答案 0 :(得分:2)

您可以使用类似

的内容
binCenters = -20:5:20;
[N,X] = hist(V,binCenters);

N = N./scalingVector;
bar(X(2:end-1),N(2:end-1));

请注意,代码会从条形图中排除NX的极值,因为它们包含小于-20且大于20的值的数量。此外,通过构建{{1适当地,您可以根据需要缩放N.

答案 1 :(得分:2)

您还可以使用

删除[-20,20]范围之外的任何值
subsetData=data(abs(data)<=20)

答案 2 :(得分:1)

1)您可以通过设置X轴限制来限制在绘图上看到的直方图范围:

xlim([-20 20])

在hist命令中设置bin是好的,但请记住,bin之外的所有值都将落入最左边和右边的bin中。因此,无论如何都需要设置轴限制。

2)如果不同箱中的值之间存在很大差异,一种方法是将Y轴上的值转换为对数刻度。不幸的是,仅将Y轴设置为log(set(gca,'YScale','log'))对条形图不起作用。使用histhistc计算直方图(取决于您是否要指定箱中心或边)并将值log2计算:

[y, xbin] = hist(data);
bar(xbin, log2(y) ,'hist')

答案 3 :(得分:0)

直方图有几种不同的调用方法。我强烈建议您阅读有关函数(doc hist

的文档

您正在寻找的是在直方图箱中放入自定义范围。这取决于你想要多少个垃圾箱,但是这样的东西会起作用。

Data=randn(1000,1)*20;
hist(Data,-20:20);

如果您愿意,也可以更改分箱的频率。您也可以使用x轴([ - 20 20])命令更改轴,使您只关注-20到20的范围。您还可以通过使用yaxis并限制值以排除0 bin来忽略0处的bin。如果不知道你想要什么,我只能给你建议。