资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第三节 绘图功能,作为一个功能强大的工具软件,,Matlab,具有很强的图形处理功能,提供了大量的,二维、三维,图形函数。由于系统采用面向对象的技术和丰富的矩阵运算,所以在图形处理方面即常方便又高效。,实验目录,一、二维图形,三、,图形处理,二、,三维图形,一、二维图形,Note:,作函数关系,y(x),的直角坐标图,cs,表示颜色和线形。若省略,系统默认是实线,;,plot,命令自动打开一个图形窗口,(Figure);,用,直线,连接相邻两数据点来绘制图形,根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定坐标轴,可把,x,y,轴用对数坐标表示,.,1,、,单窗口曲线绘图,plot(x,y,cs),一、二维图形(,plot,),(一)直角坐标系下图形,【,例,】,在区间,0X2,内,绘制正弦曲线,Y=SIN,(,X,);,x=0:pi/100:2*pi;,y=sin(x);,plot(x,y),(5),如果已经存在一个图形窗口,,plot,命令则清除当前图形,绘制新图形,;,(6),可单窗口单曲线绘图;可单窗口多曲线绘图;,(7),可任意设定曲线颜色和线型,;,(8),可给图形加坐标网线和图形加注功能,.,note:,函数,plot(x,y1,x,y2,,,x,y3,,,),,其功能是以公共向量,x,为,X,轴,分别以,y1,,,y2,,,y3,,,为,Y,轴,,在同一幅图内绘制出多条曲线。,【,例,】,同时绘制正、余弦两条,曲线,Y1=SIN,(,X,)和,Y2=COS,(,X,);,x=0:pi/100:2*pi;,y1=sin(x);,y2=cos(x);,plot(x,y1,x,y2),一、二维图形(,plot,),【,例,】,用不同线型和颜色重新绘制,Y1=SIN,(,X,)和,Y2=COS,(,X,);,x=0:pi/100:2*pi;,y1=sin(x);,y2=cos(x);,plot(x,y1,go,x,y2,b-.),note:,其中参数,go,和,b-.,表示图形的颜色和线型。,g,表示绿色,,o,表示图形线型为圆圈;,b,表示蓝色,,-.,表示图形线型为点划线。,一、二维图形(,plot,),字母 颜色 标点 线型,y,黄色,点线,m,粉红 圈线,c,亮蓝,线,r,大红 字线,g,绿色 实线,b,蓝色,星形线,w,白色 :虚线,k,黑色 ,点划线,常用的线型与颜色,note:,该命令将当前图形窗口分成,mn,个绘图区,,即每行,n,个,共,m,行,区号按行优先编号,且选定第,p,个区为当前,活动区,。,2,、,单窗口多曲线分图绘图,直角坐标系下,一、二维图形,(subplot),subplot,(,m,n,p,),(,1,),x=linspace(0,2*pi,60);,%,产生一个,0,2pi,长度为,60,的向量,y=sin(x,);,z=cos(x,);,t=sin(x,)./(,cos,(x)+,eps,);,%eps,为系统内部常数,避免分母为零,ct=cos(x,)./(sin(x)+,eps,);,subplot(2,2,1),%,分成,22,区域且指定,1,号为活动区,plot(x,y),title,(,sin(x),axis,(0,2*pi,-,1 1);,%,只显示,0,2pi,,,-1,1,的图形,一、二维图形,【,例,】,在一个图形窗口中同时绘制正弦、余弦、正切、,余切,曲线,;,一、二维图形,(subplot),subplot(2,2,2);,%,指定,2,号为活动区,plot(x,z,);,title(,cos,(x);,axis(0 2*pi-1 1);,subplot(2,2,3);,%,指定,3,号为活动区,plot(x,t);,title(tangent(x);,axis(0 2*pi-40 40);,subplot(2,2,4);,%,指定,4,号为活动区,plot(x,ct,);,title(cotangent(x);,axis(0 2*pi-40 40);,一、二维图形,一、二维图形,(subplot),3,、符号函数,画图,(,显函数、隐函数和参数方程,),(,1,),字符串显函数、隐,函数、参数方程图形,ezplot(,f(x),a,b),Note,:表示在,axb,绘制,显函数,f=f(x),的函数图,.,【,例,】,在,0,上画,y,=cos,x,的图形,.,ezplot(sin(x),0,pi),ezplot(f(x,y),xmin,xmax,ymin,ymax),note,:表示在区间,xminxxmax,和,yminyymax,绘制,隐函数,f(x,y)=0,的函数图,.,【,例,】,在,-2,0.5,0,2,上画隐函数,的图,.,ezplot(exp(x)+sin(x*y),-2,0.5,0,2),Note:,表示在区间,tminttmax,绘制,参数方程,x=x(t),y=y(t),的函数图,.,ezplot(,x(t),y(t),tmin,tmax),,,【,例,】,在,0,2,上画 的星形图,.,ezplot(cos(t)3,sin(t)3,0,2*pi),一、二维图形,(,2,),字符串显,函数图形,fplot(fun,,,lims,,,tol),Note:,(,1,),fun,为,函数名,,以字符串形式出现。,lims,为,变量取值范围,,,tol,为,相对允许误差,,其系统默认值为,2e-3,。,(,2,),fun,必须是,M,文件,的函数名或是独立变量为,x,的字符串,.,(,3,),fplot,函数不能画参数方程和隐函数图形,但在一个图上可以画多个图形,.,【,例,】,在,-2,2,范围内绘制函数,tanh,的图形,.,fplot(tanh(x),sin(x),cos(x),2*pi*-1 1-1 1),fplot(tanh,-2,2),【,例,】,在,-1,,,2,上画 的图形;,.,1.,先建,M,文件,myfun1.m,:,function Y=myfun1(x),Y=exp(2*x)+sin(3*x.2),2.,再输入命令:,fplot(myfun1,-1,2),(二)其它坐标系下图形,theta,=0:0.01:2*pi;,rho,=sin(2*theta).*,cos,(2*theta);,polar(theta,rho,);,%,绘制极坐标图命令,title(polar plot);,1,、极坐标图,Note,:绘制极坐标图,,theta,为极坐标角度,,rho,为极坐标半径;,polar(theta,rho),【,例,8】,绘制,sin(2*)*cos(2*),的极坐标图;,【,例,】,绘制,y=|1000sin(4x)|+1,的双对数坐标图;,2,、对数坐标图形,loglog(x,y),双对数坐标,x=0:0.1:2*pi;y=abs(1000*sin(4*x)+1;,loglog(x,y),%,双对数坐标绘图命令,【,例,】,以,X,轴为对数重新绘制上述曲线;,x=0:0.01:2*pi,y=,abs,(1000*sin(4*x)+1,semilogx(x,y),%,单对数,X,轴绘图,【,例,】,以,Y,轴为对数重新绘制上述曲线;,x=0:0.01:2*pi,y=,abs,(1000*sin(4*x)+1,semilogy(x,y),%,单对数,Y,轴绘图,4.2,特殊坐标图形,semilogx(x,y),单对数,X,轴绘图命令,semilogy(x,y),单对数,Y,轴绘图命令,(三)其它图形函数,除,plot,等基本绘图命令外,,Matlab,系统提供了许多其它特殊绘图函数,这里举一些代表性例子,更详细的信息用户可随时查阅在线帮助,其对应的,M-file,文件存放在系统,matlab,toolbox,matlab,目录下。,4.3,其它图形函数,如:,x,=-2.5:0.25:2.5;,y=exp,(-x.*x);,stairs(x,y,);,%,绘制阶梯图形命令,title,(stairs plot);,4.3,其它图形函数,1,、阶梯图形,-,分布函数图形,stairs(x,y),如:,x,=-2.5:0.25:2.5;,y=exp,(-x.*x);,bar(x,y,);,%,绘制条形图命令,4.3,其它图形函数,2,、条形图形,频率直方图,bar(x,y),如:绘制一正方形并以黄色填充:,x=0 1 2 4 0;,%,正方形顶点坐标向量,y=0 0 1 1 0;,fill(x,y,b),%,绘制并以蓝色填充正方形图,4.3,其它图形函数,3,、填充图形,fill(x,y,c,),绘制并填充二维多边图形,Note,:,x,和,y,为二维多边形顶点坐标向量。字符,c,规定填充颜色,其取值前已叙述。,Note,:,Matlab,系统可用向量表示颜色,通常称其为颜色向量。基本颜色向量用,r g b,表示,即,RGB,颜色组合;以,RGB,为基本色,通过,r,g,b,在,0,1,范围内的不同取值可以组合出各种颜色。,4.3,其它图形函数,再如:,x=0:0.025:2*pi;,y=sin(3*x);,fill(x,y,0.5 0.3 0.4),%,颜色向量,4,、其它特殊二维绘图函数,bar,绘制直方图,hist,绘制统计,直方图,stairs,绘制阶梯图,stem,绘制火柴杆图,rose,绘制统计扇形图,comet,绘制彗星曲线,errorbar,绘制误差棒图,compass,复数向量图,(,罗盘图,),feather,复数向量投影图,(,羽毛图,),quiver,向量场图,area,区域图,pie,饼图,convhull,凸壳图,scatter,离散点图,二维绘图函数小结,plot,二维图形基本函数,fplot,f(x),函数曲线绘制,fill,填充二维多边图形,polar,极坐标图,bar,条形图,loglog,双对数坐标图,semilogx,X,轴为对数的坐标图,semilogy,Y,轴为对数的坐标图,stairs,阶梯形图,axis,设置坐标轴,4.3,其它图形函数,clf,清除图形窗口内容,close,关闭图形窗口,figure,创建图形窗口,grid,放置坐标网格线,gtext,用鼠标放置文本,hold,保持当前图形窗口内容,subplot,创建子图,text,放置文本,title,放置图形标题,xlabel,放置,X,轴坐标标记,ylabel,放置,Y,轴坐标标记,二、三维图形,1.,plot3,函数,最基本的三维图形函数为,plot3,,,它是将二维函数,plot,的有关功能扩展到三维空间,用来绘制三维图形。,Plot3(x,y,z,c),Note,:函数功能:以向量,x,,,y,,,z,为坐标,绘制三维曲线,其中,x,y,z,表示三维坐标向量,表示线形或颜色。,4.4,三维图形,【,例,】,绘制三维螺旋曲线:,t=0:pi/50:10*pi,;,y1=sin(t,),y2=,cos,(t);,plot3(y1,y2,t,);,title(helix);,text(0,0,0,origin,);,%,在,(0,0,0),点添加文本框,xlabel,(sin(t),ylabel,(,cos,(t),zlabel,(t);,grid,;,4.4,三维图形,2.mesh,函数,mesh,函数用于绘制三维网格图。在,不需要绘制特别精细的三维曲面结构图时,,可以通过绘制三维网格图来表示三维曲面。三维曲面的网格图最突出的优点是:它较好地解决了实验数据在三维空间的可视化问题。,mesh(x,y,z,c),Note,:其中,x,,,y,控制,X,和,Y,轴坐标,矩阵,z,是由,(,x,,,y),求得,Z,轴坐标,,(,x,y,z),组成了,三维空间的网格点,;,c,用于控制,网格点颜色,。,4.4,三维图形,【,例,10】,下列程序绘制三维网格曲面图,x,=0:0.15:2*pi;,y,=0:0.15:2*pi;,z=sin(y,)*,cos,(x);,%,矩阵相乘,mesh(x,y,z,);,3.surf,函数,surf,用于绘制三维曲面图,,各线条之间的补面用颜色填充,。,surf,函数和,mesh,函数的调用格式一致。,surf,(,x,y,z),Note,:其中,x,,,y,控制,X,和,Y,轴坐标,矩阵,z,是由,x,,,y,求得的曲面上,Z,轴坐标。,4.4,三维图形,【,例,11】,下列程序绘制三维曲面,图形,x=0:0.15:2*pi;,y=0:0.15:2*pi;,z=sin(y)*,cos,(x);,%,矩阵相乘,surf(x,y,z);,xlabel,(x-axis),ylabel,(y-axis),zlabel,(z-label);,title(3-D surf);,4.,视点,视点位置可由方位角和仰角表示。,方位角,又称旋转角为视点位置在,XY,平面上的投影与,X,轴形成的角度,正值表示逆时针,负值表示顺时针。,仰角,又称视角为,XY,平面的上仰或下俯角,正值表示视点在,XY,平面上方,负值表示视点在,XY,平面下方。,view(az,el),note:az,为方位角,,el,为仰角。通过系统提供的多峰函数,peaks,的绘制例子,可进一步说明视点对图形的影响,以及,view(,az,el,),函数的使用。,4.4,三维图形,【,例,12】,不同视角图形,p=peaks;,%,系统提供的多,峰函数,4949,矩阵,subplot(2,2,1);,mesh(peaks,p);,%,以,p,为函数值做网格图,view(-37.5,30);,%,指定子图,1,的视点,title(azimuth=-37.5,elevation=30),subplot(2,2,2);,mesh(peaks,p);,view(-17,60);,%,指定子图,2,的视点,title(azimuth=-17,elevation=60),4.4,三维图形,subplot(2,2,3);,mesh(peaks,p);,view(-90,0);,%,指定子图,3,的视点,title(azimuth=-90,elevation=0),subplot(2,2,4);,mesh(peaks,p);,view(-7,-,10);,%,指定子图,4,的视点,title(azimuth=-7,elevation=-10),5.,等高线图,contour3(x,y,z,16),【,例,13】,多,峰函数,peaks,的,等,高线图,x,y,z=,peaks(30);,%,在,-3,3,-3,3,上取多峰函数值,contour3(x,y,z,16);,%,画多,多,峰函数,16,条等高线。,xlabel,(x-axis),ylabel,(y-axis),zlabel,(z-axis);,title,(contour3 of peaks),4.4,三维图形,三、图形处理,1.,图形加注标记,Title(,string,),在当前图形的,顶端,上加图例,string,;,Xlabel(,string,),在当前图形的,x,轴,上加图例,string,;,Ylabel(,string,),在当前图形的,y,轴,上加图例,string,;,Zlabel(,string,),在当前图形的,z,轴,上加图例,string,;,grid on(off),-,打开、关闭坐标网格线,Legend,(,添加图例说明,),【,例,】,在区间,0,2,画,sin(x),的图形,并加注图例,“,自变量,X,”,、,“,函数,Y,”,、,“,示意图,”,并加格栅,.,x=linspace(0,2*pi,30);,y=sin(x);,plot(x,y),xlabel(,自变量,X),ylabel(,函数,Y),title(,示意图,),grid on,gtext,(,string,),Note,:用鼠标放置标注在现有的图上时,图形上出现一个交叉的十字,该十字随鼠标的移动移动,当按下鼠标左键时,该标注,string,放在当前,十交叉,的位置,.,(,2,),【,例,】,在区间,0,2,画,sin(x),,并分别标注,“,sin(x),”,”,cos(x),”,.,x=linspace(0,2*pi,30);,y=sin(x);,z=cos(x);,plot(x,y,x,z),gtext(sin(x);gtext(cos(x),2.,设定坐标轴,用户若对坐标系统不满意,可利用,axis,命令对其重新设定。,axis,(,xmin xmax ymin,ymax),设定最大和最小值,;,axis,(,auto,),将坐标系统返回到自动缺省状态,;,axis,(,square,),将当前图形设置为方形,;,axis,(,equal,),两个坐标因子设成相等,;,axis,(,off,),关闭坐标系统,坐标轴、原点都消失,axis,(,on,),显示坐标系统,.,【,例,】,在区间,0.005,0.01,显示,sin(1/x),的图形,.,x=linspace(0.0001,0.01,1000);,y=sin(1./x);,plot(x,y),axis(0.005 0.01-1 1),3.,图形保持,Hold on,保持当前图形,以便继续在,当前图上,画图,hold off,释放当前图形窗口,【,例,】,将,y=sin(x),、,y=cos(x),分别用点和线画出在同一屏幕上,.,x=linspace(0,2*pi,30);,y=sin(x);,z=cos(x),plot(x,z,:),hold on,plot(x,y),figure(n),新建,第,n,个,窗口,,并把它置于其它图形之上,(,2,),【,例,】,新建两个窗口,分别画出,y=sin(x),,,z=cos(x),,其中,x,属于,0,2,;,x=linspace(0,2*pi,100);,y=sin(x);z=cos(x);,plot(x,y);,%,自动出现第一个窗口,title(sin(x);,pause,figure(2);,%,在第二窗口绘图,plot(x,z);,title(cos(x);,4.,缩放图形,zoom on,为当前图形打开缩放模式,zoom off,关闭缩放模式,note,:单击鼠标左键,则在当前图形窗口中,以鼠标点中的点为中心的图形放大,2,倍;单击鼠标右键,则缩小,2,倍,.,x=linspace(0,2*pi,30);,y=sin(x);,plot(x,y),zoom on,【,例,】,缩放,y=sin(x),的图形,.,5.,改变视角,view,Note,:命令,view(a,b),改变视角到,(a,b),a,是方位角,b,为仰角,.,缺省视角为(,-37.5,,,30,),.,view,(,x,,,y,,,z,),note:view,用空间向量表示的,三个量只关心它们的比例,与数值的大小无关,,x,轴,view,(,1,,,0,,,0,),,y,轴,view,(,0,,,1,,,0,),,z,轴,view,(,0,,,0,,,1,),.,view(a,b),x=-3:0.1:3;y=1:0.1:5;,X,Y=meshgrid(x,y);,%X,:以向量,x,作为行元素,行数,=length(y),Y,:以向量,y,作为列元素,列数,=length(x);,Z=(X+Y).2;,subplot(2,2,1)mesh(X,Y,Z),subplot(2,2,2)mesh(X,Y,Z)view(50,-34),subplot(2,2,3)mesh(X,Y,Z)view(-60,70),subplot(2,2,4)mesh(X,Y,Z)view(0,1,1),【,例,】,画出曲面,Z=(X+Y)2,在不同视角的网格图,.,7.,动画,Moviein(),产生一个帧矩阵来存放动画中的帧,Getframe,对当前的图像进行快照,movie(),按顺序回放各帧,帧,(zhen),:,量词,一幅字画叫一帧,影片是由一张张连续的图片组成的,每幅图片就是一帧,.,x,y,z=peaks(30);,surf(x,y,z),axis(-3 3-3 3-10 10),m=moviein(15);,%,产生,15,张图画,for,i=1:15,view(-37.5+24*(i-1),30),m(:,i)=getframe;,end,movie(m),【,例,】,将曲面,peaks,做成动画,.,%,按照一定的次序将图,片快照并储存起来;,%,将,15,张图片做成动画,
展开阅读全文