为了更形象的理解多元高斯概率密度函数,用matlab画了个图
代码如下:
pi=3.14;
u=[1;0];
D=[3 0;0 1];
Z=zeros(61);
x=-3:0.1:3;
y=-3:0.1:3;
i=1;
for row=-3:0.1:3
j=1;
for col=-3:0.1:3
X=[row;col];
H=(exp(-0.5*(((X-u)')*inv(D)*(X-u))))/(2*pi*sqrt(det(D)));
Z(i,j)=H;
j=j+1;
end
i=i+1;
end
surf(x,y,Z);
xlabel('x');
ylabel('y');
zlabel('z');
axis([-3 3 -3 3 0 0.25]);
可却发现x轴和y轴是反的,经过研究发现,matlab的surf函数中是在z的线性存储中,先固定y然后移动x,顺序选取。也就是说,Z(i,j)是在x(j),y(i)时候选取的。
所以必须在绘制图形的时候对z转置,即:
surf(x,y,Z');
这样才能画出正确的图形