为了更形象的理解多元高斯概率密度函数,用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');

这样才能画出正确的图形

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐