MATLAB error: Vectors must be the same length

MATLAB error: Vectors must be the same length

您好,我正在尝试将直方图与正态分布曲线叠加,但出现错误:向量长度必须相同。

任何人都可以解释我在这里犯了什么错误吗?

这是我使用的代码:

X = normrnd(1.5,.1,1,1000)
[hy, hx] = hist(X,50);
hy = hy/numel(X)/(hx(2)-hx(1)); 
bar(hx,hy), colormap(bone);

z=-4:0.1:4;
pdf=(1/(std(X)*sqrt(2*pi)))*exp(-0.5*((X - mean(X))/std(X)).^2);
hold on, plot(z,pdf,'LineWidth',1,'Color','red');

在此代码中,问题与以下事实有关:向量 pdf 的长度 = 1000,而向量 z 的长度 = 81。它们应该具有相同的长度才能对应分别在 x 轴和 y 轴上。

这里是解决方案:

X = normrnd(1.5,.1,1,1000);
[hy, hx] = hist(X,50);
hy = hy/numel(X)/(hx(2)-hx(1)); 

figure
bar(hx,hy);
colormap(bone);

z=-4:0.1:4;
pdf=(1/(std(X)*sqrt(2*pi)))*exp(-0.5*((z - mean(X))/std(X)).^2);
hold on;
plot(z,pdf,'LineWidth',1,'Color','red');