7.3 三维图形
三维图形表现的是三个变量之间的依赖关系,使用户能够直观看出二元函数数值的变化趋势。下面的小节将介绍三维图形的绘制函数。
7.3.1 plot3——绘制三维曲线
【功能简介】绘制三维曲线。
【语法格式】
1.plot3(X1,Y1,Z1,…)
X1、Y1、Z1是同型的向量或矩阵,函数在三维空间中绘制出一条或多条曲线,绘制多条曲线时,曲线的条数等于矩阵的列数。
格式变体:
plot3(X1,Y1,Z1,LineSpec):用参数LineSpec指定画线的线型、标记符号和颜色。
2.plot3(…,'PropertyName','PropertyValue')
设置所绘图形指定属性的属性值。
【实例7.27】绘制三维螺旋图。
>> t=0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t); %三维螺旋图
>> grid on;
>> axis square;
执行结果如图7-28所示。
http://www.tu265.com/di-fdbaa72b282ed016f96a4c6037bb5a3d.png
图7-28 三维螺旋图
【实例分析】三维螺旋图的参数方程形式为x=sin(t),y=cos(t),z=t。
7.3.2 mesh——绘制三维网格图
【功能简介】绘制三维网格图。
【语法格式】
1.mesh(X,Y,Z)
生成由X、Y和Z定义的网格图。X和Y如果分别是长度为m、n的向量,且(n,m)=size(Z),则生成的网格线的交叉点为。如果X、Y分别为矩阵,则生成网格线的交叉点为。网格线的颜色由Z定义, 颜色与高度成比例。
2.mesh(Z)
X与Y自动生成。=size(Z),则X=1:n,Y=1:m。颜色由高度决定。
3.mesh(…,C)
图形颜色由矩阵C决定。如果X、Y和Z也是矩阵,则四个矩阵必须同型。
【实例7.28】绘制三维网格图。
>> =meshgrid(-8:.5:8); %构造X、Y矩阵
>> R=sqrt(X.^2+Y.^2)+eps;
>> Z=sin(R)./R;
>> mesh(X,Y,Z); %绘制三维网格图
执行结果如图7-29所示。
http://www.tu265.com/di-07b943522f119c861c507b959d750e14.png
图7-29 三维网格图
【实例分析】不指定颜色时,网格颜色由高度决定。
7.3.3 surf——三维曲面图
【功能简介】绘制三维曲面图。
【语法格式】
1.surf(X,Y,Z)
生成由X、Y和Z定义的曲面图。如果X和Y分别是长度为m、n的向量,且(n,m)=size(Z),则生成的曲面中的交叉点为。如果X、Y分别为矩阵,则生成曲面中的交叉点为。线条之间的区域用颜色填充,surf函数调用格式与mesh函数一致。
2.surf (Z)
X与Y自动生成。=size(Z),则X=1:n,Y=1:m。颜色由高度决定。
3.surf (…,C)
图形颜色由矩阵C决定。如果X、Y和Z也是矩阵,则四个矩阵必须同型。
【实例7.29】绘制三维曲面图。
>> =meshgrid(-8:.5:8); %生成X、Y矩阵
>> R=sqrt(X.^2+Y.^2)+eps;
>> Z=sin(R)./R;
>> surf(X,Y,Z); %绘制三维曲面图
执行结果如图7-30所示。
http://www.tu265.com/di-0015ae36b9818677faa1cc943f195598.png
图7-30 三维曲面图
【实例分析】surf函数与mesh函数调用格式是相同的。
7.3.4 contour3——三维等高线绘制
【功能简介】绘制三维等高线。
【语法格式】
1.contour3(Z)
画出矩阵Z的等高线图,矩阵Z至少为2×2大小,系统按矩阵Z中元素距离XY平面的高度,自动选择等高线的条数进行绘制。X和Y的值是自动确定的,=size(Z),X轴的范围是1:n,Y轴的范围是1:m。
格式变体:
contour3(Z,n):画出矩阵Z的n条等高线。
contour3(Z,v):参数v确定绘制等高线的高度,等高线的条数等于length(v)。
2.contour3(X,Y,Z)
画出矩阵Z的等高线图,X轴和Y轴的范围由参数X、Y指定。如果X为矩阵,则使用X(1,:)来定义X轴的范围,如果Y为矩阵,则使用Y(:,1)来定义Y轴的范围。如果X与Y均为矩阵,则两者必须同型。
格式变体:
contour3(X,Y,Z,n):画出矩阵Z的n条等高线。
contour3(X,Y,Z,v):参数v确定绘制等高线的高度,等高线的条数等于length(v)。
3.contour3(…,LineSpec)
参数LineSpec指定线型、标记符号和颜色。
【实例7.30】绘制等高线。
>> =meshgrid([-2:.25:2]);
>> Z=X.*exp(-X.^2-Y.^2);
>> contour3(X,Y,Z,30); %绘制等高线
>> colormap cool;
执行结果如图7-31所示。
http://www.tu265.com/di-90245267e1d39762918cb3cd6e816b9a.png
图7-31 contour3函数绘制等高线
【实例分析】等高线绘制有contour3和contour两个函数均可完成,contour函数绘制的是二维的等高线。
7.3.5 contour——曲面的等高线
【功能简介】绘制曲面的等高线。
【语法格式】
1.contour(Z)
画出矩阵Z的二维等高线图,矩阵Z至少为2×2大小,可视为XY平面的高度矩阵。等高线的个数和值是基于Z的最大值和最小值自动选取的。=size(Z),X轴的范围是1:n,Y轴的范围是1:m。
格式变体:
contour(Z,n):画出矩阵Z的n条等高线。
contour(Z,v):参数v确定绘制等高线的高度,等高线的条数等于length(v)。
2.contour(X,Y,Z)
画出矩阵Z的二维等高线图,X轴和Y轴的范围由参数X、Y指定。如果X与Y均为矩阵,则两者必须同型且单调递增。
格式变体:
contour(X,Y,Z,n):画出矩阵Z的n条等高线。
contour(X,Y,Z,v):参数v确定绘制等高线的高度,等高线的条数等于length(v)。
3.contour(…,LineSpec)
参数LineSpec指定线型、标记符号和颜色。
【实例7.31】画出曲面的等高线图。
>> =meshgrid([-2:.25:2]);
>> Z=X.*exp(-X.^2-Y.^2);
>> contour(X,Y,Z,30); %画出曲面的二维等高线
执行结果如图7-32所示。
http://www.tu265.com/di-b6a14f2f019981dc26f68b41ba4061a8.png
图7-32 曲面的等高线
【实例分析】contour函数画出的是二维图形,contour3函数画出的是三维图形。
7.3.6 clabel——等高线高度标签
【功能简介】在二维等高线图中绘制等高线高度标签。
【语法格式】
1.clabel(C,h)
C为标签矩阵,h为等高线句柄。函数旋转标签到适当角度,在空间允许的情况下插入标签。
格式变体:
clabel(C,h,v):在高度v处插入标签C。
clabel(C,h,'manual'):手动添加标签到句柄h指定的等高线图中,用鼠标左键或空格键在最接近位置上放置标签,用回车键结束操作。
2.clabel(C)
添加标签到当前等高线图中,随机选择标签位置。
格式变体:
clabel(C,v):在v指定的高度处添加标签。
clabel(C,'manual'):手动添加标签到当前等高线图中。
【实例7.32】给等高线做标注。
>> =peaks;
>> C=contour(x,y,z); %绘制等高线
>> clabel(C); %给等高线添加标注
执行结果如图7-33所示。
http://www.tu265.com/di-6a5f425dedfe58d6d5e90a0d8298c5ed.png
图7-33 给等高线添加标注
【实例分析】peaks是MATLAB自带函数。
7.3.7 contourc——等高线图形计算
【功能简介】计算等高线矩阵C,用函数contour、contour3和contourf来显示。
【语法格式】
1.C=contourc(Z)
从矩阵Z中计算等高矩阵C,Z可视为XY平面的高度矩阵。等高线的数量和高度值是系统自动确定的。Z至少为2×2矩阵,至少包含两个不同的值,X和Y的范围是1:n与1:m,其中=size(Z)。
格式变体:
C=contour(Z,n):确定等高线条数为n,返回等高矩阵。
C=contour(Z,v):在高度v处计算等高线。
2.C=contourc(X,Y,Z)
在X和Y上计算Z的等高矩阵C,Z可视为XY平面的高度矩阵。等高线的数量和高度值是系统自动确定的。Z至少为2×2矩阵,至少包含两个不同的值。
格式变体:
C=contour(X,Y,Z,n):确定等高线条数为n,返回等高矩阵。
C=contour(X,Y,Z,v):在高度v处计算等高线。
【实例7.33】计算peaks函数的等高矩阵。
>> a=peaks;
>> c=contourc(a,10); %计算10条等高线的等高矩阵
>> s=size(c) %矩阵维度
s =
2 800
>> contour(a,c) %画出等高线
执行结果如图7-34所示。
http://www.tu265.com/di-6dd8199f204f275d9a53e4ccddf00f91.png
图7-34 计算等高矩阵再绘制等高线
【实例分析】矩阵C是一个2×m矩阵,m的值取决于数据矩阵及等高线的条数。
7.3.8 fill3——填充三维图
【功能简介】填充三维多边形。
【语法格式】
1.fill3(X,Y,Z,C)
参数X、Y和Z定义多边形的顶点,如果X、Y和Z是矩阵,fill3将创建n个多边形,n为矩阵的列数。函数将在必要时闭合最后一个顶点与第一个顶点来封闭多边形。参数C指定颜色,如果C是一个行向量,则length(C)等于size(X,2)和size(Y,2),如果C是一个列向量,则length(C)必须等于size(X,1)和size(Y,1)。
格式变体:
fill3(X1,Y1,Z1,C1,X2,Y2,Z2,C2,…):绘制多个三维多边形。
2.fill3(X,Y,Z,ColorSpec)
用参数ColorSpec指定的颜色对三维多边形进行填充。
【实例7.34】用渐变的颜色来对三维多边形进行着色。
>> X=;
>> Y=;
>> Z=;
>> C=[.5,1,1,.5;1,.5,.5,.1667;.3333,.3333,.5,.5] %指定颜色
C =
0.5000 1.0000 1.0000 0.5000
1.0000 0.5000 0.5000 0.1667
0.3333 0.3333 0.5000 0.5000
>> fill3(X,Y,Z,C) %填充三维多边形
执行结果如图7-35所示。
http://www.tu265.com/di-483941c276b9cc0ca997e93e36239bfe.png
图7-35 填充三维多边形
【实例分析】X、Y、Z决定三维多边形的形状,C确定颜色。
7.3.9 sphere——绘制球体
【功能简介】绘制球体。
【语法格式】
1.sphere(n)
在三维直角坐标系中绘制由n×n个面组成的单位球体。
格式变体:
sphere:默认n=20,绘制单位球体。
2.=sphere(n)
返回三个阶数为(n+1)×(n+1)的坐标矩阵。该命令不画图,只是返回矩阵,要画图可以调用mesh(X,Y,Z)或surf(X,Y,Z)。
【实例7.35】绘制多个球体。
>> =sphere;
>> surf(x,y,z); %画出第一个球体
>> hold on;
>> surf(x+3,y+2,z); %画出第二个球体
>> surf(x,y-1,z+2); %画出第三个球体
>> daspect()
执行结果如图7-36所示。
http://www.tu265.com/di-40e9ec8b1eda1cbab68672fb8313a9e1.png
图7-36 绘制多个球体
【实例分析】sphere绘制单位球体,半径为1。
7.3.10 contourf——填充二维等高线
【功能简介】填充二维等高线。
【语法格式】
1.contourf(Z)
画出矩阵Z的二维等高线图,再对等高线之间的区域进行填充,填充的颜色使用当前窗口的颜色映射表。矩阵Z至少为2×2大小,可视为XY平面的高度矩阵。等高线的个数和值是基于Z的最大值和最小值自动选取的。=size(Z),X轴的范围是1:n,Y轴的范围是1:m。
格式变体:
contourf(Z,n):画出矩阵Z的n条等高线并对等高线间的区域进行填充。
contourf(Z,v):参数v确定绘制等高线的高度,等高线的条数等于length(v)。
2.contourf(X,Y,Z)
画出矩阵Z的等高线图并进行填充,X轴和Y轴的范围由参数X、Y指定。如果X与Y均为矩阵,则两者必须同型且单调递增。
格式变体:
contourf(X,Y,Z,n):画出矩阵Z的n条等高线并进行填充。
contourf(X,Y,Z,v):参数v确定绘制等高线的高度,等高线的条数等于length(v)。
【实例7.36】画出等高线并进行填充。
>> a=peaks;
>> contourf(a); %画出用颜色填充的等高线
执行结果如图7-37所示。
图7-37 用颜色填充的等高线图
【实例分析】用颜色对等高线间的区域进行填充,使图形更直观。
7.3.11 pie3——三维饼图
【功能简介】绘制三维饼图。
【语法格式】
1.pie3(X)
使用X中的数据绘制一个三维饼图,X中的每一个元素都是饼图的一个部分。元素所占扇形面积的大小由X(i)/sum(X)决定,如果sum(X)<1,则只绘制不完整的三维饼形图。
2.pie3(X,explode)
指定三维饼图中的每一部分是否分离出来。explode是与X同型的数组,用非零值表示相应位置的X中的元素分离出来显示。
【实例7.37】绘制三维饼图。
>> x=;
>> explode=; %设置第二个元素和最后一个元素对应的区域分离出来独立显示
>> pie3(x,explode); %绘制三维饼图
>> colormap hsv
执行结果如图7-38所示。
http://www.tu265.com/di-e85fafebb6df3b29e87c9a7d1220e3e6.png
图7-38 三维饼图
【实例分析】pie3的调用格式与pie类似。
7.3.12 comet3——三维彗星图
【功能简介】绘制三维彗星图。
【语法格式】
1.comet3 (z)
显示向量z的三维彗星图,X与Y轴范围由系统自动确定。
2.comet3(x,y,z)
显示由x、y、z确定的三维曲线的彗星图。
3.comet3(x,y,z,p)
指定彗星体的长度为p*length(y)。
【实例7.38】绘制一个三维彗星图。
>> t=-10*pi:pi/250:10*pi;
>> comet3((cos(2*t).^2).*sin(t),(sin(2*t).^2).*cos(t),t); %绘制彗星图
执行结果如图7-39所示。
http://www.tu265.com/di-e2d7c59576635e803588dafcd880c373.png
图7-39 三维彗星图
【实例分析】彗星图的绘制是一个动态的过程,用户可按实例中的代码自行运行。
7.3.13 cylinder——生成圆柱图形
【功能简介】绘制圆柱图形。
1.=cylinder(r,n)
返回一个半径为r、高度为1的圆柱体的X、Y、Z轴坐标值,所绘制的圆柱体的圆周有指定的n个距离相同的点。用户可用surf或mesh函数和X、Y、Z参数画出圆柱。
格式变体:
=cylinder(r):所绘制的圆柱体的圆周有指定的20个距离相同的点。
= cylinder:半径采用默认值1。
2.cylinder(…)
没有输出参量时,直接画出圆柱体。
【实例7.39】绘制一个两头粗、中间细的圆柱。
>> t=0:pi/10:2*pi;
>> =cylinder(2+cos(t)); %用cylinder函数算出X、Y、Z参数
>> surf(X,Y,Z); %画出圆柱体
>> axis square %调整坐标轴
执行结果如图7-40所示。
http://www.tu265.com/di-c13859ca37a4a9e9606e4651f27661c6.png
图7-40 绘制圆柱体
【实例分析】也可不带返回值,直接用cylinder(2+cos(t))画出圆柱。
7.3.14 surfc——绘制阴影图及等高线
【功能简介】绘制阴影图及等高线。先画出三维曲面图,再在下方画出二维等高线。
【语法格式】
1.surfc(X,Y,Z)
生成由X、Y和Z定义的曲面图,并在下方绘制二维等高线。X和Y如果分别是长度为m、n的向量,且=size(Z),则生成的曲面中的交叉点为。如果X、Y分别为矩阵,则生成曲面中的交叉点为。线条之间的区域用颜色填充,surfc函数调用格式与surf函数一致。
2.surfc(Z)
X与Y自动生成。=size(Z),则X=1:n,Y=1:m。颜色由高度决定。
3.surfc(…,C)
图形颜色由矩阵C决定。如果X、Y和Z也是矩阵,则四个矩阵必须同型。
【实例7.40】绘制三维曲面及其二维等高线 。
>> =meshgrid(-8:.5:8);
>> R=sqrt(X.^2+Y.^2)+eps;
>> Z=sin(R)./R;
>> surfc (X,Y,Z); %绘制三维曲面及其二维等高线
执行结果如图7-41所示。
http://www.tu265.com/di-ada9fc139cb6a7b1658e13d3a4775213.png
图7-41 绘制三维曲面及其二维等高线
【实例分析】suefc函数调用格式与surf相同,只是多画了一个二维等高线。
7.3.15 surfl——带光照模式的曲面图
【功能简介】绘制带光照模式的曲面图。
【语法格式】
1.surfl(X,Y,Z)
生成由X、Y和Z定义的曲面图,光照方向和系数采用默认值。
格式变体:
surfl (Z):X、Y的值由系统自动生成,等于Z中元素的索引。
2.surfl(…,'light')
用MATLAB光照对象生成一个带光照的曲面。
3.surfc(…,s)
指定光源的方向s。s是长度为2或3的向量,即s=或。默认光源方向是从当前视角开始逆时针45度方向。
4.surfc(…,s,k)
指定反射系数k,k是一个常量。k为长度为4的向量,四个元素分别表示环境光系数、漫反射系数、镜面反射系数和镜面反射亮度,默认值为。
【实例7.41】对peaks函数表示的曲面用surfl函数进行描绘。
>> =meshgrid(-3:1/8:3);
>> z=peaks(x,y); %peaks函数
>> surfl(x,y,z); %绘制带光照的曲面图
>> shading interp;
>> colormap gray
执行结果如图7-42所示。
http://www.tu265.com/di-81395d2c5de3e9cfdf29390f53f6810a.png
图7-42 绘制带光照的曲面图
【实例分析】命令colormap gray将色图指定为灰度色图。