我试图在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,形状开始看起来正常。
我注意到这个矩阵接近于不是正定的......但它仍然是。
有人可以解释这种行为吗?
感谢您的时间。
答案 0 :(得分:1)
问题在x1
和x2
轴上过于粗略的采样。例如,尝试将采样步骤.2
更改为.002
。此外,pdf集中在一个小区域,特别是x1
方向。所以你可以“缩放”一点点改变间隔端点。例如,使用
x1 = 2:.002:4; x2 = -3:.002:4;
在下图中,我正在使用
imagesc(x1, x2, F)
代替surf(x1,x2,F)
以获得更好的代表性。第一个数字是您的原始抽样,第二个数字是x1
和x2
,如上一行所示。比较两个数字,抽样问题是显而易见的。请注意,轴刻度不同。