资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,*,Matlab,作图入门教程,MATLAB7.0,不仅具有强大的数值计算功能,在数据可视化方面也是独占鳌头,可以满足同学们各方面的需求。对大家来说,抽象的数据往往是晦涩难懂的;但,MATLAB,通过图形编辑窗口和绘图函数方便地绘制二维、三维甚至多维图形,把杂乱离散的数据以形象的图形显示出来,有助于大家了解数据的性质和内在联系。,Matlab,绘图,Matlab,绘图,如何画出,ysin(x),在,0,2*,pi,上的图像?,手工作图,找点:,x=0,pi/3,pi/2,2*pi/3,pi,计算函数值:,y=sin(0),sin(pi/3),sin(pi/2),描点:在坐标系中画出这些离散点,用直线或曲线连接这些点,得到函数的大致图形,Matlab,绘图,Matlab,作图,Matlab,绘图,给出离散点列:,x=0:pi/10:2*pi,计算函数值:,y=sin(x),画图:,matlab,二维绘图命令,plot,作出函数图形,plot(x,y,),例,:,x=,0:pi/10:2*pi,;,y=sin(x);,plot(x,y);,在,MATLAB,中用图形函数绘图的一般操作步骤分为,7,步,如表所示,下面以绘制一个简单三角函数的图形为例,详细介绍各个步骤。,【,例,】,用图形表示,(,1,)准备图形数据,图形是数据变换规律和相互联系的形象显示,所以,数据输入是图形创建的基础,我们需要选定数据的范围,,选择对应范围的自变量,计算相应的函数值。本例中,,我们需在命令窗口输入如下代码:,x=,-pi/2:.1:pi/2;,y=,cos(x)-sin(x,);,Matlab,绘图步骤,(,2,)选择图形的显示位置,系统默认图形窗口为,Figure1,,,如果大家需要在图形窗口中并列显示多个窗口,这需要使用,subplot,指令来选择子图号。如果大家需要把图形窗口定义为,Figure6,,,并且分为,3*2=6,个子窗口,使得本例函数图形显示在图形窗口的左下角,那么大家需要在命令窗口中输入以下代码:,figure(6);,Subplot(3,2,5),Matlab,绘图步骤,(,3,)调用绘图指令并设置参数,此步是,主要绘图步骤,,调用,plot,函数绘制图形,plot(x,y,),(,4,)选择线性和标记属性,此步可以单独使用图形句柄设置,也可以与步骤,(,3,),同时进行,选择图形的线性、颜色及数据点型等参数,形成,图形概貌,如果大家希望用,黑色点线“,-.,”,来绘制本例函数,,并,使用,“,*,”,标注点型,,则可输入,plot(x,y,k,-.*),Matlab,绘图步骤,(,5,)设置坐标范围及网格线,完成基本绘制后,在图形概貌的基础上对图形进行编辑,增强图形的可读性;一般说来,大家需要设置坐标轴的刻度范围和分隔线。本例系统默认的坐标轴范围是,x,y-2,2,且没有网格线,将本例的坐标轴和坐标轴的范围分别设置为,-,和,且给坐标加上分隔线,可以输入以下代码:,axis(-,pi,pi,-4,4),grid on,Matlab,绘图步骤,(,6,)给图形加注释,为了进一步使图形具有说服力和可读性,我们还经常给图形添加注释,例如图形的名称、坐标轴的名称、图例及文字说明,针对本例图形,给图形取名为“,first figure,”,x,和,y,坐标轴分别取名,“横”、“纵”,图例设置为“,y=,cos(x)-sin(x,),”,并在,(,pi/2,-1,),点加上文字说明“,final point,”,,输入以下代码:,title(first,figure);,xlabel(,横,),;,ylabel(,纵,),;,legend(y,=,cos(x)-sin(x,);,text(pi/2,-1,final point);,Matlab,绘图步骤,(,7,)图形输出,大家完成图形的绘制和编辑以后,需要将图形打印或是存放在其他文档中,最简单的方法是使用,【,file,】,菜单中的,【,save as,】,选项,并且大家可以自行选择需要保存的格式类型。,Matlab,绘图步骤,Matlab,二维作图,plot(x,y),基本形式,x,y,都是,向量,,则以,x,中元素为横坐标,,y,中元素为纵坐标作平面曲线。此时,x,y,必须,具有相同长度,。,plot,举例,x=,0:0.1:4*pi,;,y=,cos(x,);,plot(x,y);,例:,y=,cos(x,),在,0,4,上的图像,自己动手,在,0 x2,区间内,绘制曲线,y=2e,-0.5x,cos(4x),程序如下:,x=0:pi/100:2*pi;,y=2*exp(-0.5*x,),.,*,cos(4*pi*x);,plot(x,y,),【,例,】,在,0 x2,区间内,绘制曲线,y=2e,-0.5x,cos(4x),此点必加,Matlab,二维作图,plot(x,y),基本形式,x,y,都是,向量,,则以,x,中元素为横坐标,,y,中元素为纵坐标作平面曲线。,此时,x,y,必须具有相同长度。,当,x,y,是,同维矩阵,时,则以,x,y,对应列元素为,横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。,此时,x,y,必须具有相同的大小。,x,是向量,y,是矩阵,,若,x,的长度与,y,的行数相等,则将,x,与,y,中的各列相对应,绘制多条平面曲线;,若,x,的长度与,y,的列数相等,则将,x,与,y,中的各行相对应,绘制多条平面曲线。,此时,x,的长度必须等于,y,的行数或列数。,指出以下各个绘图命令的输出图形分别是什么,并上机验证,t=,0 1,;x=1 2;y=x;3 4;z=y;5 6;,plot(t,x);,plot(t,y);,plot(t,y,);,plot(t,z);,plot(t,z,);,Matlab,二维作图,plot(y,),:,绘制,向量,y,中,元素的线性图,基本形式,(续),(1)Y,为实向量,则以,Y,的索引坐标作为横坐标,,Y,作为,纵坐标来绘制图形。例:,y=rand(100,1);,plot(y,),(2),如果,Y,为复数向量,则以向量的实部作为横坐标,虚部作为纵坐标,来绘制图形。例:,x=rand(100,1);,z=,x+y,.*i;,plot(z,),例,:,y=,0,0.48,0.84,1,0.91,6.14,;,plot(y);,figure(2);plot(1:length(y),y),自己动手,x=1:length(y);plot(x,y);,以下标为横坐标,元素值为纵坐标,,等价于:,plot(Y),:,当,Y,是矩阵时的图形是什么?,Y=1 2;3 5;6 9;plot(Y);,plot(Y);,此例不错,具有两个纵坐标标度的图形,在,MATLAB,中,如果需要绘制出,具有不同纵坐标标度,的,两个,图形,可以使用,plotyy,绘图函数。调用格式为:,plotyy(x1,y1,x2,y2),其中,x1,y1,对应一条曲线,,x2,y2,对应另一条曲线。,横坐标的标度相同,纵坐标有两个,,左纵坐标用于,x1,y1,数据对,右纵坐标用于,x2,y2,数据对。,【,例,】,用不同标度在同一坐标内绘制曲线:,y1=0.2e,-0.5x,cos(4x),y2=2e,-0.5x,cos(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);,plotyy(x,y1,x,y2);,点和线的基本属性,图形的属性,plot,(x,y,string),其中,string,是用,单引号,括起来的字符串,用来指定图形的属性,(点、线的形状和颜色),属性可以全部指定,也可以只指定其中某几个,排列顺序任意,红色、虚线、离散点用加号,蓝色、点划线离散点为菱形,黑色、实线离散点用星号,x=0:0.2:2*pi;,plot(x,cos(x,);,plot(x,cos(x),r,+:,);,plot(x,cos(x),bd,-.,);,plot(x,cos(x),k,*-,);,plot(X,Y,s,),s,参数:,-,实线,.,点 *星号,上三角,:点线,o,圆,s,方形,右三角,-,虚线,+,号,v,下三角,p,正五边形,y,黄色,m,紫红色,c,蓝绿色,r,红色,g,绿色,b,蓝色,w,白色,k,黑色,上述参数的不同组合可以为图形设置不同的线形、颜色和标识,调用时以,单引号,来引用,,各选项直接相连,,不需要分隔符。,【,例,】,x=0:0.1*pi:pi;,y=sin(x);,z=cos(x);,plot(x,y,-k,x,z,-.rd),图形标注与坐标控制,有关图形标注函数的调用格式为:,title(,图形名称,),xlabel(x,轴说明,),ylabel(y,轴说明,),text(x,y,图形说明,),legend(,图例,1,图例,2,),图形的其他属性,图形的其他属性,标题,title,(text),例,title,(,text,Property1,value1,Property2,value2,.),Property:,linewidth,markersize,fontsize,fontweight,fontname,可以指定文本的属性,图形的其他属性,坐标轴标注,xlabel,(,text,),或,ylabel,(,text,),例,:,图形的其他属性,添加图例,legend,(string1,string2,.),在指定地方添加文本,text,(x,y,string1,string2,.),legend(,cos(x,),);,text(pi/2,cos(pi/2),leftarrowy=,cos(x,),);,xlable,ylabel,text,命令也可以指定文本的属性,其他相关命令,保持当前窗口的图像,hold on,或,hold off,新建绘图窗口,figure(n),显示网格,grid on,或,grid off,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)%,在第三窗口绘图,MATLAB,的绘图功能十分灵活,不但可以在一个图形窗口中绘制多个完全独立的子图,称为,绘制子图,;也允许用户在一个图形中绘制多条曲线,称为,图形叠绘,。接下来首先介绍子图的绘制方法。,绘制子图,当大家需要进行相关图形的比较或者是同类图形的分析时,比较方便的方式是把若干图形在同一个图形窗口显示出来。针对用户的这一点需要,,MATLAB,提供了子图的绘制功能,并约定了符合常规思维习惯的分栏方式。,绘制子图,划分绘图区域,subplot(m,n,p),将一个绘图窗口分割成,m,*,n,个子区域,并,按行,从左至右,依次编号,。,p,表示第,p,个绘图子区域。,subplot,子图分割命令,调用格式:,subplot(m,n,p),按从左至右,从上至下排列,行,列,绘图序号,绘制子图,划分绘图区域,subplot(m,n,p),怎样在一个,绘图区域,内绘制多个函数的图像,?,将一个绘图窗口分割成,m,*,n,个子区域,并,按行,从左至右,依次编号,。,p,表示第,p,个绘图子区域。,x=-pi:pi/10:pi;,subplot(,2,2,1,);plot(x,sin(x);,subplot(,2,2,2,);plot(x,cos(x);,subplot(,2,2,3,);plot(x,x.2);,subplot(,2,2,4,);plot(x,exp(x);,例,:,刚才已经解决了,“,一个窗口绘制多图,”,的问题,接下来将介绍如何,“,一个坐标轴绘制多曲线,”,。在实际工作中,大家常常需要即已经绘制完成的图形上再次添加或删减图形,这时可以调用,hold,函数,,hold,函数的调用格式和功能如下:,hold,:在,图形,保功能,保持,和,关闭,状态之间切换。,hold on,:启动图形保持功能,在原图的基础上,再次绘制的图形将全部添加到图形窗口中,并自动调整坐标轴范围;,hold off,:关闭图形保持功能;,【,例,】,采用图形保持,在同一坐标内绘制曲线,y1=0.2,e-0.5x,cos(4x),y2=2e,-0.5x,cos(x),。,程序如下:,x=0:pi/100:2*pi;,y1=0.2*exp(-0.5*x).*cos(4*pi*x);,plot(x,y1),hold on,y2=2*exp(-0.5*x).*,cos(pi,*x);,plot(x,y2);,hold off,同时绘制多个函数图像,plot(,x1,y1,s1,x2,y2,s2,.,xn,yn,sn,),属性选项,可以省略,等价于:,hold on,plot,(x1,y1,s1),plot,(x2,y2,s2),.,plot,(xn,yn,sn,),给坐标加网格线用,grid,命令来控制。,grid on/off,命令控制是画还是不画网格线,,不带参数的,grid,命令在两种状态之间进行切换。,给坐标加边框用,box,命令来控制。,box on/off,命令控制是加还是不加边框线,,不带参数的,box,命令在两种状态之间进行切换。,图形的其他属性,x=-pi:pi/10:pi;,y=sin(x);,plot(x,y,rh:,linewidth,2,.,markeredgecolor,b,.,markerfacecolor,g,),例,:,线条的粗细,字体大小,坐标轴属性等。,linewidth,:,指定线条的粗细,markeredgecolor,:,指定标记的边缘色,markerfacecolor,:,指定标记表面的颜色,注:1)属性与属性的值是成对出现的,2)更多属性参见,plot,的联机帮助,图形的基本属性,线型,点标记,颜色,-,实线,:,虚线,-.,点划线,-,间断线,.,点,o,小圆圈,x,叉子符,+,加号,*,星号,s,方格,d,菱形,朝上三角,v,朝下三角,朝右三角,t=0:0.1:10*pi;,x=2*t;,y=,sin(t,);,z=,cos(t,);,plot3(x,y,z);,plot3(x,y,z,s),绘制三维网格,-mesh,函数,网格图形是指连接相邻数据点形成的网状曲面,数据点是,x-y,平面的矩形网格上点的,z,轴坐标值。网格图的绘制步骤如下:,(,1,)在,x-y,平面上指定一个矩形区域,采用与坐标轴平行的直线进行分格;,(,2,)计算矩形网格点的,z,轴坐标值,得到三维空间的数据点;,(,3,)利用以上得到的数据点,将,x-z,平面或者,y-z,平面内,以及平行平面内的数据点连接,形成网格图。,空间三维作图,空间曲面,mesh,(Z),绘出矩阵,Z,的三维消隐图。,mesh,(,x,y,Z),x,y,是,向量,时,,length(x)=n,length(y)=m,m,n=size(Z),mesh,(X,Y,Z,C),绘制由矩阵,X,Y,Z,所确定的曲面,网格图,,,矩阵,C,用于确定网格颜色,省略时,C=Z。,mesh,meshc,meshz,meshc,调用方式与,mesh,相同,在,mesh,基础上增加等高线,meshz,调用方式与,mesh,相同,在,mesh,基础上屏蔽边界面,【,例,】,矩阵的三维网线图,z=rand(6);,z=,round(z,),1 0 0 1 0 0,0 1 0 1 0 1,0 1 1 1 1 0,1 0 1 1 0 0,1 0 1 0 0 1,1 0 1 0 0 1,mesh(z),;,mesh(z,),【,例,】8,阶,hadamard,矩阵的网线图,h2=1 1;1-1;,h4=h2 h2;h2-h2;,h8=h4 h4;h4-h4;,mesh(h8),空间三维作图,网格生成函数:,meshgrid,x,y,为给定的向量,,X,Y,是网格划分后得到的网格矩阵,绘制由函数,z=z(x,y),确定的曲面时,首先需产生一个网格矩阵,然后计算函数在各网格点上的值。,若,x=y,则可简写为,X,Y=,meshgrid(x,),X,Y=,meshgrid,(x,y,),x=-8:,0.5,:8;y=-8:,0.5,:8;,X,Y=,meshgrid(x,y,);,r=sqrt(X,.,2+Y,.,2),+eps,;,Z=sin(r),./,r;,mesh(X,Y,Z),例:,绘制三维曲面,-surf,函数,曲面图是把网格图表面的网格围成的片状区域用不同的色彩填充,而形成的彩色表面。除了网格空档被色彩填充之外,曲面图与网格图外观是一样的,但是前者更具立体感。,MATLAB,中的,surf,函数专门用于绘制三维着色曲面图,其调用格式和对数据准备的要求上节的,mesh,函数相同,,x=-8:,0.5,:8;y=-8:,0.5,:8;,X,Y=,meshgrid(x,y,);,r=sqrt(X,.,2+Y,.,2),+eps,;,Z=sin(r),./,r;,surf(X,Y,Z,),例:,surf,三维曲面绘图函数,与网格图看起来一样,与三维网线图的区别:,网线图:,线条有颜色,空挡是黑色的,(无颜色),曲面图:,线条是黑色的,空挡有颜色,把线条之间的空挡填充颜色,沿,z,轴按每一网格变化,绘制三维曲面,-surf,函数,调用格式:,surf(x,y,z),绘制三维曲面图,,x,y,z,为图形坐标向量,例:,X,Y,Z=peaks(30),peaks,为,matlab,自动生成的三维测试图形,surf(X,Y,Z),surfc(X,Y,Z),带等高线的曲面图,X,Y,Z=peaks(30);,surfc(X,Y,Z,),surfl(X,Y,Z),被光照射带阴影的曲面图,X,Y,Z=peaks(30);,surfl(X,Y,Z,),cylinde(r,n),三维柱面绘图函数,r,为半径;,n,为柱面圆周等分数,例:绘制三维陀螺锥面,t1=0:0.1:0.9;,t2=1:0.1:2;,r=t1-t2+2;,x,y,z=cylinder(r,30);,surf(x,y,z,);,grid,为球面等分数,缺省为,20,例:绘制三维球面,x,y,z=sphere(30);,surf(x,y,z,);,点,线,二维作图机制,例:,y=sin(x),0 x,x=0:0.5:2*pi;,y=sin(x);,plot(x,y,.,),先画点,后连线,一、画点,点,线,二维作图举例,例:,y=sin(x),0 x,x=0:0.5:2*pi;,y=sin(x);,plot(x,y,r,.-,),先画点,后连线,二、连线,二维作图举例,x=0:,0.1,:2*pi;,y=sin(x);,plot(x,y,.,),加密:取更多的点,x=0:,0.1,:2*pi;,y=sin(x);,plot(x,y,.-,),x=0:,0.1,:2*pi;,y=sin(x);,plot(x,y),例,:,三维螺线,Matlab,空间曲线绘图举例,x=t,y=,sin(t,),z=,cos(t,),0 t,t=0:,0.5,:20;,x=t;,y=,sin(t,);,z,=,cos(t,);,plot3(x,y,z,.,-,),t=0:,0.5,:20;,x=t;,y=,sin(t,);,z,=,cos(t,);,plot3(x,y,z,.),空间曲线作图举例,t=0:,0.1,:20;,x=t;,y=,sin(t,);,z,=,cos(t,);,plot3(x,y,z),t=0:,0.1,:20;,x=t;,y=,sin(t,);,z,=,cos(t,);,plot3(x,y,z,.-),线,:,分别沿,x,方向和,y,方向连接这些点即可得到,空间曲面作图,先画点,(x,y,z),,后连线,构成曲面网格图,点,:,例:“墨西哥帽子”,空间曲面作图举例,(,a,x,a,-,a,y,x=-8:,0.5,:8;,y=-8:,0.5,:8;,X,Y=,meshgrid(x,y,);,r=sqrt(X,.,2+Y,.,2),+eps,;,Z=sin(r),./,r;,mesh(X,Y,Z),1),x,与,y,可以取不同的步长,2),注意这里采用的,数组运算,eps,?,最后一个命令能否改为,mesh(Z),?,X,Y=meshgrid,(-8:0.5:8),;,例:,绘制等高线,meshc,空间曲面作图举例,X,Y=meshgrid(-8:,0.5,:8);,r=sqrt(X,.,2+Y,.,2),+eps,;,Z=sin(r),./,r;,meshc(X,Y,Z,),例:,绘制边界面屏蔽,meshz,空间曲面作图举例,X,Y=meshgrid(-8:,0.5,:8);,r=sqrt(X,.,2+Y,.,2),+eps,;,Z=sin(r),./,r;,meshz(X,Y,Z,),空间三维作图,空间曲面其它作图函数,sphere,(n),专用于绘制单位球面,mesh,绘制,网格图,,,surf,绘制着色的三维,表面图,surf,(X,Y,Z),绘制由矩阵,X,Y,Z,所确定的曲面图,参数,含义同,mesh,sphere,只能画单位球面!,自己动手,绘制球面,x,2,+,y,2,+,z,2,=16,surf,作图举例,X,Y=meshgrid(-8:,0.5,:8);,r=sqrt(X,.,2+Y,.,2),+eps,;,Z=sin(r),./,r;,surf(X,Y,Z),mesh,与,surf,的比较,如果没有给出,n,的值,,,则系统默认为,n=20,sphere,作图,其它调用方式:,axis auto,自动模式,使得图形的坐标满足图中的一切元素,axis equal,各坐标轴采用等长刻度,axis square,使绘图区域为正方形,axis on/off,恢复,/,取消对坐标轴的一切设置,axis manual,以当前的坐标限制图形的绘制(多图时),更多参见,axis,的联机帮助,坐标轴控制,axis,(xmin,xmax,ymin,ymax,zmin,zmax,),作用:控制坐标轴的显示范围,坐标轴控制命令:,axis,r,g,b,都是,0 1,之间的一个数,s,为字符串,表示所采用的色系,常用的值有,颜色映象,相应的颜色系,颜色映象,相应的颜色系,autumn,红黄色系,hsv,色调饱和色系,gray,线性灰色系,hot,黑红黄白色系,cool,青和洋红色系,pink,柔和色系,图像的着色方案,colormap,(r,g b),或,colormap,(s,),colormap,:设置绘图的着色方案,ezplot(,f,),Matlab,符号作图,二维曲线绘图:,ezplot,ezplot(,f,a,b,),ezplot(,f(x,y,),),ezplot(,f(x,y),a,b,c,d,),ezplot(,f,g,a,b,),缺省的绘图区间为,-2,2,例:,ezplot,作图,Matlab,符号作图,空间曲线绘图:,ezplot3,缺省的绘图区间为,0,2,ezplot3,(,x,y,z,a,b,),ezplot3,(,x,y,z,),Matlab,符号作图,空间曲面绘图:,ezmesh,、,ezsurf,ezmesh,(z(x,y),a,b,c,d,),ezmesh,(z(x,y),a,b,),ezmesh,(z(x,y,),ezmesh,(x(s,t),y(s,t),z(s,t),a,b,c,d,),ezmesh,(x(s,t),y(s,t),z(s,t),a,b,),ezmesh,(x(s,t),y(s,t),z(s,t,),ezsurf,的用法,与,ezmesh,相同,
展开阅读全文