MATLAB三维绘图Word文档格式.docx
- 文档编号:16403216
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:34
- 大小:759.90KB
MATLAB三维绘图Word文档格式.docx
《MATLAB三维绘图Word文档格式.docx》由会员分享,可在线阅读,更多相关《MATLAB三维绘图Word文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
三维绘图基本流程
M-代码举例
备注
1、数据准备
x=-8:
0.1:
8;
y=-8:
[X,Y]=meshgrid(x,y);
Z=(exp(X)-exp(Y)).*sin(X-Y);
三维曲线图用一般的数组创建即可
三维网线图和三维表面图的创建需要通过meshgrid创建网格数据
2、图形窗口和绘图区选择
figure
创建绘图窗口和选定绘图子区
3、绘图
surf(X,Y,Z)
创建三维曲线图或网线图、表面图
4、设置视角
view([7525])
设置观察者查看图形的视角和Camera属性
5、设置颜色表
colormaphsv
shadinginterp
为图形设置颜色表,从而可以用颜色显示z值的大小变化
对表面图和三维片块模型还可以设置颜色过渡模式
6、设置光照效果
light('
Position'
[10.50.5])
lightinggouraud
materialmetal
设置光源位置和类型
对表面图和三维片块模型还可以设置反射特性
7、设置坐标轴刻度和比例
axissquare
set(gca,'
ZTickLabel'
'
'
)
设置坐标轴范围、刻度和比例
8、标注图形
Xlabel('
x'
Ylabel('
y'
colorbar
设置坐标轴标签、标题等标注元素
9、保存、打印或导出
将绘图结果打印或导出为标准格式图像
从表3-1可以看出,三位绘图中多了颜色表、颜色过渡、光照等专门针对三维图形的设置项,其他基本流程都和二维绘图类似。
表3-1中举例的M-代码连贯起来运行,可以得到如图3-1所示的绘图结果。
图3-1三维绘图窗口
下面我们将根据绘制三维图形的基本流程,分节介绍创建图形的各种函数。
3.2三维折线及曲线的绘制
3.2.1三维折线及曲线的基本绘图命令
绘制二维折线或曲线时,我们可以使用plot命令。
与这条命令类似,MATLAB也提供了一个绘制三维折线或曲线的基本命令plot3。
该命令的格式是:
plot(x1,y1,z1,option1,x2,y2,z2,option2,….)。
以x1,y1,z1所给出的数据分别为x,y,z坐标值,option1为选项参数,以逐点连折线的方式绘制1个三维折线图形;
同时,以x2,y2,z2所给出的数据分别为x,y,z坐标值,option2为选项参数,以逐点折线的方式绘制另一个三维折线图形。
(1)plot3命令的功能及使用方法与plot命令的功能及使用方法相类似,它们的区别在于前者绘制出的是三维图形。
(2)plot3命令参数的含义与plot命令的参数含义相类似,它们的区别在于前者多了一个Z方向上的参数。
同样,各个参数的取值情况及其操作效果也与plot命令相同。
上面给出的plot3命令格式是一种完整的格式,在实际操作中,根据各个数据的取值情况,均可以有下述一种简单的书写格式:
plot3(x,y,z)
plot3(x,y,z,option)
(3)选项参数option指明了所绘图中线条的线性、颜色以及各个数据点的表示记号。
(4)plot3命令使用的是以逐点连线的方法来绘制三维折线的,当各个数据点的间距较小时,我们也可利用它来绘制三维曲线。
例3-1三维曲线绘制函数plot3使用实例。
利用plot3绘制x=sint、y=cost三维螺旋线。
解:
在命令窗口中,输入以下命令
t=0:
pi/50:
8*pi;
x=sin(t);
y=cos(t);
z=t;
执行程序后,得到如图3-2所示的结果:
图3-2三维螺旋线
例3-2三维曲线绘制函数plot3使用实例。
利用plot3绘制z=x(-x^2-y^2)三维线条图形。
在命令窗口中,输入下列代码
[X,Y]=meshgrid([-3:
0.2:
3]);
Z=X.*(-X.^2-Y.^2);
plot3(X,Y,Z,’b’)
执行程序后,显示结果如图3-3所示:
图3-3三维线条图形
3.1.2三维图形的坐标标记及图形标题
与二维图形的坐标标记命令类似,MATLAB也提供了下述三条用于三维图形坐标标记的命令,并提供了用于图形标题说明的语句。
这种标记方式的格式是:
xlabel(str):
将字符串str水平放置于X轴,以说明X轴数据的含义。
ylabel(str):
将字符串str水平放置于Y轴,以说明Y轴数据的含义。
zlabel(str):
将字符串str水平放置于Z轴,以说明Y轴数据的含义。
title(str):
将字符串str水平放置于图形的顶部,以说明该图形的标题。
例3-3坐标标记函数使用实例。
利用函数为y=sint、y=cost的三维螺旋线图形添加标题说明。
在命令窗口中输入下面的程序代码
xlabel(‘x=sin(t)’)
ylabel(‘y=cos(t)’)
zlabel(‘z=t’)
title(‘三维螺旋线’)
执行该程序后,显示结果如图3-4所示:
图3-4三维图形的坐标标记
3.2三维网格曲面的绘制
三维网格曲面是由一些四边形相互连接在一起所构成的一种曲面,这些四边形的4条边所围成的颜色与图形窗口的背景色相同,并且无色调的变化,呈现的是一种线架图的形式。
绘制这种网格曲面时,我们需要知道各个四边形的顶点的(x,y,z)3个坐标值,然后再使用MATLAB所提供的网格曲面绘图命令mesh,meshc或meshz来绘制不同形式的网格曲面。
3.2.1栅格数据点的产生
前面我们讲过,在绘制网格曲面之前,必须先知道各个四边形顶点的三维坐标值。
绘制曲面的一般情况是,我们先知道四边形各个顶点的二维坐标(x,y),然后再利用某个函数公式计算出四边形各个顶点的z坐标。
这里所使用的(x,y)二维坐标值是一种栅格形的数据点,它可由MATLAB所提供的meshgrid产生。
meshgrid命令的调用格式为:
[X,Y]=meshgrid(x,y)
该命令的功能是由X向量和y向量值通过复制的方法产生绘制三维图形时所需的栅格数据X矩阵和Y矩阵。
在使用该命令的时候,需要说明以下两点:
(1)向量x和y向量分别代表三维图形在X轴、Y轴方向上的取值数据点;
(2)x和y分别是1个向量,而X和Y分别代表1个矩阵。
例3-4meshgrid函数功能执行效果。
在命令窗口中执行下列代码
x=[12345678];
y=[357];
[X,Y]=meshgrid(x,y)
X=
12345678
Y=
33333333
55555555
77777777
例3-5栅格数据点函数meshgrid使用实例。
利用meshgrid绘制矩形网格。
在命令窗口中输入:
%Ex3-2meshgrid
x=-5:
0.5:
5;
y=5:
-0.5:
-5;
plot(X,Y,'
o'
运行这段M代码则绘制出如图3-3所示的矩形网格顶点。
图3-5矩形网格
运行whos查看工作区变量属性,得到结果为:
NameSizeBytesClass
X21x213528doublearray
Y21x213528doublearray
x1x21168doublearray
y1x21168doublearray
Grandtotalis924elementsusing7392bytes
创建了(X,Y)网格点后就可以绘制网格曲面图了。
3.2.2网格曲面的绘制命令
MATLAB中可以通过mesh函数绘制三维网格曲面图,该函数的语法格式有以下几种:
mesh(X,Y,Z,C)
mesh(X,Y,Z)
mesh(x,y,Z,C)
mesh(x,y,Z)
mesh(Z,C)
mesh(Z)
上面六种格式都可以绘制出三维网格曲面图,但是各个格式的命令参数含义有些区别,现作出以下几点说明:
(1)在命令格式mesh(X,Y,Z,C)和mesh(X,Y,Z)中,参数X,Y,Z都为矩阵值,并且X矩阵的每一个行向量都是相同的,Y矩阵的每一个列向量也都是相同的。
参数C表示网格曲面的颜色分布情况,若省略该参数则表示网格曲面的颜色分布与Z方向上的高度值成正比。
(2)在命令格式(x,y,Z,C)和mesh(x,y,Z)中,参数x和y为长度分别是n和m向量值,而参数Z是维数为m×
n的矩阵。
其实,这种格式的命令相当于执行了下面两条命令:
[X,Y]=meshgrid(x,y)
mesh[X,Y,Z,C]
(3)在命令格式[Z,C]和mesh(Z)中,若参数Z是维数为m×
n的矩阵,则绘图时的栅格数据点的取法是:
x=1:
n;
y=1:
m。
其实,这种格式的命令相当于执行了下面5条命令:
[m,n]=size(Z);
x=1:
n;
y=1:
m;
例3-6在笛卡尔坐标系中绘制以下函数的网格曲面图:
在命令窗口中输入以下命令,
y=x;
R=sqrt(X.^2+Y.^2)+eps;
Z=sin(R)./R;
gridon
axis([-1010-1010-11])
运行以上程序,得到函数的三维网格图形如图3-6所示。
图3-6网格曲面图
另外,MATLAB中还有两个mesh的派生函数:
(1)meshc在绘图的同时,在x-y平面上绘制函数的等值线;
(2)meshz则在网格图基础上在图形的底部外侧绘制平行z轴的边框线。
例3-7利用meshc和meshz绘制三维网格图。
closeall
clear
[X,Y]=meshgrid(-3:
.5:
3);
Z=2*X.^2-3*Y.^2;
subplot(2,2,1)
plot3(X,Y,Z)
title('
plot3'
subplot(2,2,2)
mesh'
subplot(2,2,3)
meshc(X,Y,Z)
meshc'
subplot(2,2,4)
meshz(X,Y,Z)
meshz'
运行这段M代码,得到图3-7的绘图结果:
图3-7三维网线图
从图3-7可以看到,plot3只能画出X、Y、Z的对应列表示的一系列三维曲线,它只要求X、Y、Z三个数组具有相同的尺寸,并不要求(X,Y)必须定义网格点。
mesh函数则要求(X,Y)必须定义网格点,并且在绘图结果中可以把邻近网格点对应的三维曲面点(X,Y,Z)用线条连接起来。
此外,plot3绘图时按照MATLAB绘制图线的默认颜色序循环使用颜色区别各条三维曲线,而mesh绘制的网格曲面图中颜色用来表征z值的大小,可以通过colormap命令显示表示图形中颜色和数值对应关系的颜色表。
3.2.3隐藏线的显示和关闭
显示或不显示的网格曲面的隐藏线将对图形的显示效果有一定的影响。
MATLAB提供了相关的控制命令hidden,调用这种命令的格式是:
hiddenon或hiddenoff。
hiddenon命令是去掉网格曲面的隐藏线,hiddenoff命令显示网格曲面的隐藏线。
例3-8绘出有隐藏线和无隐藏线的函数
的网格曲面。
在M编辑器中输入以下代码
%**************************************************************
%程序:
EX30?
.M
subplot(1,2,1)
hiddenon
title(‘hiddenon’)
axis([-1010-1010-11])
subplot(1,2,2)
hiddenoff
title(‘hiddenoff’)
axis([-1010-1010-11])
保存文件后,执行该程序,得到如图3-8所示的图形:
图3-8无隐藏线的网格曲面与有隐藏线的网格曲面
3.3三维阴影曲面的绘制
前一节我们绘制的三维曲面中,各个小的曲面片是有四边形组成的,这个四边形的4条边绘制有某一种颜色,但其内部却无颜色(即为绘图窗口的底色)。
本节将介绍另外一种三维曲面的表示方法——三维阴影曲面。
这种曲面也是由很多个较小的四边形构成的,但是各个四条边是无色的(即为绘图窗口的底色),其内部却分布着不同的颜色,也可认为是各个四边形带有阴影效果。
MATLAB提供了3条用于绘制这种三类阴影曲面的命令:
surf、surfc、furfl。
3.3.1阴影曲面绘制命令
下面首先介绍基本的三维阴影曲面的绘制,这种绘制方式采用surf函数,调用这种函数的格式是:
surf(X,Y,Z,C)
surf(x,y,Z,C)
surf(x,y,Z)
surf(Z,C)
surf(Z)
使用此种函数时,需要以下几种说明:
(1)这6个surf命令与3.2.2节所介绍的6个mesh命令的使用方法及参数含义相同。
(2)surf命令与mesh命令的区别是前者绘制的是三维阴影曲面,而后者绘制的是三维网格曲面。
(3)在surf命令中,各个四边形表面的颜色分布方式可由shading命令来指令:
shadingfaceted——表示截面式颜色分布方式;
shadinginterp——表示插补式颜色分布方式;
shadingflat——表示平面式颜色分布方式。
例3-9绘制函数
的三维阴影曲面,分别采用shading
faceted、shadinginterp和shadingflat设置其效果。
在M文件编辑器中输入以下程序代码
%*********************************************************
EX309.M
Z=2*sin(R)./R;
axis([-1010-1010-0.51.5])
shadingfaceted
保存并运行该程序,显示结果如图3-9所示。
图3-9截面式颜色分布方式
将程序中最后一句改为shadinginterp,再次运行程序,结果显示如图3-10.
图3-10插补式颜色分布方式
将程序中最后一句改为shadingflat,再次运行程序,结果显示如图3-11.
图3-11平面式颜色分布方式
3.3.2带有等高线的阴影曲面绘制
绘制在XY平面上带有等高线的三维阴影曲面的函数采用surfc,调用这种函数的格式是:
surfc(X,Y,Z,C)
surfc(X,Y,Z)
surfc(x,y,Z,C)
surfc(x,y,Z)
surfc(Z,C)
surfc(Z)
(1)这6个surfc命令与3.3.1小节所介绍的相应的6个surf命令的使用方法及参数含义相同;
(2)surfc命令与surf命令的区别是前者除了绘制出三维阴影曲面外,在XY坐标平面上还绘制有曲面在Z轴方向上的等高线,而后者仅绘制出三维阴影曲面。
例3-10等高线线函数surfc使用实例。
利用函数surfc为图3-9三维曲面添加等高线。
EX310.M
保存并运行程序后,可以得到如图3-12所示的显示效果。
图3-12三维图形等高线
3.3.3具有光照效果的阴影曲面绘制
MATLAB为用户提供了一种可以绘制具有光照效果的阴影曲面绘制函数surfl,调用这种函数的格式是:
surfl(X,Y,Z,s)
surfl(X,Y,Z)
surfl(Z,s)
surfl(Z)
使用此种函数,需要以下几种说明:
(1)这4种surfl命令与前面介绍的surf命令的使用方法及参数含义相类似;
(2)surfl命令与surf命令的区别是前者绘制出的三维阴影曲面具有光照效果,而后者绘制出的三维阴影曲面无光照效果;
(3)向量参数s表示光源的坐标位置,s=[sx,xy,xz]。
注意,若缺省s,则表示光源位置设在观测角的反时针45度处,它是缺省的光源位置。
例3-11光照效果函数surfl使用实例。
利用sufl函数为图3-9所示的阴影曲面添加光照效果。
EX311.M
s=[0-10];
保存并运行上述程序后,得到以下图形如图3-13所示。
图3-13阴影曲面添加光照效果图
3.4三维图形的调控
与二维图形一样,我们也可以对三维图形的显示参数进行更改,以控制其显示效果。
这里我们主要介绍设置视点位置和坐标轴范围、比例的命令。
3.4.1设置视点位置
三维图形在不同位置察看会看到不同的侧面和结果,因此,设置一个能够察看整个图形最主要的特性的视角,在三维图形的察看中是重要的。
MATLAB下可以通过函数命令或图形旋转工具改变视角,这里介绍通过view在命令行方式下设置图形视角的方法。
view函数的常用语法格式如表3-2。
表3-2view函数设置视角的语法格式
函数语法格式
说明
view(az,el)
view([az,el])
设置视角位置在azimuth角度和elevation角度确定的射线上
view([x,y,z])
设置视角位置在[x,y,z]向量所指示的方向
view
(2)
默认的二维视图视角,相当于az=0,el=90
view(3)
默认的三维视图视角,相当于az=-37.5,el=30
[az,el]=view
返回当前视图的视角az和el
表3-2中参数az和el分别确定了图形中心(三维坐标轴原点)和观察者眼睛连线确定的向量与-y轴方向和x-y平面的夹角,其意义如图3-14所示。
图3-14视角设置参数意义图示(来自MATLAB联机帮助)
例3-12视角设置view使用实例。
利用view为三维图形设置视角。
ezmesh(@peaks);
view(3);
[a,b]=view;
title(mat2str([a,b]))
view
(2);
view([3045]);
view([11sqrt
(2)]);
[
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 三维 绘图