matlab surf 坐标设置,matlab中3D曲面函数surf的坐标问题

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

这样才能画出正确的图形

你可能感兴趣的:(matlab,surf,坐标设置)