HIST与在Matlab

问题描述:

一个值当您使用HIST函数是这样的:HIST与在Matlab

[h x] = hist(data, 1000) 

工作得很好,只要数据比一个length(data) > 1更长。

但如果是= 1那么它会做到这一点:

enter image description here

在数据传播自己在-500〜500有没有办法来阻止它这样做呢?

+1

不知道如果我得到这个问题的权利,但无论如何... XLIM([XMIN XMAX])? – zamazalotta 2013-02-27 03:04:18

+1

如果数据中有一个值,那么其直方图中只有一个峰值...这是您的问题吗? – 2013-02-27 03:22:55

+0

嗯,我希望垃圾箱能够在同一个地方发生,而不是在一个巨大的区域蔓延,因为它破坏了我的地块。有没有办法阻止这一点,我可以通过检查每个直方图之前的长度来做到这一点,但这样做有点麻烦。 – 2013-02-27 03:37:09

,您使用的功能(hist(data,1000))的形式,意味着1000个箱是并且MATLAB默认以1的宽度设置大小,因为它没有关于数据范围的信息(单个值没有有意义的范围)。这里是一个从documentation blurb:

n = hist(Y,nbins)其中nbins是一个标量,使用nbins的bin数。

有可能使其“更好”几个选项(加引号,是因为没有人,但你知道你想要什么):

1)你可以使用不同形式的功能,以指定仓应该是:

N = HIST(Y,X),其中x是矢量,返回之间 长度Y的分布(X)与由x指定中心箱。例如,如果x是一个5元素向量,则hist将Y的元素分布到以X中元素为中心的五个元素 中,其中没有一个元素可以是复杂的 。注意:如果更加自然地使用histc而不是中心来指定垃圾桶边缘 。

2)你可能会限制仓到数据矢量元素的数量的数量,若低于某个最小值:

hist(data, min(1000, numel(data))) 

3)你可以检查用于特殊情况(如N = 1) - 你提到这是不可取的,但是使用脚本/函数根本不是一种困难,所以你可能必须澄清为什么这是不可接受的。

4)你可以绘制(类似@ Parag的回答后适当缩放X轴)

您可以通过使用find功能或逻辑索引找到你的数据的范围,然后使用axis([xmin xmax ymin ymax])属性描述here