Matlab中的多元正态分布。峰形?

时间:2014-08-06 10:45:44

标签: matlab probability normal-distribution

我试图在matlab中计算二元正态分布(使用mvnpdf),但我得到的pdf有一个奇怪的形状,有几个峰值。

http://i.stack.imgur.com/gmiFZ.png

这是我使用的代码:

s=[3,1]';
C_ee = [0.0473   -0.1446;
       -0.1446    0.4440]

x1 = -5:.2:5; x2 = -5:.2:5;
[X1,X2] = meshgrid(x1,x2);
F = mvnpdf([X1(:) X2(:)],s',C_ee);
F = reshape(F,length(x2),length(x1));
figure(1);
surf(x1,x2,F);
caxis([min(F(:))-.5*range(F(:)),max(F(:))]);
axis([-5 5 -5 5 0 5])
xlabel('Re'); ylabel('Im'); zlabel('Probability Density');

我注意到,当我增加C_ee(sigma矩阵)的值时,例如C_ee + 0.05,形状开始看起来正常。

我注意到这个矩阵接近于不是正定的......但它仍然是。

有人可以解释这种行为吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

问题在x1x2轴上过于粗略的采样。例如,尝试将采样步骤.2更改为.002。此外,pdf集中在一个小区域,特别是x1方向。所以你可以“缩放”一点点改变间隔端点。例如,使用

x1 = 2:.002:4; x2 = -3:.002:4;

在下图中,我正在使用

imagesc(x1, x2, F)

代替surf(x1,x2,F)以获得更好的代表性。第一个数字是您的原始抽样,第二个数字是x1x2,如上一行所示。比较两个数字,抽样问题是显而易见的。请注意,轴刻度不同。

Original

Modified