二维图形绘制
二维图形绘制基本语句
假设用户已经获得了一些实验数据。例如,已知各个时刻t = t1, t2, · · · , tn 和在这些时刻处的函数值y = y1, y2, · · · , yn,则可以将这些数据输入到MATLAB环境中,构成向量t = [t1, t2, · · · , tn] 和y = [y1, y2, · · · , yn],如果用户想用图形的方式表示二者之间的关系,则给出plot(t,y)即可绘制二维图形。在实际应用中,plot() 函数的调用格式还可以进一步扩展:
① t 仍为向量,而y 为矩阵,亦即

则将在同一坐标系下绘制m 条曲线,每一行和t 之间的关系将绘制出一条曲线。注意,这时要求y 矩阵的列数应该等于t 的长度。
② t 和y 均为矩阵,且假设t 和y 矩阵的行和列数均相同,则将绘制出t 矩阵
每行和y 矩阵对应行之间关系的曲线。
③ 假设有多对这样的向量或矩阵,(t1, y1),(t2, y2),· · · ,(tm, ym),则可以用语句plot(t1,y1,t2,y2,· · · ,tm,ym)直接绘制出各自对应的曲线。
④ 曲线的性质,如线型、粗细、颜色等,还可以使用下面的命令进行指定。plot(t1,y1,选项1,t2,y2,选项2,· · · ,tm,ym,选项m)
其中,“选项”可以按表2-2 中说明的形式给出,其中的选项可以进行组合。例如,若想绘制红色的点划线,且每个转折点上用五角星表示,则选项可以使用下面的组合形式'r-.pentagram'。

在MATLAB 绘制的图形中,每条曲线是一个对象,坐标轴是一个对象,而图形窗口还是一个对象,每个对象都有不同的属性,用户可以通过get() 和set()函数可以读取和设置对象的属性,这两个语句的语句结构为
set(句柄,'属性名1',属性值1,'属性名2',属性值2,· · · )
v = get(句柄,'属性名')
这两个语句在图形用户界面编程中特别有用,后面将详细介绍。
其他二维图形绘制语句
除了标准的二维曲线绘制之外,MATLAB 还提供了具有各种特殊意义的图形绘制函数,其常用调用格式如表2-3 所示。其中,参数x、y 分别表示横、纵坐标绘
图数据,c 表示颜色选项,ym、yM 表示误差图的上下限向量。当然,随着输入参数个数及类型的不同,各个函数的绘图形式也有所区别。

MATLAB 语言可以将一个图形窗口分割成若干个小的区域,在每个区域内独立绘制不同的图形,这使得图形显示更具多样性,该功能可以由subplot() 函数实现,其调用格式为subplot(m,n,k),其中将图形窗口分割成m × n 个区域,而k 为需要绘制图形区域的编号。如果m、n、k 均为一位数,则它们之间的逗号可以省略。还可以由图形窗口的Insert → Axes 菜单任意添加坐标系。
隐函数绘制及应用
隐函数即满足f(x, y) = 0 方程的x、y 之间的关系式。用前面介绍的曲线绘制方法显然会有问题。例如,很多隐函数无法求出x、y 之间的显式关系,所以无法先定义一个x向量再求出相应的y 向量,从而不能采用plot() 函数来绘制曲线。另外,即使能求出x、y 之间的显式关系,但不是单值绘制,则绘制起来也是很麻烦的。MATLAB下提供的ezplot()函数可以直接绘隐函数曲线,该函数的调用格式为ezplot(Fun,[xm,xM]),其中Fun 为隐函数的表达式,xm、xM 为用户选择的自变量范围,若省略这两个参数,则取默认区间为(−2
, 2
)。
图形修饰
MATLAB 的图形窗口工具栏中提供了各种图形修饰的功能,如在图形上添加箭头、文字及直线等,对图形的局部放大,三维图形的旋转等。典型的图形窗口如图2-9 所示。
图形编辑主要有三方面的内容,图形窗口左侧的部分对应于View 菜单下的Figure Palette,用户可以选择这里的工具在图形上添加箭头、各类文字及椭圆等修饰,还可以添加二维、三维坐标系。图形窗口下面的窗口对应于该菜单的Property Editor,允许修改选中对象的颜色、线形、字体等属性。右侧的窗口对应于View 菜单的Plot Browser(或单击按钮),允许用户从图上选择图形元素进行编辑,还允许用户添加新的数据,在现有的图形上叠印新的图形。
图形窗口的新工具栏提供了用鼠标选择图形上点坐标的功能(按钮),可以用其代替早期版本的ginput() 函数,读出曲线上点坐标的信息,该功能更适合于数学问题图解方法的实现。单击工具栏的图形旋转按钮,则可以将二维图形用三维图形表示,如图2-10 所示。
如果单击左侧的Text Box(添加文字)选项,则用鼠标在图形上单击则可以确定文字添加的位置,然后直接输入字符串即可。字符串可以用普通的字母和文字表
示,也可以用LATEX 的格式描述数学公式。


三维图形表示
三维曲线绘制
二维曲线绘制函数plot() 可以扩展到三维曲线的绘制中。这时可以用plot3() 函数绘制三维曲线。该函数的调用格式为
plot3(x,y,z)
plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,· · · ,xm,ym,zm,选项m)
其中“选项”和二维曲线绘制的完全一致,如表2-2 所示。
相应地,类似于二维曲线绘制函数,MATLAB 还提供了其他的三维曲线绘制函数,如stem3() 可以绘制三维火柴杆型曲线,fill3() 可以绘制三维的填充图形,bar3() 可以绘制三维的直方图等。
三维曲面绘制
[x,y] = meshgrid(v1,v2) % 生成网格数据
z = · · · ,如z = x.*y % 计算二元函数的z 矩阵
surf(x,y,z) 或mesh(x,y,z) % mesh() 绘制网格图,surf() 绘制表面图
其中,v1 和v2 向量为x 和y 轴的网格分隔方式。三维曲面还可以由其他函数绘制,如surfc() 函数和surfl() 函数可以分别绘制带有等高线和光照下的三维曲面,waterfall() 函数可以绘制瀑布形三维图形。在MATLAB 下还提供了等等高线绘制的函数,如contour() 函数和三维等高线函数contour3()。
三维图形视角设置
MATLAB 三维图形显示中提供了修改视角的功能,允许用户从任意的角度观察三维图形,实现视角转换有两种方法。其一是使用图形窗口工具栏中提供的三维图形转换按钮来可视地对图形进行旋转,其二是用view() 函数有目的旋转。
MATLAB 三维图形视角的定义如图2-16(a)所示。其中有两个角度就可以唯一地确定视角,方位角α 定义为视点在xoy 平面投影点与y 轴负方向之间的夹角,默认值为α = −37.5?,仰角β 定义为视点和xoy 平面的夹角,默认值为β = 30。。

如果想改变视角来观察曲面,则可以给出view(α,β)命令。例如,俯视图可以
由view(0,90) 设置,正视图由view(0,0) 设置,右视图由view(90,0) 来设定。