文章目录
前言
在经过前面这段时间的学习之后,已经能够熟练运用MATLAB进行程序设计和数值计算了,但数值计算终归是一个个离散的数据,不论它有多么的完善,多么的准确,我们还是难以直接从大量的数据中感受它们的具体含义和内在规律。人们更喜欢通过图形直观感受科学计算结果的全局意义和许多内在本质,这就不得不用到MATLAB的另一个功能了,强大的图形绘制能力。
MATLAB具有强大的图形表达功能,既可以绘制二维图形,又可以绘制三维图形,还可以通过标注、视点、颜色、光照等操作对图形进行修饰。MATLAB有两类绘图命令,一类是直接对图形句柄进行操作的底层绘图命令,另一类是在底层命令上建立起来的高层绘图命令。我们主要学习高层绘图命令,高层绘图命令简单明了、方便高效。
一、二维数据曲线图
二维数据曲线图是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,除直角坐标系外,还可以采用对数坐标、极坐标等。数据点可以用向量或矩阵形式给出,类型可以是实数类型或者复数类型。
1.1、单条二维曲线绘制
在MATLAB中,绘制直角坐标系下的二维曲线可以利用plot函数,该函数应用较为广泛。
plot函数的调用格式为:
plot(x,y)
其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。plot函数用于绘制分别以x为横坐标和y为纵坐标的二维曲线,y(i)是x(i)点的函数值。
1.2、多条二维曲线绘制
1、plot函数的输入参数是矩阵形式:
当plot函数的输入参数是向量时,绘制单根曲线,这是最基本的用法。但在实际应用中,plot函数的输入参数可以是矩阵形式,这时将在同一坐标系中以不同颜色绘制多根曲线。
① 当x是向量,y是由一维与x同维的矩阵时,则绘制出多根不同颜色的曲线,曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。
② 当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。
③ 对只包含一个输入参数的plot函数,当输入参数是实矩阵时,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数。
2、含多个输入参数的plot函数
plot函数可以包含若干组向量对,每一个向量对可以绘制出一条曲线。
含多个输入参数的plot函数调用格式为:
plot(x1,y1,x2,y2,x3,y3,......xn,yn)
① 当输入参数都为向量时,x1和y1,x2和y2分别组成一组向量对,每一组向量对的长度可以不同,每一组向量对可以绘制出一条曲线,这样就可以在同一坐标系中绘制多条曲线了。
② 当输入参数有矩阵时,配对的x,y按对应列元素为横、宗坐标分别绘制曲线,曲线条数等于矩阵的列数。
3、图形保持
一般情况下,MATLAB绘图命令每执行一次就刷新当前图形窗口,图形窗口原来的图形就不存在了,若希望在已经存在的图形上再继续添加新的图形,可以使用图形保持命令hold。hold on命令是保持原有图形,hold off是刷新原有图形。
1.3、设置曲线样式
当我们在MATLAB中绘制多条曲线时,为了更好地区分曲线,曲线的颜色和类型是一个很好的方法。MATLAB提供了一些绘图选项,分别用于曲线的颜色以及曲线样式,如下表所示:
① 曲线线型选项:
符号 |
线型 |
符号 |
线型 |
- |
实线(默认) |
-. |
点划线 |
: |
虚线 |
-- |
双划线 |
② 曲线颜色选项:
符号 |
颜色 |
符号 |
颜色 |
b (blue) |
蓝色 |
m (magenta) |
品红色 |
g (green) |
绿色 |
y (yellow) |
黄色 |
r (red) |
红色 |
k (black) |
黑色 |
c (cyan) |
青色 |
w (white) |
白 |
③ 标记符号选项:
选项 |
标记符号 |
选项 |
标记符号 |
. |
点 |
∨ |
朝下三角符号 |
O(字母) |
圆圈 |
∧ |
朝上三角符号 |
X(字母) |
叉号 |
< |
朝左三角符号 |
+ |
加号 |
> |
朝右三角符号 |
* |
星号 |
p (pentagram) |
五角星符号 |
s (square) |
方块符 |
h (hexagram) |
六角星符号 |
d (diamond) |
菱形符 |
如上图所示,曲线y1是默认值(即蓝色实线),曲线y2是黑色虚线,在曲线y1和y2相交的地方(x值相等)用蓝色的五角星符号标注了出来。这样的曲线在同一个坐标系中展现出来,我们看起来就一目了然了。
1.4、图形标注与坐标控制
1、图形标注:
在绘制图形的同时,可以对图形加上一些说明,如图形名称、坐标轴说明以及图形某一部分的含义等,这些操作称为添加图形标注,以使图形意义更加明确,可读性更强。
有关图形标注函数的调用格式为:
① title(图形名称)
② ylabel(y轴说明)
③ xlabel(x轴说明)
④ zlabel(z轴说明)
⑤ text(x,y,图形说明)
⑥ legend(图例1,图例2,......)
title和xlabel,ylabel,zlabel函数分别用于说明图形和坐标轴的名称。text函数是在(x,y)坐标处添加图形说明。legend函数用于绘制曲线所用线型、颜色或数据点标记图例,图例放置在图形空白处,还可以通过鼠标移动图例。
如上图所示,在绘制图形时我们添加了图形说明,以及坐标轴说明和曲线说明,这样我们就能知道这样两条曲线分别是哪个函数的曲线了,也有利于我们做数学分析。
2、坐标控制
我们在绘制图形时,MATLAB可以自动根据要绘制曲线数据的范围选择合适的坐标刻度,使得曲线能够尽可能清晰地显示出来,所以一般情况下不用考虑坐标的刻度范围。如果在特殊情况下用户需要选择坐标的刻度范围,可以用axis函数进行设置,该函数的调用格式为:axis([xmin xmax ymin ymax zmin zmax])。其参数分别是x轴,y轴和z轴的最小值和最大值。除此之外,axis函数还有许多功能,常用的格式有:
axis函数常用格式:
① axis equal:纵、横坐标轴采用等长刻度
② axis square:产生正方形坐标系(缺省为矩形)
③ axis auto :使用缺省设置
④ axis off :取消坐标系
⑤ axis on :显示坐标系
除了以上这些用来设置坐标的显示范围的函数之外,还可以给坐标加网格线,用grid命令控制,grid on/off命令控制是否画网格线;给坐标加边框可以用box命令控制,box on/off命令控制是否给坐标加边框。
1.5、自适应采样绘图
前面我们学习了plot绘图函数,该函数的基本原理为先取足够稠密的自变量向量x,然后计算函数值向量y,最后用绘图函数进行绘图,这样绘制出来的函数图形是等间隔采样的,只适用于对精度要求不高的情况。但如果对曲线的精度要求很好,采样这样等间隔采样的方法就不可行了,这时就需要在变化率大的区段密集采样,以充分反映出函数的实际变化规律,而fplot函数就能很好地实现此功能,提高图形的真实性。
fplot函数的调用格式为:
fplot(@(自变量)fname,lims,选项)
其中@()括号里面是自变量,比如@(x),fname为函数名,以字符串形式出现;lims为x,y的取值范围,以行向量形式出现;选项定于为曲线颜色、样式等。
如上图所示为fplot函数绘制的一个图形,其中自变量为x,函数名为cos(tan(pi*x)),显示范围是0到1,选项类型是用红色的横线绘制。
1.6、图形窗口的分割
在实际应用中,经常需要在一个图形窗口内绘制若干个独立的图形,这时就需要对图形窗口进行分割了。分割过后的图形窗口会展现出若干个绘图区,每一个绘图区都可以建立一个独立的坐标系并绘制图形。在图形窗口分割中,MATLAB提供了subplot函数,其调用格式为:subplot(m,n,p),该函数将当前图形窗口分割成m*n个绘图区,p代表当前绘图区。
二、其他二维图形绘制
前面我们讲了直角坐标系下的二维图形绘制,但二维图形除了采用直角坐标系外,还可以采用对数坐标系或者极坐标系等等,下面就一起来学习对数坐标系或极坐标系下的二维数据曲线绘制吧!
① 对数坐标系绘图:
semilogx(x1,y1,选项1,x2,y2,选项2,......)
semilogy(x1,y1,选项1,x2,y2,选项2,......)
loglog(x1,y1,选项1,x2,y2,选项2,......)
其中选项的定义与plot函数完全一致,所不同的是坐标轴的选取;semilogx函数使用半对数坐标,x轴为常用对数刻度,而y轴保持线性刻度;semilogy也是使用半对数坐标系,y轴为常用对数刻度,而x轴保持线性刻度;loglog函数使用全对数坐标系,x,y轴均采用常用对数刻度。
② 极坐标系绘图:
polar(theta,rho,选项)
其中theta为极坐标极角,rho为极坐标矢径,选项的内容与plot函数一样。
③ bar(x,y,选项) :条形图
④ stairs(x,y,选项) :阶梯图
⑤ stem(x,y,选项) :杆状图
⑥ fill(x1,y1,选项1,x2,y2,选项2,......)
总结
今天的MATLAB学习就到这里吧,本次学习了二维图形绘制,包括直角坐标系和其他坐标系的二维图形绘制,还学习了图形的标注、图形显示范围等内容,其中直接坐标系下的二维图形绘制是我们经常用到的,可以多应用例子来加深印象。