第5章MATLAB绘图



《第5章MATLAB绘图》由会员分享,可在线阅读,更多相关《第5章MATLAB绘图(90页珍藏版)》请在装配图网上搜索。
1、,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2015/5/24,,‹#›,单击此处编辑母版标题样式,,,第,5,章,MATLAB,绘图,5.1,二维图形,5.2,三维图形,5.3,三维图形的精细处理,5.4,隐函数绘图,5.5,低层,绘图操作,5.6,光照和材质处理,5.7,图像显示与动画,制作,,5.1,二维图形,5.1.1,绘制二维曲线的基本函数,1,、,plot,函数的基本用法,plot,函数的基本调用格式为:,plot(x,y,),其中,x,和,y,为长度相同的向量,分别用于存储,x,坐标和,y,坐标数据。,,,例,,在,0≤X≤,2,区间,内,绘制曲线,y=2e,-0
2、.5,xsin(2,π,x),。,程序如下:,,>>,x=0:pi/100:2*pi,;,>>,y=2*exp,(-0.5*x).*sin(2*pi*x);,>>,plot(x,y,),,,例,,绘制参数方程,曲线,程序如下:,>>t,=-pi:pi/100:pi;,>>,x=t,.*cos(3*t);,>>,y=t,.*sin(t).*sin(t);,>>,plot(x,y,);,,也可以写成:,y = t.*sin(t).^2;,,,说明:,(,1,)当,x,y,是同维矩阵时,则以,x,y,对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。,(,2,)当,x,是向量,,y,是有一
3、维与,x,同维的矩阵时,则绘制出多根不同色彩的曲线。曲线条数等于,y,矩阵的另一维数,,x,被作为这些曲线共同的横坐标。,(,3,),plot,函数最简单的调用格式是只包含一个输入参数:,plot(x),。,,,(,1,)当,x,y,是同维矩阵时,则以,x,y,对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。,>> t=linspace(0,2*pi,100);,>> x=[t;t]';,>> y=[sin(t);cos(t)]';,>> plot(x,y),,,(,2,)当,x,是向量,,y,是有一维与,x,同维的矩阵时,则绘制出多根不同色彩的曲线。曲线条数等于,y,矩阵的另一维
4、数,,x,被作为这些曲线共同的横坐标。,>> x=linspace(0,2*pi,100);,>> y=[sin(x);cos(x)];,>> plot(x,y),,,,(,3,),plot,函数最简单的调用格式是只包含一个输入参数:,plot(x),。,当,x,为实数向量时,下标为横坐标,元素值为纵坐标。,当,x,为复数向量时,元素的实部为横坐标,虚部为纵坐标。,程序如下:,>> t=0:0.01:2*pi;,>> x=exp(i*t);,>> plot(x),注意,:,i,表示虚数单位。,工作空间里面没有,i,的值。,X,表示一个复数向量。,,,2,、含,多个输入参数的,plot,函数,含
5、多个输入参数的,plot,函数调用格式为:,plot(x1,y1,x2,y2,…,xn,yn),3,、含,选项的,plot,函数,含选项的,plot,函数调用格式为:,plot(x1,y1,,选项,1,x2,y2,,选项,2,…,xn,yn,,选项,n),,,例,,用,不同线型和颜色在同一坐标内绘制曲线,y=2e,-0.5,xsin(2,π,x),及其包络线。,,,,程序如下:,,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).*
6、sin(2*pi*x1);,plot(x,y1,'g:',x,y2,'b--',x1,y3,'rp,');,,4,、双,纵坐标函数,plotyy,plotyy,函数是,MATLAB 5.X,新增的函数。它能把函数值具有不同量纲、不同数量级的两个函数绘制在同一坐标中。调用格式为:,,plotyy(x1,y1,x2,y2),,其中,x1-y1,对应一条曲线,,x2-y2,对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于,x1-y1,数据对,右纵坐标用于,x2-y2,数据对。,,,例,,用,不同标度在同一坐标内绘制曲线,y1=e,-0.5,xsin(2,π,x),及曲线,y2=1.5e,
7、-0.1,xsin(x),。,,,,,程序如下:,,x1=0:pi/100:2*pi;,x2=0:pi/100:3*pi;,y1=exp(-0.5*x1).*sin(2*pi*x1);,y2=1.5*exp(-0.1*x2).*sin(x2);,plotyy(x1,y1,x2,y2);,,,5.1.2,绘制图形的辅助操作,1,、图形,标注,有关图形标注函数的调用格式为:,,title(,图形名称,),xlabel(x,轴说明,),ylabel(y,轴说明,),text(x,y,,图形说明,),legend(,图例,1,,图例,2,…),,,2,、坐标,控制,函数的调用格式为:,axis([xm
8、in xmax ymin ymax zmin zmax]),(间隔位置可以用空格,也可以用“,”),axis,函数功能丰富,常用的用法还有:,axis equal,纵、横坐标轴采用等长刻度,axis square,产生正方形坐标系,(,缺省为矩形,),axis auto,使用缺省设置,axis off,取消坐标轴,axis on,显示坐标轴,grid on/off,命令控制是画还是不画网格线,不带参数的,grid,命令在两种状态之间进行切换。,box on/off,命令控制是加还是不加边框线,不带参数的,box,命令在两种状态之间进行切换。,,例,,绘制,分段函数曲线并添加图形标注。,程序如下
9、:,x=linspace(0,10,100);,y=[];,for x0=x,if x0>=8,y=[y,1];,elseif x0>=6,y=[y,5-x0/2];,elseif x0>=4,y=[y,2];,elseif x0>=0,y=[y,sqrt(x0)];,end,end,plot(x,y),axis([0 10 0 2.5]) %,设置坐标轴,title(',分段函数曲线,'); %,加图形标题,xlabel('Variable X'); %,加,X,轴说明,ylabel('Variable Y'); %,加
10、,Y,轴说明,text(2,1.3,'y=x^{1/2}'); %,在指定位置添加图形说明,text(4.5,1.9,'y=2');,text(7.3,1.5,'y=5-x/2');,text(8.5,0.9,'y=1');,,,3,、图形,保持,一般情况下,绘图命令每执行一次就刷新当前图形窗口,图形窗口原有图形将不复存在。若希望在已存在的图形上再继续添加新的图形,可使用图形保持命令,hold,。,hold on/off,命令控制是保持原有图形还是刷新原有图形,不带参数的,hold,命令在两种状态之间进行切换。,注,:,hold on,保持,hold off,刷新,hold,在两种状
11、态下切换,,,例,,用,图形保持功能在同一坐标内绘制曲线,y=2e,-0.5,xsin(2,π,x),及其包络线。,程序,如下:,x=(0:pi/100:2*pi)';,y1=2*exp(-0.5*x)*[1,-1];,y2=2*exp(-0.5*x).*sin(2*pi*x);,plot(x,y1,'b:');,axis([0,2*pi,-2,2]); %,设置坐标,hold on; %,设置图形保持状态,plot(x,y2,'k');,legend(',包络线,',',包络线,',',曲线,y,');%,加图例,hold off; %,关闭图形保持
12、,grid %,网格,线控制,,,4,、图形,窗口的分割,,subplot,函数的调用格式为:,,subplot(m,n,p),,,例,,在,一个图形窗口中以子图形式同时绘制正弦、余弦、正切、余切曲线。,,程序,如下:,,x=linspace(0,2*pi,60);,y=sin(x);z=cos(x);,t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps);,subplot(2,2,1);,plot(x,y);title('sin(x)');axis ([0,2*pi,-1,1]);,subplot(2,2,2);,plot(
13、x,z);title('cos(x)');axis ([0,2*pi, -1,1]);,subplot(2,2,3);,plot(x,t);title('tangent(x)');axis ([0,2*pi,-40,40]);,subplot(2,2,4);,plot(x,ct);title('cotangent(x)');axis ([0,2*pi,-40,40]);,,,对图形窗口灵活分割。请看下面的程序。,x=linspace(0,2*pi,60,);,y=sin(x,);z=cos(x);,t=sin(x,)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps)
14、;,subplot(2,2,1,); %,选择,2×2,个区中的,1,号区,stairs(x,y,);title('sin(x)-1');axis ([0,2*pi,-1,1]);,subplot(2,1,2,); %,选择,2×1,个区中的,2,号区,stem(x,y,);title('sin(x)-2');axis ([0,2*pi,-1,1]);,subplot(4,4,3,); %,选择,4×4,个区中的,3,号区,plot(x,y,);title('sin(x)');axis ([0,2*pi,-1,1]);,sub
15、plot(4,4,4,); %,选择,4×4,个区中的,4,号区,plot(x,z,);title('cos(x)');axis ([0,2*pi,-1,1]);,subplot(4,4,7,); %,选择,4×4,个区中的,7,号区,plot(x,t,);title('tangent(x)');axis ([0,2*pi,-40,40]);,subplot(4,4,8,); %,选择,4×4,个区中的,8,号区,plot(x,ct,);title('cotangent(x)');axis ([0,2*pi,-40,
16、40]);,,5.1.3,绘制二维图形的其他,函数,1,、其他,形式的线性直角坐标图,在线性直角坐标系中,其他形式的图形有条形图、阶梯图、杆图和填充图等,所采用的函数分别是:,bar(x,y,,选项,),stairs(x,y,,选项,),stem(x,y,,选项,),fill(x1,y1,,选项,1,x2,y2,,选项,2,…),,,,例,,分别,以条形图、填充图、阶梯图和杆图形式绘制曲线,y=2e,-0.5,x,。,,程序,如下:,,x=0:0.35:7;,y=2*exp(-0.5*x);,subplot(2,2,1);bar(x,y,'g');,title('bar(x,y,''g'')'
17、);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,函数用来绘制极坐标图,其调用格式为:,polar(theta,rho,,选项,),其中,t
18、heta,为极坐标极角,,rho,为极坐标矢径,选项的内容与,plot,函数相似。,,,例 绘制,ρ=,sin(2,θ),cos(2,θ),的极坐标图。,程序如下:,,theta=0:0.01:2*pi;,rho=sin(2*theta).*cos(2*theta);,polar(theta,rho,'k');,,,,3,、对数,坐标图形,,MATLAB,提供了绘制对数和半对数坐标曲线的函数,调用格式为:,,semilogx(x1,y1,,选项,1,x2,y2,,选项,2,…),semilogy(x1,y1,,选项,1,x2,y2,,选项,2,…),loglog(x1,y1,,选项,1,x2,
19、y2,,选项,2,…),,,例,,绘制,y=10x2,的对数坐标图并与直角线性坐标图进行比较。,,,程序,如下:,x=0:0.1:10,;,y=10*x,.*x;,subplot(2,2,1,);plot(x,y);title('plot(x,y)');grid on;,subplot(2,2,2,);semilogx(x,y);title('semilogx(x,y)');,grid,on;,subplot(2,2,3,);semilogy(x,y);title('semilogy(x,y)');,grid,on;,subplot(2,2,4,);loglog(x,y);title('log
20、log(x,y)');grid on;,,4.,对函数自适应采样的绘图函数,fplot,函数的调用格式为:,fplot(fname,lims,tol,,选项,),例,,用,fplot,函数绘制,f(x)=cos(tan(,π,x)),的曲线。,先建立函数文件,myf.m,:,,function y=myf(x),y=cos(tan(pi*x));,,再用,fplot,函数绘制,myf.m,函数的曲线:,,fplot('myf',[-0.4,1.4],1e-4),,,5,、,其他,形式的图形,MATLAB,提供的绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图、复数的相量图等等。,,,
21、,,例,,绘制,图形:,(1),某次考试优秀、良好、中等、及格、不及格的人数分别为:,7,17,23,19,5,,试用饼图作成绩统计分析。,(2),绘制复数的相量图:,3+2i,、,4.5-i,和,-1.5+5i,。,程序,如下:,subplot(1,2,1);,pie([7,17,23,19,5]);,title(',饼图,');legend(',优秀,',',良好,',',中等,',',及格,',',不及格,');,subplot(1,2,2);,compass([3+2i,4.5-i,-1.5+5i]);title(',相量图,');,,,5.2,三维图形,,5.2.1,绘制三维曲线的基
22、本函数,,plot3,函数与,plot,函数用法十分相似,其调用格式为:,,plot3(x1,y1,z1,,选项,1,x2,y2,z2,,选项,2,…,xn,yn,zn,,选项,n),,,例,,绘制,空间曲线。,,程序,如下:,,t=0:pi/50:2*pi;,x=8*cos(t);,y=4*sqrt(2)*sin(t);,z=-4*sqrt(2)*sin(t);,plot3(x,y,z,'p');,title('Line in 3-D Space');text(0,0,0,'origin');,xlabel('X'),ylabel('Y'),zlabel('Z');grid;,5.2.2,三
23、维,曲面,1,、平面,网格坐标矩阵的生成,(1),利用矩阵运算生成。,x=a:dx:b; y=(c:dy:d)';,X=ones(size(y))*x;,Y=y*ones(size(x));,(2),利用,meshgrid,函数生成。,x=a:dx:b; y=c:dy:d;,[X,Y]=meshgrid(x,y);,,,例,,已知,6 24、=126); %,找出解的位置,x(k),y(k) %,输出对应位置的,x,y,即方程的解,,,2,、绘制,三维曲面的函数,,surf,函数和,mesh,函数的调用格式为:,,mesh(x,y,z,c),绘制三维网格图,,surf(x,y,z,c),绘制曲面图,各线条之间的补面用颜色填充。,,,,,,,例,,用,三维曲面图,表现函数,z=sin(y)cos(x),。,程序,1,:,,x=0:0.1:2*pi;[x,y]=meshgrid(x);z=sin(y).*cos(x);,mesh(x,y,z);xlabel('x-axis'),ylabel('y-a 25、xis'),zlabel('z-axis');title('mesh');,,,,,,,程序,2,:,x=0:0.1:2*pi;[x,y]=meshgrid(x);z=sin(y).*cos(x);,surf(x,y,z,);xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');title('surf');,,,,,,,程序,3,:,,x=0:0.1:2*pi;[x,y]=meshgrid(x);z=sin(y).*cos(x);,plot3(x,y,z);xlabel('x-axis'),ylabel('y-axis'),zlabel('z-a 26、xis');title('plot3-1');grid;,,,例,,绘制,两个直径相等的圆管的相交图形。,程序如下,:,%,两个等直径圆管的交线,m=30;,z=1.2*(0:m)/m;,r=ones(size(z));,theta=(0:m)/m*2*pi;,x1=r'*cos(theta);y1=r'*sin(theta); %,生成第一个圆管的坐标矩阵,z1=z'*ones(1,m+1);,x=(-m:2:m)/m;,x2=x'*ones(1,m+1);y2=r'*cos(theta); %,生成第二个圆管的坐标矩阵,z2=r'*sin(theta);,surf(x1, 27、y1,z1); %,绘制竖立的圆管,axis equal,axis off,hold on,surf(x2,y2,z2); %,绘制平放的圆管,axis equal,axis off,title(',两个等直径圆管的交线,');,hold off,,,例,,分析,由函数,z=x2-2y2,构成的曲面形状及与平面,z=a,的交线。,程序如下:,,[x,y]=meshgrid(-10:0.2:10);,z1=(x.^2-2*y.^2)+eps; %,第,1,个曲面,,a=input('a=?'); z2=a 28、*ones(size(x)); %,第,2,个曲面,,subplot(1,2,1);mesh(x,y,z1);hold on;mesh(x,y,z2); %,分别画出两个曲面,,v=[-10,10,-10,10,-100,100];axis(v);grid; %,第,1,子图的坐标设置,,hold off;,r0=abs(z1-z2)<=1; %,求两曲面,z,坐标差小于,1,的点,,xx=r0.*x; yy=r0.*y; zz=r0.*z2; %,求这些点上的,x,y,z,坐标,即交线坐标,,subplot(1,2,2);,plot3(x 29、x(r0~=0),yy(r0~=0),zz(r0~=0),'*'); %,在第,2,子图画出交线,,axis(v);grid; %,第,2,子图的坐标设置,,,,例,,在,xy,平面内选择区域,[-8,8]×[-8,8],,绘制函数的,4,种三维曲面图。,程序如下:,[x,y]=meshgrid(-8:0.5:8);,z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);,subplot(2,2,1);,meshc(x,y,z);%,等高线,title('meshc(x,y,z)'),subplot(2,2 30、,2);,meshz(x,y,z);%,带底座,title('meshz(x,y,z)'),subplot(2,2,3);,surfc(x,y,z);%,等高线,title('surfc(x,y,z)'),subplot(2,2,4);,surfl(x,y,z); %,有光照效果,title('surfl(x,y,z)'),,,3,、标准,三维曲面,sphere,函数的调用格式为:,,[x,y,z]=sphere(n),,产生,(n+1)* (n+1),矩阵,x,、,y,、,z,,采用这三个矩阵可以绘制圆心位于原点、半径为,1,的单位球体。,n,决定了球面的圆滑程度,其默认值为,20,.,,c 31、ylinder,函数的调用格式为:,,[x,y,z]= cylinder(R,n),R,是一个向量,存放柱面各个等间隔高度上的半径,,n,表示在圆柱圆周上有,n,个间隔点,默认有,20,个点。,cylinder(3),生成一个圆柱,,cylinder([10,1]),生成圆锥。,MATLAB,还有一个,peaks,函数,称为多峰函数,常用于三维曲面的演示。,,,例,,绘制,标准三维曲面图形。,程序如下:,t=0:pi/20:2*pi;,[x,y,z]= cylinder(2+sin(t),30);,subplot(1,3,1);,surf(x,y,z);,subplot(1,3,2);,[x, 32、y,z]=sphere;,surf(x,y,z);,subplot(1,3,3);,[x,y,z]=peaks(30);,meshz(x,y,z);,,5.2.3,其他三维,图形,条形图、饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是,bar3,、,pie3,和,fill3,。此外,还有三维曲面的等高线图。等高线图分二维和三维两种形式,分别使用函数,contour,和,contour3,绘制。,,bar3,用于绘制三维条形图。,bar3(y): y,的每个元素对应于一个条形。,bar3(x,y): x,指定的位置上绘制,y,中元素的条形图。,,stem3,绘制离散序列数据的 33、三维赶图。,stem3(z):,将数据序列,z,表示为从,xy,平面向上延伸的杆图,,x,和,y,自动生成。,stem3(x,y,z):,在,x,和,y,指定的位置上绘制数据序列,z,的杆图,,x,、,y,、,z,的维数必须相同。,,,pie3,用于绘制三维饼图。,pie3(x): x,为向量,用,x,中数据绘制一个三维饼图。,,fill3,绘制三维空间内绘制出填充过的多边形。,fill3(x,y,z,c): x,y,z,作为多边形的顶点,,c,表示填充的颜色。,,,例,,绘制,三维图形:,(1),绘制魔方阵的三维条形图。,(2),以三维杆图形式绘制曲线,y=2sin(x),。,(3),已知, 34、x=[2347,1827,2043,3025],,绘制三维饼图。,(4),用随机的顶点坐标值画出五个黄色三角形。,程序,如下:,subplot(2,2,1);,bar3(magic(4)),subplot(2,2,2);,y=2*sin(0:pi/10:2*pi);,stem3(y);,subplot(2,2,3);,pie3([2347,1827,2043,3025]);,subplot(2,2,4);,fill3(rand(3,5),rand(3,5),rand(3,5), 'y' ),,,waterfall,用于绘制瀑布图。,用法,同,meshz,函数相似。,它,的网格线是在,x,轴的方 35、向出现。,,等高线,图分为二维和三维两种形式,分别使用函数,contour,和,contour3,函数。,,,,,,例,,绘制,多峰函数的瀑布图和等高线图。,程序,如下:,subplot(1,2,1);,[X,Y,Z]=peaks(30);,waterfall(X,Y,Z),xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis');,subplot(1,2,2);,contour3(X,Y,Z,12,'k'); %,其中,12,代表高度的等级数,xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z- 36、axis');,,,5.3,三维图形的精细处理,,5.3.1,视点处理,,MATLAB,提供了设置视点的函数,view,。其调用格式为:,,view(az,el),,其中,az,为方位角,,el,为仰角,它们均以度为单位。,系统,缺省的视点定义为方位角,-37.5°,,仰角,30°,。,,,,,,视点,位置有方位角和仰角表示。,方位角(旋转角):是视点与原点连线在,xy,平面上的投影与,y,轴负方向形成的角度,正值表示逆时针,负值表示顺时针。,仰角(视角):是视点与原点连线与,xy,平面的夹角,正值表示视点在,xy,平面上方,负值表示视点在,xy,平面下方。,,,例,,从,不同视点绘制多峰函数 37、曲面。,程序,如下:,,subplot(2,2,1);mesh(peaks);,view(-37.5,30); %,指定子图,1,的视点,,title('azimuth=-37.5,elevation=30'),subplot(2,2,2);mesh(peaks);,view(0,90); %,指定子图,2,的视点,,title('azimuth=0,elevation=90'),subplot(2,2,3);mesh(peaks);,view(90,0); %,指定子图,3,的视点,,title('azimuth=90,elev 38、ation=0'),subplot(2,2,4);mesh(peaks);,view(-7,-10); %,指定子图,4,的视点,,title('azimuth=-7,elevation=-10'),,,5.3.2,色彩,处理,1,、颜色,的向量表示,,MATLAB,除用字符表示颜色外,还可以用含有,3,个元素的向量表示颜色。如,RGB,三元值,[0 0 1],表示蓝色‘,b’,。,2,、色图,色图是,m×3,的数值矩阵,它的每一行是,RGB,三元组。色图矩阵可以人为地生成,也可以调用,MATLAB,提供的函数来定义色图矩阵。,除,plot,及其派生函数外,,mesh,、 39、,surf,等函数均使用色图着色。图形窗口色图的设置和改变,使用函数:,,colormap(m),,其中,m,代表色图矩阵。,3,、三维,表面图形的着色,三维表面图实际上就是在网格图的每一个网格片上涂上颜色。,surf,函数用缺省的着色方式对网格片着色。除此之外,还可以用,shading,命令来改变着色方式。,,,,,,例,3,种图形着色方式的效果展示。,程序如下:,,z=peaks(20);colormap(copper); %copper,纯铜色调线性浓淡色,,subplot(1,3,1);surf(z);,subplot(1,3,2); surf(z);shading flat; %,在 40、网格片用同一个颜色着色,网格线也用相应的颜色。,,subplot(1,3,3);surf(z);shading interp; %,在网格片内采用颜色插值处理,使得表面图光滑。,5.3.3,图形的裁剪,处理,5.3.3,图形的裁剪处理,MATLAB,定义的,NaN,常数可以用于表示那些不可使用的数据,利用这种特性,可以将图形中需要裁剪部分对应的函数值设置成,NaN,,这样在绘制图形时,函数值为,NaN,的部分将不显示出来,从而达到对图形进行裁剪的目的。,例如,要削掉正弦波顶部或底部大于,0.5,的部分,可使用下面的程序:,>>x=0:pi/10:4*pi,;,>>,y=sin(x,);,>>, 41、i=find(abs(y,)>0.5);,>>,x(i,)=NaN;,>>,plot(x,y,);,,,例,,绘制两个球面,其中一个球在另一个球里面,将外面的球裁掉一部分,使得能看见里面的球。,程序如下:,[x,y,z]=sphere(20);,%,生成外面的大球,z1=z;,z1(:,1:4)=NaN; %,将大球裁掉一部分,c1=ones(size(z1));,surf(3*x,3*y,3*z1,c1);,%,生成里面的小球,hold on,z2=z;,c2=2*ones(size(z2));,c2(:,1:4)=3*ones(size(c2(:,1:4)));,surf(1.5*x 42、,1.5*y,1.5*z2,c2);,colormap([0,1,0;0.5,0,0;1,0,0]);,grid on,hold off,,5.4,隐函数,绘图,MATLAB,提供了一个,ezplot,函数绘制隐函数图形,下面介绍其用法。,(1),对于函数,f = f(x),,,ezplot,函数的调用格式为:,ezplot(f),:在默认区间,-2π 43、认区间,-2,π<,x<2,π,和,-2,π<,y<2,π,绘制,f(x,y) = 0,的图形。,ezplot(f, [xmin,xmax,ymin,ymax]),:在区间,xmin 44、,y, [tmin,tmax]),:在区间,tmin < t < tmax,绘制,x=x(t),和,y=y(t),的图形。,,,例,,隐函数,绘图应用举例。,程序如下:,subplot(2,2,1);,ezplot('x^2+y^2-9');axis equal,subplot(2,2,2);,ezplot('x^3+y^3-5*x*y+1/5'),subplot(2,2,3);,ezplot('cos(tan(pi*x))',[ 0,1]),subplot(2,2,4);,ezplot('8*cos(t)','4*sqrt(2)*sin(t)',[0,2*pi]),,,5.5,低层绘图操作, 45、5.5.1,图形对象及其句柄,,1,、图形,对象,,MATLAB,把构成图形的各个基本要素称为图形对象。这些对象包括计算机屏幕、图形窗口,(Figure),、坐标轴,(Axes),、用户菜单,(Uimenu),、用户控件,(Uicontrol),、曲线,(Line),、曲面,(Surface),、文字,(Text),、图像,(image),、光源,(Light),、区域块,(Patch),和方框,(Rectangle),。系统将每一个对象按树型结构组织起来。每个图形对象都可以被独立地操作。,,,,2,、图形,对象句柄,,MATLAB,在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图 46、形对象句柄,(Handle),。句柄是图形对象的唯一标识符。,,MATLAB,提供了,3,个用于获取已有图形对象句柄的函数:,,gcf,获取当前图形窗口的句柄,(get current figure),。,,gca,获取当前坐标轴的句柄,(get current axis),。,,gco,获取最近被单击的图形对象的句柄,(get current object),。,,5.5.2,图形对象属性,1,、属性,名与属性值,,MATLAB,给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值。例如,,LineStyle,是曲线对象的一个属性名,它的值决定着线型,取值可以是,'-' 47、,、,':',、,'-.',、,'--',或,'none',。,2,、属性,的操作,,set,函数的调用格式为:,,set(,句柄,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,…),get,函数的调用格式为:,,V=get(,句柄,属性名,),,,3,、对象,的公共属性,图形对象具有各种各样的属性,有些属性是所有对象共同具备的,有些则是各对象所特有的。,,,例,,在,同一坐标下画红、绿两根,不同,,曲线,,希望获得绿色曲线的句柄,,,,并,对其进行设置。,程序如下:,x=0:pi/50:2*pi;,y=sin(x);,z=cos(x);,plot(x,y,'r',x,z,'g') 48、;,H=get(gca,'Children'); %,获取两曲线句柄向量,H,for k=1:length(H),if get(H(k),'Color')==[0 1 0] %[0 1 0],代表绿色,,Hg=H(k); %,获取绿色线条句柄,,end,end,pause %,便于观察设置效果,set(Hg,'LineStyle',':','Marker','p'); %,对绿色曲线进行设置,,5.5.3,图形对象的,创建,1,、图形,窗口对象,建立图形窗口对象使用,figure,函数。调用该函数的命令形式为: 49、,句柄变量,=figure(,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,…),MATLAB,为每个图形窗口提供了很多属性。这些属性及其取值控制着图形窗口对象。除公共属性外,其他常用属性:,MenuBar,属性、,Name,属性、,Position,属性、,Color,属性等。,,,,例,,建立,一个图形窗口。该图形窗口没有菜单条,标题名称为“图形窗口示例”,起始于屏幕左下角、宽度和高度分别为,300,像素点和,150,像素点,背景颜色为绿色,且当用户从键盘按下任意一个键时,将显示“,Hello,Keyboard Key Pressed.”,字样。,命令如下:,,hf=figur 50、e('Color',[0,1,0],'Position',[1,1,300,150,],...,'Name',',图形窗口示例,','NumberTitle,', 'off,','MenuBar,', 'none',...'KeyPressFcn', 'disp,(''Hello,Keyboard Key,Pressed.'')');,结果如下:,Hello,Keyboard,Key Pressed.,,例,,分别,在,4,个不同的图形窗口绘制出正弦、余弦、正切、余切曲线。要求先建立一个图形窗口并绘图,然后每关闭一个再建立下一个,直到建立第,4,个窗口并绘图。,程序如下:,,x=linspac 51、e(0,2*pi,60);,y=sin(x);z=cos(x);t=tan(x);ct=1./(t+eps);;,%,命令组待用,,C4=['figure(''Name'',''cotangent(x)'',''NumberTitle'',',...,'''off'');plot(x,ct);axis([0,2*pi,-40,40]);'];,C3=['figure(''Name'',''tangent(x)'',''DeleteFcn'',C4,',...,'''NumberTitle'',''off'');plot(x,t);axis([0,2*pi,-40,40]);'];,C2=['f 52、igure(''Name'',''cos(x)'',''DeleteFcn'',C3,',...,'''NumberTitle'',''off'');plot(x,z);axis([0,2*pi,-1,1]);'];,%,先创建,1,个图形窗口并绘制曲线,,figure('Name','sin(x)','DeleteFcn',C2,'NumberTitle','off');,plot(x,y);axis([0,2*pi,-1,1]);,,,依次产生下面的四个图:,,2,、坐标轴,对象,建立坐标轴对象使用,axes,函数,调用它的命令形式为:,句柄,变量,=axes(,属性名,1,,属性值,1, 53、,属性名,2,,属性值,2,,,…),MATLAB,为每个坐标轴对象提供了很多属性。除公共属性外,还有其他常用属性。,,,,,,,例,,利用,坐标轴对象实现图形窗口的任意分割。,程序如下:,>>,x=linspace(0,2*pi,20);y=sin(x); axes('Posi',[0.2,0.2,0.2,0.7]);plot(y,x);title('sin(x)-1'); axes('Posi',[0.4,0.5,0.2,0.1]);stairs(x,y);title('sin(x)-2'); axes('Posi',[0.55,0.6,0. 54、25,0.3]);stem(x,y);title('sin(x)-3'); axes('Posi',[0.55,0.2,0.25,0.3]);stem(x,y);title('sin(x)-4,');,,,3,、曲线,对象,建立曲线对象使用,line,函数,调用它的命令形式为:,,句柄,变量,=line(x,y,z,,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,…),,其中对,x,y,z,的解释与高层曲线函数,plot,和,plot3,等一样,其余的解释与前面介绍过的,figure,和,axes,函数类似。每个曲线对象也具有很多属性。除公共属性外,还有其 55、他常用属性,。,,,例,利用曲线对象绘制曲线。,程序如下:,t=0:pi/100:pi/2;,y1=sin(2*pi*t);,y2=sqrt(3)/2*exp(-4*t).*sin(4*sqrt(3)*t+pi/3);,figh=figure;,axes('GridLineStyle',':','XLim',[0,pi/2],'YLim',[-1,1]);,line('XData',t,'YData',y1,'LineWidth',1);,line(t,y2);,grid on,,,,4,、文字,对象,使用,text,函数可以根据指定位置和属性值添加文字说明,并保存句柄。调用该函数的命令形式为 56、:,句柄变量,=text(x,y,z,‘,说明文字’,,,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,…),,其中说明文字中除使用标准的,ASCII,字符外,还可使用,LATEX,格式的控制字符。,除公共属性外,文字对象还有其他常用属性。,,例,,利用,曲线对象绘制曲线和并,利,,用,文字对象完成标注。,程序如下:,theta=-pi:.1:pi;,y1=sin(theta);,y2=cos(theta);,h=line(theta,y1,'LineStyle',':','Color','g');,line(theta,y2,'LineStyle','--','Color','b 57、');,xlabel('-\pi \leq \theta \leq \pi'),ylabel('sin(\theta)'),title('Plot of sin(\theta)'),text(-pi/4,sin(-pi/4),'\leftarrow sin(-\pi\div4)','FontSize',12),set(h,'Color','r','LineWidth',2) %,改变曲线,1,的颜色和线宽,,,,5,、曲面,对象,建立曲面对象使用,surface,函数,调用它的命令形式为:,句柄变量,=surface(x,y,z,,属性名,1,,属性值,1,,属性名,2,,属性值, 58、2,,,…),,其中对,x,y,z,的解释与高层曲面函数,mesh,和,surf,等一样,其余的解释与前面介绍过的,figure,和,axes,等函数类似。,每个曲面对象也具有很多属性。除公共属性外,还有其他常用属性。,,,例,,利用,曲面对象绘制三维,曲面,z=sin(y)cos(x,),。程序如下:,,x=0:0.1:2*pi;[x,y]=meshgrid(x);z=sin(y).*cos(x);axes('view',[-37.5,30]);hs=surface(x,y,z,'FaceColor','w','EdgeColor','flat');,grid on;,xlabel(' 59、x-axis'),ylabel('y-axis'),zlabel('z-axis');,title('mesh-surf');,pause;set(hs,'FaceColor','flat');,,6,、区域,块对象,区域块对象是指一个任意多边形区域。在,MATLAB,中,可以使用,patch,函数创建一个或多个多边形。有两种形式的,patch,函数,一种是高级语法形式,另一种是低级语法形式。前者通过指定每个小面的顶点坐标和颜色来创建区域块对象,后者通过指定所有顶点的坐标和各小面的顶点和颜色来创建。,使用高级语法形式时,,patch,函数的调用格式为:,,patch(x,y,z,c),,该函 60、数在当前坐标轴中创建二维,(x,y),或三维,(x,y,z),空间中带填充模式的区域块对象。,x,y,z,确定顶点坐标。如果,x,y,z,为矩阵,则,MATLAB,按列创建多个多边形。,c,指定每一区域块对象的颜色,它既可以用字符表示,也可以用,RGB,三元组表示,。,,7,、方框,对象,在,MATLAB,中,矩形、圆角矩形、椭圆、圆及对应的区域图形都用方框对象表示。使用,rectangle,函数可以创建方框对象,其调用格式为:,句柄变量,= rectangle (,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,…),,,,,例,,在,同一个图形窗口中创建,矩形,,、,圆角矩形、椭 61、圆和圆各一个,,,,并,使用了不同的线型和线宽。,subplot(2,2,1);,rectangle('Position',[2,3,25,15],'LineWidth',3);,subplot(2,2,2);,rectangle('Position',[3,5,15,8], 'Curvature',0.4,'LineWidth',2);,subplot(2,2,3);,rectangle('Position',[5,3,10,15],'Curvature',[1,1]);,subplot(2,2,4);,rectangle('Position',[5,3,10,10],'Curvature' 62、,[1,1],...,'LineStyle','--','FaceColor','r');,axis equal,,5.6,光照和材质处理,5.6.1,光照处理,为了创建光照效果,,MATLAB,提供了光源,(Light),图形对象。用,light,函数创建,Light,对象,该函数的调用格式为:,light('Color',,选项,1,'Style',,选项,2,'Position',,选项,3),利用,lighting,命令可以设置光照模式,其格式为:,lighting,选项,其中选项有,4,种取值:,flat,、,gouraud,、,phong,、,none,。,,例,,光照处理,后的球 63、面并观察不同光照模式下的效果。,程序如下:,[x,y,z]=sphere(20);,subplot(1,4,1);,surf(x,y,z);axis equal;,shading interp;,hold on;,subplot(1,4,2);,surf(x,y,z);axis equal;,light('Position',[0,1,1]);,shading interp;lighting flat;,hold on;,plot3(0,1,1,'p');text(0,1,1,' light');,subplot(1,4,3);,surf(x,y,z);axis equal;,light('P 64、osition',[0,1,1]);,shading interp;lighting gouraud;,hold on;,subplot(1,4,4);,surf(x,y,z);axis equal;,light('Position',[0,1,1]);,shading interp;lighting phong;,,5.6.2,材质,处理,材质体现了图形对象的反射特性,修改区域块和曲面对象的反射特性,,,可以改变在场景中应用光照时对象的显示外观。这些特性包括,:,镜面反射和漫反射、环境光、镜面反射指数、镜面反射光的颜色和背面光照。,,,例,,生成,一个球体和一个立方体,,,,观察,不同光照属 65、性对应的显示效果。,程序如下:,sphere(36);,h=findobj('Type','surface');,set(h,'FaceLighting','phong','FaceColor','interp',...,'EdgeColor',[0.4,0.4,0.4],'BackFaceLighting','lit'),hold on,vert=[2,0,-1;2,1,-1;3,0,0;3,0,-1;2,0,0;2,1,0;3,1,0;3,0,0];,fac=[1,2,3,4;2,6,7,3;4,3,7,8;1,5,8,4;1,2,6,5;5,6,7,8];,patch('Faces',f 66、ac,'Vertices',vert,'FaceColor','y');,light('Position',[1,3,2]);,light('Position',[-3,-1,3]);,material shiny,axis equal,hold off,,5.7,图像显示与动画制作,5.7.1,图像显示,,1,、,imread,和,imwrite,函数,,imread,和,imwrite,函数分别用于将图像文件读入,MATLAB,工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件。,,2,、,image,和,imagesc,函数,这两个函数用于图像显示。为了保证图像的显示效果,一般还应使用,colormap,函数设置图像色图。,,,例,,在,E,盘根目录下有一图像文件,flower.jpg,,在图形窗口显示该图像。,程序如下:,[x,cmap]=imread('e:\flower.jpg'); %,读取图像的数据阵和色图阵,image(x); %,显示图像,colormap(cmap);,axis image off %,保持宽高比并取消坐
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。