
本文共 4517 字,大约阅读时间需要 15 分钟。
强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多考虑绘图的细节,只需提供基本参数即可得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)视为独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。
本章将介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。
一、二维绘图
二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。
一、绘制二维曲线的基本函数
在Matlab中,最基本而且应用最为广泛的绘图函数为plot
,利用它可以在二维平面上绘制出不同的曲线。
1、plot
函数的基本用法
plot
函数用于绘制二维平面上的线性坐标曲线图,需要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。plot
函数的应用格式为:
plot(x, y)
其中,x和y为长度相同的向量,存储x坐标和y坐标。
2、含多个输入参数的plot
函数
plot
函数可以包含若干组向量对,每一组可以绘制出一条曲线。含多个输入参数的plot
函数调用格式为:
plot(x1, y1, x2, y2, ..., xn, yn)
例如:
x = linspace(0, 2*pi, 100);plot(x, sin(x), x, 2*sin(x), x, 3*sin(x))
3、含选项的plot
函数
Matlab提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。这些选项如表所示:
线型 | 颜色 | 标记符号 |
---|---|---|
- | b | . |
: | g | o |
- | r | × |
-- | c | + |
m | m | * |
y | y | > |
k | k | p |
w | w | h |
4、双纵坐标函数plotyy
在Matlab中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy
函数,它能把具有不同量纲,不同数量级的两个函数绘制在同一个坐标中,有利于图形数据的对比分析。使用格式为:
plotyy(x1, y1, x2, y2)
其中,x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左边的对应x1,y1数据对,右边的对应x2,y2。
二、绘制图形的辅助操作
绘制完图形以后,可能还需要对图形进行一些辅助操作,以使图形意义更加明确,可读性更强。
1、图形标注
在绘制图形时,可以对图形加上一些说明,如图形的名称、坐标轴说明以及图形某一部分的含义等。有关图形标注函数的调用格式为:
title('图形名称')
xlabel('x轴说明')
ylabel('y轴说明')
text(x, y, '图形说明')
gtext('string')
legend('图例1', '图例2', ...)
其中,title
、xlabel
和ylabel
函数分别用于说明图形和坐标轴的名称。text
函数是在坐标点(x, y)处添加图形说明。(P88或用gtext
命令)。legend
函数用于绘制曲线所用线型、颜色或数据点标记图例,图例放置在空白处,用户还可以通过鼠标移动图例,将其放到所希望的位置。
2、坐标控制
在绘制图形时,Matlab可以自动根据要绘制曲线数据的范围选择合适的坐标刻度,使得曲线能够尽可能清晰地显示出来。所以,一般情况下用户不必选择坐标轴的刻度范围。但是,如果用户对坐标不满意,可以利用axis
函数对其重新设定。其调用格式为:
axis([xmin xmax ymin ymax zmin zmax])
如果只给出前四个参数,则按照给出的x、y轴的最小值和最大值选择坐标系范围,绘制出合适的二维曲线。如果给出了全部参数,则绘制出三维图形。
axis
函数的功能丰富,其常用的用法有:
axis equal
:纵横坐标轴采用等长刻度axis square
:产生正方形坐标系(默认为矩形)axis auto
:使用默认设置axis off
:取消坐标轴axis on
:显示坐标轴
还有:给坐标加网格线可以用grid
命令来控制,grid on/off
命令控制画还是不画网格线,不带参数的grid
命令在两种之间进行切换。给坐标加边框用box
命令控制,和grid
一样用法。
3、图形保持
一般情况下,每执行一次绘图命令,就刷新一次当前图形窗口,图形窗口原有图形将不复存在。如果希望在已经存在的图形上再继续添加新的图形,可以使用图形保持命令hold
。hold on/off
命令是保持原有图形还是刷新原有图形,不带参数的hold
命令在两者之间进行切换。
4、图形窗口分割
在实际应用中,经常需要在一个图形窗口中绘制若干个独立的图形,这就需要对图形窗口进行分割。分割后的图形窗口由若干个绘图区组成,每一个绘图区可以建立独立的坐标系并绘制图形。同一图形窗口下的不同图形称为子图。Matlab提供了subplot
函数用来将当前窗口分割成若干个绘图区,每个区域代表一个独立的子图,也是一个独立的坐标系,可以通过subplot
函数激活某一区,该区为活动区,所发出的绘图命令都是作用于该活动区域。调用格式为:
subplot(m, n, p)
其中,m行,每行n个绘图区,区号按行优先编号,第p个区为当前活动区。每一个绘图区允许以不同的坐标系单独绘制图形。
二、三维绘图
一、绘制三维曲线的基本函数
最基本的三维图形函数为plot3
,它将二维绘图函数plot
的有关功能扩展到三维空间,可以用来绘制三维曲线。其调用格式为:
plot3(x1, y1, z1, opt1, x2, y2, z2, opt2, ...)
其中每一组x, y, z组成一组曲线的坐标参数,选项的定义和plot
的选项一样。当x, y, z是同维向量时,则x, y, z对应元素构成一条三维曲线。当x, y, z是同维矩阵时,则以x, y, z对应列元素绘制三维曲线,曲线条数等于矩阵的列数。
二、绘制三维曲面的函数
1、平面网格坐标矩阵的生成
当绘制z=f(x, y)所代表的三维曲面图时,先要在xy平面选定一个矩形区域,假定矩形区域为D=[a, b]×[c, d],然后将[a, b]在x方向分成m份,将[c, d]在y方向分成n份,由各划分点做平行轴的直线,把区域D分成m×n个小矩形。生成代表每一个小矩形顶点坐标的平面网格坐标矩阵。
产生平面区域内的网格坐标矩阵有两种方法:
- 利用矩阵运算生成:
x = a:dx:b;y = c:dy:d';X = ones(size(y)) * x;Y = y * ones(size(x));
- 使用
meshgrid
函数生成:
x = a:dx:b;y = c:dy:d;[X, Y] = meshgrid(x, y);
2、绘制三维曲面的函数
Matlab提供了mesh
函数和surf
函数来绘制三维曲面图。mesh
函数用来绘制三维网格图,而surf
用来绘制三维曲面图,各线条之间的补面用颜色填充。其调用格式为:
mesh(x, y, z, c)
surf(x, y, z, c)
一般情况下,x, y, z是维数相同的矩阵,x, y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围,省略时,Matlab认为c=z,也即颜色的设定是正比于图形的高度的。这样就可以得到层次分明的三维图形。当x, y省略时,把z矩阵的列下标当作x轴的坐标,把z矩阵的行下标当作y轴的坐标,然后绘制三维图形。当x, y是向量时,要求x的长度必须等于z矩阵的列,y的长度必须等于必须等于z的行,x, y向量元素的组合构成网格点的x, y坐标,z坐标则取自z矩阵,然后绘制三维曲线。
三、标准三维曲面
Matlab还提供了一些函数用于绘制标准三维曲面,这些函数可以产生相应的绘图数据,常用于三维图形的演示。如,sphere
函数和cylinder
函数分别用于绘制三维球面和柱面。sphere
函数的调用格式为:
[x, y, z] = sphere(n);
该函数将产生(n+1)×(n+1)矩阵x, y, z。采用这三个矩阵可以绘制出圆心位于原点、半径为1的单位球体。若在调用该函数时不带输出参数,则直接绘制所需球面。n决定了球面的圆滑程度,其默认值为20。若n值取的比较小,则绘制出多面体的表面图。
cylinder
函数的调用格式为:
[x, y, z] = cylinder(R, n)
其中R是一个向量,存放柱面各个等间隔高度上的半径,n表示在圆柱圆周上有n个间隔点,默认有20个间隔点。如:cylinder([10, 1])
生成一个圆锥。
四、三维图形的精细处理
1、视点处理
在日常生活中,从不同的角度观察物体,所看到的物体形状是不一样的。同样,从不同视点绘制的三维图形的形状也是不一样的。视点位置可由方位角和仰角表示。
Matlab提供了设置视点的函数view
,其调用格式为:
view(az, el)
其中az为方位角,el为仰角,它们均以度为单位。系统默认的视点定义为方位角为-37.5度,仰角30度。
2、色彩处理
3、图形的裁剪处理
Matlab定义的NaN常数可以用于表示那些不可使用的数据,利用这些特性,可以将图形中需要裁剪部分对应的函数值设置成NaN,这样在绘制图形时,函数值为NaN的部分将不显示出来,从而达到对图形进行裁剪的目的。
4、隐函数作图
如果给定了函数的显式表达式,可以先设置自变量向量,然后根据表达式计算函数向量,从而用plot
等函数绘制出图形。但是当函数采用隐函数形式时,如:,则很难利用上述方法绘制图形。Matlab提供了一个ezplot
函数绘制隐函数图形。用法如下:
- 对于函数f=f(x),
ezplot
的调用格式为:
ezplot(f)
在默认区间(-2pi,2pi)绘制图形。
ezplot(f, [a, b])
在区间(a, b)绘制图形。
- 对于隐函数f=f(x, y),
ezplot
的调用格式为:
ezplot(f, [xmin, xmax, ymin, ymax])
在区间(xmin, xmax)和(ymin, ymax)绘制f(x, y)=0的图形。
ezplot(f, [a, b])
在区间(a, b)和(a, b)绘制图形。
- 对于参数方程x=x(t), y=y(t),
ezplot
函数的调用格式为:
ezplot(x, y)
在默认区间绘制x=x(t), y=y(t)图形。
ezplot(x, y, [tmin, tmax])
在区间(tmin, tmax)绘制x=x(t), y=y(t)图形。
Matlab还提供了其他隐函数绘图函数,如ezpolar
、ezcontour
、ezplot3
、ezmesh
、ezmeshc
、ezsurf
、ezsurfc
等。
发表评论
最新留言
关于作者
