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');
这样才能画出正确的图形
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)