2017-02-22 207 views
3

到目前为止,我有这个;如何在Matlab中减少直方图上条的宽度

Disp_X = X - mean(X); 
hist(Disp_X); 
h = hist(Disp_X); 

h.BinWidth = 0.001; 

h.BinWidth在之前的工作,使我的酒吧要窄得多,但现在我收到此错误信息;

“将字段赋值给非结构数组对象”。

我不明白为什么之前没有发生过,现在是这样。

我也有点试图将两个直方图绘制到一个图上。我在x和y上都有平均距离的频率,并且希望它们被绘制在同一个图上。

回答

4

您要的命令是histogram而不是histhist是绘制输出的旧直方图。该函数的输出是箱的计数和中心。 histogram的输出是一个直方图对象。

X = rand(1000,1); 
Disp_X = X - mean(X); 
h = histogram(Disp_X); 
h.BinWidth = 0.001; 

然后添加另一个直方图。

hold on 
Y = rand(1000,1); 
Dy = Y - mean(Y); 
h2 = histogram(Dy); 
2

马特的答案是正确的,如果你正在使用R2014b或以后,当被介绍histogram。如果您使用的是旧版本,那么你就不能使用点符号,并有权使用set

Disp_X = X - mean(X); 
hist(Disp_X); 
h = hist(Disp_X); 

set(h, 'BinWidth', 0.001); 
2

两个其他的答案是正确的,但最简单的选择将是设置此属性,而调用该函数:

histogram(Disp_X,'BinWidth',0.001)