1、MATLAB 绘图教程强大的绘图功能是 Matlab 的特点之一,Matlab 提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab 还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。 本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。第一节 二维绘图二维图形是将平面坐标上的数据
2、点连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。一、绘制二维曲线的基本函数在 Matlab 中,最基本而且应用最为广泛的绘图函数为 plot,利用它可以在二维平面上绘制出不同的曲线。1 plot 函数的基本用法plot 函数用于绘制二维平面上的线性坐标曲线图,要提供一组 x 坐标和对应的 y坐标,可以绘制分别以 x 和 y 为横、纵坐标的二维曲线。plot 函数的应用格式为:plot(x,y) 其中 x, y 为长度相同的向量,存储 x 坐标和 y 坐标。例 1 在0 , 2pi区间,绘制曲线程序如下:在命令窗口中输入以下命令 x
3、=0:pi/100:2*pi; y=2*exp(-0.5*x).*sin(2*pi*x); plot(x,y)程序执行后,打开一个图形窗口,在其中绘制出如下曲线注意:指数函数和正弦函数之间要用点乘运算,因为二者是向量。例 2 绘制曲线这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出 x, y 向量即可输出曲线: t=-pi:pi/100:pi; x=t.*cos(3*t); y=t.*sin(t).*sin(t); plot(x,y)程序执行后,打开一个图形窗口,在其中绘制出如下曲线以上提到 plot 函数的自变量 x, y 为长度相同的向量,这是最常见、最基本的用法。实际应用中还有
4、一些变化。2 含多个输入参数的 plot 函数plot 函数可以包含若干组向量对,每一组可以绘制出一条曲线。含多个输入参数的 plot 函数调用格式为:plot(x1,y1,x2,y2,xn,yn)如下列命令可以在同一坐标中画出 3 条曲线。 x=linspace(0,2*pi,100); plot(x,sin(x),x,2*sin(x),x,3*sin(x)当输入参数有矩阵形式时,配对的 x, y 按对应的列元素为横坐标和纵坐标绘制曲线,曲线条数等于矩阵的列数。 x=linspace(0,2*pi,100); y1=sin(x); y2=2*sin(x); y3=3*sin(x); x=x;
5、x;x; y=y1;y2;y3; plot(x,y,x,cos(x)x, y 都是含有三列的矩阵,它们组成输入参数对,绘制三条曲线;x 和 cos(x)又组成一对,绘制一条余弦曲线。利用 plot 函数可以直接将矩阵的数据绘制在图形窗体中,此时 plot 函数将矩阵的每一列数据作为一条曲线绘制在窗体中。如: A=pascal(5)A =1 1 1 1 11 2 3 4 51 3 6 10 151 4 10 20 351 5 15 35 70 plot(A)3 含选项的 plot 函数Matlab 提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。这些选项如表所示:线型 颜色 标
6、记符号- 实线 b 蓝色 . 点 s 方块: 虚线 g 绿色 o 圆圈 d 菱形-. 点划线 r 红色 叉号 朝下三角符号- 双划线 c 青色 + 加号 朝上三角符号m 品红 * 星号 朝右三角符号k 黑色 p 五角星w 白色 h 六角星例 用不同的线型和颜色在同一坐标内绘制曲线 及其包络线。 x=(0:pi/100:2*pi); y1=2*exp(-0.5*x)*1,-1; y2=2*exp(-0.5*x).*sin(2*pi*x); x1=(0:12)/2; y3=2*exp(-0.5*x1).*sin(2*pi*x1); plot(x,y1,k:,x,y2,b-,x1,y3,rp);在该
7、 plot 函数中包含了 3 组绘图参数,第一组用黑色虚线画出两条包络线,第二组用蓝色双划线画出曲线 y,第三组用红色五角星离散标出数据点。4 双纵坐标函数 plotyy在 Matlab 中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用 plotyy函数,它能把具有不同量纲,不同数量级的两个函数绘制在同一个坐标中,有利于图形数据的对比分析。使用格式为:plotyy(x1,y1,x2,y2) x1,y1 对应一条曲线,x2,y2 对应另一条曲线。横坐标的标度相同,纵坐标有两个,左边的对应 x1,y1 数据对,右边的对应 x2,y2。例:(略)二、绘制图形的辅助操作绘制完图形以后,可能还需
8、要对图形进行一些辅助操作,以使图形意义更加明确,可读性更强。1 图形标注在绘制图形时,可以对图形加上一些说明,如图形的名称、坐标轴说明以及图形某一部分的含义等,这些操作称为添加图形标注。有关图形标注函数的调用格式为:title(图形名称 ) (都放在单引号内)xlabel(x 轴说明 )ylabel(y 轴说明 )text(x,y, 图形说明)legend(图例 1,图例 2,) 其中,title 、xlabel 和 ylabel 函数分别用于说明图形和坐标轴的名称。text 函数是在坐标点(x,y)处添加图形说明。legend 函数用于绘制曲线所用线型、颜色或数据点标记图例,图例放置在空白处
9、,用户还可以通过鼠标移动图例,将其放到所希望的位置。除 legend 函数外,其他函数同样适用于三维图形,在三维中 z 坐标轴说明用zlabel 函数。上述函数中的说明文字,除了使用标准的 ASCII 字符外,还可以使用 LaTex(一种流行的数学排版软件)格式的控制字符,这样就可以在图形上添加希腊字符,数学符号和公式等内容。在 Matlab 支持的 LaTex 字符串中,用bf , it , rm 控制字符分别定义黑体、斜体和正体字符,受 LaTex 字符串控制部分要加大括号括起来。例如,text(0.3,0.5, the usful bf MATLAB),将使 MATLAB 一词黑体显示。
10、一些常用的LaTex 字符见表,各个字符可以单独使用也可以和其他字符及命令配合使用。如text(0.3 ,0.5 ,sin(omegat+beta)将得到标注效果 。标识符 符号 标识符 符号 标识符 符号alpha epsilon inftybeta eta intgamma Gamma partialdelta Delta leftarrowtheta Theta rightarrowlambda Lambda downarrowxi Xi uparrowpi Pi divomega Omega timessigma Sigma pmphi Phi leqpsi Psi geqrho ta
11、u neqmu zeta forallnu chi exists2、坐标控制在绘制图形时,Matlab 可以自动根据要绘制曲线数据的范围选择合适的坐标刻度,使得曲线能够尽可能清晰的显示出来。所以,一般情况下用户不必选择坐标轴的刻度范围。但是,如果用户对坐标不满意,可以利用 axis 函数对其重新设定。其调用格式为:axis(xmin xmax ymin ymax zmin zmax)如果只给出前四个参数,则按照给出的 x、y 轴的最小值和最大值选择坐标系范围,绘制出合适的二维曲线。如果给出了全部参数,则绘制出三维图形。axis 函数的功能丰富,其常用的用法有:axis eq l :纵横坐标轴采
12、用等长刻度axis sq re:产生正方形坐标系(默认为矩形)axis auto:使用默认设置axis off:取消坐标轴axis on :显示坐标轴还有:给坐标加网格线可以用 grid 命令来控制,grid on/off 命令控制画还是不画网格线,不带参数的 grid 命令在两种之间进行切换。给坐标加边框用 box 命令控制。和 grid 一样用法例 :绘制分段函数,并添加图形标注。(略)3、 图形保持一般情况下,每执行一次绘图命令,就刷新一次当前图形窗口,图形窗口原有图形将不复存在,如果希望在已经存在的图形上再继续添加新的图形,可以使用图形保持命令 hold。hold on/off 命令是
13、保持原有图形还是刷新原有图形,不带参数的 hold 命令在两者之间进行切换。例:(略)4、 图形窗口分割在实际应用中,经常需要在一个图形窗口中绘制若干个独立的图形,这就需要对图形窗口进行分割。分割后的图形窗口由若干个绘图区组成,每一个绘图区可以建立独立的坐标系并绘制图形。同一图形窗口下的不同图形称为子图。Matlab 提供了subplot 函数用来将当前窗口分割成若干个绘图区,每个区域代表一个独立的子图,也是一个独立的坐标系,可以通过 subplot 函数激活某一区,该区为活动区,所发出的绘图命令都是作用于该活动区域。调用格式:subplot(m,n,p)该函数把当前窗口分成 mn 个绘图区,
14、m 行,每行 n 个绘图区,区号按行优先编号。其中第 p 个区为当前活动区。每一个绘图区允许以不同的坐标系单独绘制图形。例:(略)三、绘制二维图形的其他函数1 其他形式的线性直角坐标图在线性直角坐标中,其他形式的图形有条形图、阶梯图、杆图和填充图等,所采用的函数分别为:bar( x,y,选项) 选项在单引号中stairs(x,y,选项)stem(x,y,选项)fill( x1,y1,选项 1,x2,y2,选项 2,)前三个函数和 plot 的用法相似,只是没有多输入变量形式。fill 函数按向量元素下标渐增次序依次用直线段连接 x,y 对应元素定义的数据点。例 5-8:分别以条形图、填充图、阶
15、梯图和杆图形式绘制曲线x=0:0.35:7;y=2*exp(-0.5*x);subplot(2,2,1);bar(x,y,g);title(bar(x,y,g);axis(0, 7, 0 ,2);subplot(2,2,2);fill(x,y,r);title(fill(x,y,r);axis(0, 7, 0 ,2);subplot(2,2,3);stairs(x,y,b);title(stairs(x,y,b);axis(0, 7, 0 ,2);subplot(2,2,4);stem(x,y,k);title(stem(x,y,k);axis(0, 7, 0 ,2);2 极坐标图polar
16、函数用来绘制极坐标图,调用格式为:polar(theta ,rho,选项)其中,theta 为极坐标极角,rho 为极径,选项的内容和 plot 函数相似。例 5-9:绘制 的极坐标图theta=0:0.01:2*pi;rho=sin(3*theta).*cos(5*theta);polar(theta,rho,r);3 对数坐标图在实际应用中,经常用到对数坐标,Matlab 提供了绘制对数和半对数坐标曲线的函数,其调用格式为: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 恰好和semilogx 相反。loglog 函数使用全对数坐标,x、y 轴均采用对数刻度。例:略4 对函数自适应采样的绘图函数5 其他形式的二维图形