当你使用这样的hist函数时:
[h x] = hist(data, 1000)
只要数据长于length(data) > 1
,就可以正常工作。
但如果它是= 1
那么它会这样做:
数据传播的范围超过-500到500.有没有办法阻止它这样做?
答案 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)