在Matlab中使用单个值进行hist

时间:2013-02-27 02:58:04

标签: matlab histogram

当你使用这样的hist函数时:

[h x] = hist(data, 1000)
只要数据长于length(data) > 1

就可以正常工作。

但如果它是= 1那么它会这样做:

enter image description here

数据传播的范围超过-500到500.有没有办法阻止它这样做?

2 个答案:

答案 0 :(得分:4)

您正在使用的函数的形式(hist(data,1000))意味着生成了1000个bin,而MATLAB默认为宽度为1,因为它没有关于数据范围的信息(单个值没有有意义的范围)。这是documentation

的模糊
  

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

有一些选项可以让它“更好”(引号中,因为没有人,但你知道你想要什么):

1)您可以使用不同形式的函数来指定垃圾箱的位置:

  

n = hist(Y,x)其中x是向量,返回Y之间的分布   长度(x)中心由x指定的中心。例如,如果x是a   5元素向量,hist将Y的元素分配到五个区间   以x中的元素为中心的x轴,其中没有一个可以   复杂。注意:如果指定bin边缘更自然,请使用histc   而不是中心。

2)如果小于某个最小值,您可以将二进制数限制为数据向量中的元素数:

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

3)你可以检查特殊情况(比如N = 1) - 你提到这是不可取的,但是使用脚本/功能这根本不是一个困难,所以你可能要弄清楚为什么这不是不能接受。

4)你可以在绘图后适当缩放x轴(类似于@ Parag的回答)

答案 1 :(得分:0)

您可以使用find函数或逻辑索引查找数据范围,然后使用here所述的axis([xmin xmax ymin ymax])属性