第4章Matlab绘图——Matlab语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现了可视化,这是其它语言所不能比拟的一、二维绘图(一)plot——最基本的二维图形指令plot命令自动打开一个图形窗口,如果已存在一个图形窗口,plot命令则清除当前图形,绘制新图形用直线连接相邻两数据点来绘制图形根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定坐标轴可设定曲线颜色和线型,可给图形加坐标网线和图形加注功能plot调用格式plot(x)——缺省自变量绘图格式,x为向量,以x元素值为纵坐标,以相应元素下标为横坐标绘图plot(x,y)——基本格式,以y(x)的函数关系作出直角坐标图,如果y为n×m的矩阵,则以x为自变量,作出m条曲线plot(x1,y1,x2,y2)——多条曲线绘图格式plot(x,y,’s’)——开关格式,开关量字符串s设定曲线颜色和绘图方式,使用颜色字符串的前1~3个字母,如yellow—yel表示等plot(x1,y1,’s1’,x2,y2,’s2’,…)绘图控制命令(1)曲线控制命令字符颜色字符颜色b蓝色m紫红色c青色r红色g绿色w白色k黑色y黄色颜色控制符线型控制符线型格式实线(默认)点线点划线虚线符号-:-.--标记符号数据点形式标记符号数据点形式.实心圆点大于号o(字母)空心圆点小于号x叉号s正方形+加号d菱形*星号h六角星v向下的三角形p五角星^向上的三角形数据点控制符颜色、线型、标记三种属性的符号必须放在同一个字符串内属性的先后顺序没有关系,可以只指定一两个属性,也可以全部缺省,但同种属性不能同时指定两个颜色控制符缺省为蓝色,线型控制符缺省为实线属性间不用间隔(2)图形的标注命令图形标注函数函数意义title(‘…’)给图形添加标题xlabel(‘…’)标记横坐标ylabel(‘…’)标记纵坐标legend(‘’,‘’,…)添加图例text(x,y,’…’)在x,y所定义的位置标注gtext(’…’)该命令提示在鼠标指定位置(光标显示为“+”标注)axis([xminxmaxyminymax])指定显示范围gridon(/off)添加或取消网格线例:t=0:0.1:10y1=sin(t);y2=cos(t);plot(t,y1,'r',t,y2,'b--');x=[1.7*pi;1.6*pi];y=[-0.3;0.8];s=['sin(t)';'cos(t)'];text(x,y,s);title('正弦和余弦曲线');legend(‘正弦’,‘余弦’);xlabel('时间t');ylabel('正弦、余弦');gridonaxissquare例在0≤x≤2区间内,绘制曲线y1=2e-0.5x和y2=cos(4πx),并给图形添加图形标注。程序如下:x=0:pi/100:2*pi;y1=2*exp(-0.5*x);y2=cos(4*pi*x);plot(x,y1,x,y2)title('xfrom0to2{\pi}');%加图形标题xlabel('VariableX');%加X轴说明ylabel('VariableY');%加Y轴说明text(0.8,1.5,'曲线y1=2e^{-0.5x}');%在指定位置添加图形说明text(2.5,1.1,'曲线y2=cos(4{\pi}x)');legend(‘y1’,‘y2’)%加图例例在同一坐标中,可以绘制2个同心圆,并加坐标控制。程序如下:theta=0:.01:2*pi;r1=10;r2=8;x1=cos(theta)*r1;y1=sin(theta)*r1;x2=cos(theta)*r2;y2=sin(theta)*r2;plot(x1,y1,x2,y2)axisequalgridon;%加网格线boxon;%加坐标边框axisequal%坐标轴采用等刻度(3)坐标控制axis函数的调用格式为:axis([xminxmaxyminymaxzminzmax])axis函数功能丰富,常用的格式还有:axisequal:纵、横坐标轴采用等长刻度。axissquare:产生正方形坐标系(缺省为矩形)。axisauto:使用缺省设置。axisoff:取消坐标轴。axison:显示坐标轴。给坐标加网格线用grid命令来控制。gridon/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。给坐标加边框用box命令来控制。boxon/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。单窗口单曲线绘图单窗口多曲线绘图单窗口多曲线分图绘图多窗口绘图二维绘图函数plot例在0≤x≤2区间内,绘制曲线y=2e-0.5xcos(4πx)程序如下:x=0:pi/100:2*pi;y=2*exp(-0.5*x).*cos(4*pi*x);plot(x,y)01234567-2-1.5-1-0.500.511.52单窗口单曲线绘图例绘制曲线程序如下:t=0:0.1:2*pi;x=t.*sin(3*t);y=t.*sin(t).*sin(t);plot(x,y);-6-4-2024600.511.522.533.544.55单窗口单曲线绘图单窗口多曲线绘图1.plot函数的输入参数是矩阵形式(1)当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同颜色的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。(2)当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。例t=0:pi/100:2*pi;y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);y3=cos(t);y4=cos(t+0.25);y5=cos(t+0.5);plot(t,[y',y1',y2',y3',y4',y5'])plot(t,[y;y1;y2;y3;y4;y5])2.含多个输入参数的plot函数调用格式为:plot(x1,y1,x2,y2,…,xn,yn)(1)当输入参数都为向量时,x1和y1,x2和y2,…,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。(2)当输入参数有矩阵形式时,配对的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。例:t=0:pi/100:2*pi;y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);plot(t,y,t,y1,t,y2)例在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx)和y2=2e-0.5xcos(πx)。程序如下:x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);plot(x,y1,x,y2);01234567-0.2-0.100.10.201234567-2-1012例分析下列程序绘制的曲线。x1=linspace(0,2*pi,100);x2=linspace(0,3*pi,100);x3=linspace(0,4*pi,100);y1=sin(x1);y2=1+sin(x2);y3=2+sin(x3);x=[x1;x2;x3]';y=[y1;y2;y3]';plot(x,y,x1,y1-1)02468101214-2-1.5-1-0.500.511.522.533.使用图形保持命令holdonholdon/off命令控制是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。例5-5采用图形保持,在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx)和y2=2e-0.5xcos(πx)。程序如下:x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);plot(x,y1)holdony2=2*exp(-0.5*x).*cos(pi*x);plot(x,y2);holdoff01234567-1.5-1-0.500.511.52单窗口多曲线分图绘图subplot——子图分割命令调用格式:subplot(m,n,p)——按从左至右,从上至下排列行列绘图序号例在图形窗口中,以子图形式同时绘制多根曲线。t=0:pi/100:2*pi;y1=sin(t);y3=sin(t+0.5);y2=cos(t);y4=cos(t+0.5);subplot(2,2,1);plot(t,y1)subplot(2,2,2);plot(t,y2)subplot(2,2,3);plot(t,y3)subplot(2,2,4);plot(t,y4)02468-1-0.500.5102468-1-0.500.5102468-1-0.500.5102468-1-0.500.51解x=linspace(0,2*pi,100);y=sin(x);z=cos(x);a=sin(x).*cos(x);b=sin(x)./(cos(x)+eps)subplot(2,2,1);plot(x,y),title(‘sin(x)’)subplot(2,2,2);plot(x,z),title(‘cos(x)’)subplot(2,2,3);plot(x,a),title(‘sin(x)cos(x)’)subplot(2,2,4);plot(x,b),title(‘sin(x)/cos(x)’)例将屏幕分割为四块,并分别画出y=sin(x),z=cos(x),a=sin(x)*cos(x),b=sin(x)/cos(x)多窗口绘图figure(n)——创建窗口函数,n为窗口顺序号。t=0:pi/100:2*pi;y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5);plot(t,y)——自动出现第一个窗口figure(2)plot(t,y1)——在第二窗口绘图figure(3)plot(t,y2)——在第三窗口绘图绘制函数图函数fplot调用格式:fplot(fname,lims,tol,选项)—其中fname为函数名,以字符串形式出现,lims为x,y的取值范围lims=[xminxmaxyminymax],tol为相对允许误差,其系统默认值为2e-3。选项定义与plot函数相同。fplot(fun,lims,'corline')—以指定线形绘图[x,y]=fplot(fun,lims)—只返回绘图点的值,而不绘图,可用plot(x,y)来绘图fplot('[sin(x),tan(x),cos(x)]',2*pi*[-11-11])fplot('humps',[01-10120],'rp')例用fplot函数绘制f(x)=cos(tan(πx))的曲线。命令如下:fplot('cos(tan(pi*x))',[0,1],1e-4)00.10.20.30.40.50.60.70.80.91-1-0.8-0.6-0.4-0.200.20.40.60.81ezplot调用格式:ezplot(f)—这里f为包含单个符号变量x的符号表达式,在x轴的默认范围[-2*pi2*pi]内绘制f(x)的函数图ezplot(f,[xminxmaxyminymax])—给定区间ezplot(f,[xmin,xmax],figure(n))—指定绘图窗口绘图绘制函数图函数ezplot('sin(x)')ezplot('sin(x)','cos(y)',[-4*pi4*pi],figure(2))sin()sincos()()xtytyx(2)对于隐函数f=f(x,y),ezplot函数的调用格式:ezplot(f):在默认区间-2πx2π和-2πy2π绘制f(x,y)=0的图形。ezplot(f,[xmin,xmax,ymin,ymax]):在区间xm