MATLAB中用mesh函数画出三维图后,怎么添加一个Z=0的平面?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB中用mesh函数画出三维图后,怎么添加一个Z=0的平面?相关的知识,希望对你有一定的参考价值。
就像图1怎么变成图2的样子。
MATLAB中用mesh函数画出三维图后,怎么添加一个Z=0的平面?
这个问题可以这样解决:
第一步:用surf函数绘制出已知的三维曲面图,例如墨西哥草帽,其代码
a=5;b=8;
t=linspace(-1,1,50);
u=linspace(-2*pi,2*pi,50);
[T,U]=meshgrid(t,u);
x=b*acos(T).*cos(U);
y=b*acos(T).*sin(U);
z=a*sin(T);
surfl(x,y,z)
第二步:使用hold on命令,保证在同一图窗中显示另一图形
第三步:设置z=0平面,即 z=a*sin(T)*0,然后再用surf()函数绘制出来
surf(x,y,z)
第四步,运行上述代码,可以得到如下结果。
参考技术A用meshgrid就可以了。
mesh(x,y,zeros(size(x)))
matlab画三维图像
当我们学习surface命令时,已经看到了三维作图的一些端倪。在matlab中我么可以调用mesh(x,y,z)函数来产生三维图像。
首先,我们用z=cos(x)sin(y)在-2pi ≤x,y≤ 2pi内的图像来看看:
[x,y] = meshgrid(-2*pi:0.1:2*pi);
z = cos(x).*sin(y);
mesh(x,y,z),xlabel(‘x‘),ylabel(‘y‘),zlabel(‘z‘)
显示图像如下:
同样用mesh命令产生z = ye-(x2+y2)的三维图像:
[x,y] = meshgrid(-2:0.1:2);
z = y.*exp(-x.^2-y.^2);
mesh(x,y,z),xlabel(‘x‘),ylabel(‘y‘),zlabel(‘z‘)
下面绘制表面带有渐变颜色的图像,可以通过 surf 和 surfc 命令实现,只要简单更改上面例子中的命令为:
surf(x,y,z),xlabel(‘x‘),ylabel(‘y‘),zlabel(‘z‘)
则图像如下所示,图像表面的颜色与高度是相称的:
若使用surfc则会在图像中留下映像:
surfc(x,y,z),xlabel(‘x‘),ylabel(‘y‘),zlabel(‘z‘)
还可以调用surfl(命令中的‘l‘表示这是一个光照表面 lighted surface)命令显示三维光照物体的表面,可以使用这个命令产生没有线条的三维图像,图像还可以是彩色的或灰度的。例如仍然产生函数z = ye-(x2+y2)的灰度图像,图像中的阴影可设置为flat、interp、faceted:
surfl(x,y,z),xlabel(‘x‘),ylabel(‘y‘),zlabel(‘z‘)
shading interp;
colormap(gray);
下面我们使用matlab内置函数来产生像球形或圆柱形这样的基本图像,例如:
t = 0:pi/10:2*pi;
[X,Y,Z] = cylinder(1+sin(t));
surf(X,Y,Z),colormap(‘default‘);
axis square
会得到如下图像:
试试另一个稍微有点不同的函数,阴影设置为faceted:
t = 0:pi/10:2*pi;
[X,Y,Z] = cylinder(1+cos(t));
surf(X,Y,Z),shading faceted;
axis square
若将阴影设置为shading flat,则图像显示为:
以上是关于MATLAB中用mesh函数画出三维图后,怎么添加一个Z=0的平面?的主要内容,如果未能解决你的问题,请参考以下文章