资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第三章,MATLAB,数据可视化,MATLAB,二维数据可视化,MATLAB,三维数据可视化,MATLAB,可视化图形修饰,MATLAB,句柄绘图,数据包含大量信息,是信息的载体,但人们很难直观地从大量原始的数据中发现它们的具体物理含义或内在规律。,数据可视化,是一项使,数据图形化表达,的重要技术,能使视觉感官直接感受到,数据的许多内在本质,,,发现数据的内在联系,。,MATLAB,提供了,强大的图形处理和编辑功能,,能够将经过数据处理、运算和分析后的结果通过图形的方式直观地进行表示。,MATLAB,可以表达出数据的二维图形、三维图形和四维图形。通过对图形的线型、立面、色彩、光线、视角等属性的控制,可把数据的内在特征表现得更加细腻完善。本章的主要内容包括二维曲线绘制、三维图形绘制、可视化图形修饰、句柄绘图。,3.1,二,维数据可视化,大多数据以二维的形式存在,即包括横纵坐标值。二维数据可视化是最为常用的数据可视化方法,能将复杂的数据直观的显示出来。,例,3.1,:衰减振动幅值与时间的函数关系为,,一个复杂的函数通常我们很难直观的,了解其形式,如果以二维图像的方,式显示出来,如图所示,其数据随,时间的变化关系变得非常直观。,3.1,二,维数据可视化,二维数据可视化是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,除,直角坐标系,外,还可采用,对数坐标、极坐标,。,3.1.1,基本二维曲线绘制,1.plot,函数,plot,函数的基本调用格式为:,plot(y),此命令中参数,y,可以是向量、实数矩阵或复数向量。,例,3.2,利用,plot(y),命令绘制向量,程序如下:,x=1:0.1:10;%,定义自变量,x,y=sin(2*x);%,计算与自变量相 应的,y,数组,plot(y);,例,3.3,利用,plot(y),命令绘制矩阵,程序如下:,y=0 1 2;2 3 4;5 6 7%,定义矩阵,y,plot(y)%,绘制矩阵,y,plot,函数的另一种调用格式为,:,plot(x,y),其中,x,y,均可为向量和矩阵,,x,y,具有相同的列数。,(1),当,x,是向量,,y,是有一维与,x,同维的矩阵,;,x=1:0.1:10;,y=sin(2*x);,plot(x,y);,首先产生一个行向量,x,,然后求取对应行向量,sin(2x),并以,x,为横坐标,,y,为纵坐标,最后在同一坐标中同时绘制出该曲线。,(2),当,x,为向量,,y,为矩阵时,使用,plot(x,y),绘图,此处,,x,是一个行向量,,y,是由两个与,x,维数相同的行向量构成的矩阵,,此时,plot(x,y),将以,x,为横坐标,分别以,y,的两个行向量为纵坐标绘制两条曲线,x=0:0.1:10;%,定义自变量,x,y=sin(x)+2;cos(x)+1;%y,由两个行向量组成的矩阵,plot(x,y),(3),当,x,、,y,均为矩阵时,使用,plot(x,y),绘图,此处,,x,y,是具有相同维数的矩阵,,绘图是,以,x,的列向量作为横坐标,以,y,对应的列向量作为纵坐标,当,x,、,y,有,n,列时,同时绘制出,n,条曲线,x=1 2 3;4 5 6;7 8 9;2 3 4;5 6 7;%,定义矩阵,x,y=2 4 5;3 6 7;4 6 8;1 3 5;2 6 3;%,定义矩阵,y,plot(x,y),3.1.2,绘图辅助操作,绘图辅助操作是在,plot,函数的基础上增加颜色、线型等输入参数,含多个输入参数的,plot,函数调用格式为:,plot(x,y,param1,value1param2,value2),1,设置图形颜色、线型等参数,t=0:pi/50:12;,y=exp(-t/3).*sin(3*t);,y1=exp(-t/3);,plot(t,y,-r*,LineWidth,1),hold on,plot(t,y1,b,LineWidth,2),该图中通过参数设置绘制出了两条不同颜色、不同线型的曲线,LineStyle,线型,LineWidth,线宽,Color,颜色,MarkerType,标记点的形状,MarkerSize,标记点的大小,MarkerFaceColor,标记点内部的填充颜色,MarkerEdgeColor,标记点边缘的颜色,plot,命令中可设定的属性如表所示,颜色名称,颜色符号,标记符号,标记符号,线型名称,现形符号,蓝色,b,点号,.,实线,-,圆圈,O,绿色,g,叉号,X,点线,:,红色,r,加号,+,点画线,-.,青色,c,星号,*,虚线,-,洋红,m,方形,S,黄色,y,菱形,D,黑色,k,向下三角形,白色,w,向上三角形,向右三角形,五角星,P,六角星,h,例 使用,plot,属性设置绘图,t=0:pi/50:12;,plot(t,sin(2*t),-mo,LineWidth,2,MarkerEdgeColor,k,.,MarkerFaceColor,.49 1.63,.,MarkerSize,6),其中,-mo,设置了曲线线型为、标记颜色、标记符号,,MarkerEdgeColor,、,MarkerFaceColor,、,MarkerSize,分别表示标记填充颜色、标记边缘颜色以及标记符号大小,其后为对应属性值。,2,坐标轴标注和范围设置,在进行图形绘制时,可以设置坐标轴来改变图形的显示效果,使所绘制的曲线在合理的范围内表现出来。图形坐标轴的设置主要包括坐标轴的,标注、范围、刻度,以及,宽高比,等参数。坐标轴进行标注函数主要有:,xlabel(string),xlabel(,PropertyName,Pr opertyValue,),xlabel(fname),ylabel(string),ylabel(fname),zlabel(string),zlabel(fname),String,为标注字符串,,fname,是一个函数名,该函数必须返回一个字符串作为标注语句。,PropertyName,和,PropertyValue,分别用于定义相应标注文本的属性和属性值,包括字体大小、字体名和字体粗细等。,坐标轴的范围设置函数主要有,:,axis(xmin xmax ymin ymax),设置坐标轴的范围,包括横,/,纵坐标,axis xy,将坐标轴设置为笛卡儿模式,V=axis,返回当前坐标范围的一个行向量,axis equal,设置屏幕的宽高比,xlim/ylim/zlim,分别设置,x,轴,/y,轴,/z,轴坐标范围,axis image,设置坐标轴的范围,使其与图形相适应,axis auto,坐标轴的刻度回复为默认的设置,axis square,将坐标轴设置为正方形,axis manual,冻结坐标轴的刻度,axis normal,将当前的坐标轴框恢复为全尺寸,axis tight,将坐标轴的范围设定为被绘制的数据的范围,axis vis3d,冻结屏幕的宽高比,axis fill,使坐标充满整个绘图区域,axis off,关闭所有坐标轴的标签、刻度和背景,axis ij,将坐标轴设置为矩阵模式,axis on,打开所有坐标轴的标签、刻度和背景,例,5.3,对同一图形采用不同的坐标轴方式进行显示,t=0:pi/50:2*pi;,x=4*sin(t);,y=5*cos(t);,figure,plot(x,y);,xlabel(normal),axis normal;,grid on,figure,plot(x,y);,xlabel(equal),axis equal;,grid on,figure,plot(x,y);,xlabel(image fill),axis image fill;,grid on,figure,plot(x,y);,xlabel(tight),axis image tight;,grid on,figure,plot(x,y);,xlabel(,指定范围,),axis(-4 4-5 5);,grid on,figure,plot(x,y);,xlim(-5 5);,ylim(-5 5);,xlabel(xlim,ylim),grid on,(a),绘制方式,1,:,normal,(b),绘制方式,2,:,equal,(c),绘制方式,3,:,image fill,(d),绘制方式,4,:,tight,(e),绘制方式,5,:,axis,(f),绘制方式,6,:,xlim,ylim,3,背景、标题、文本设置,背景色设置函数,figure(color,colorvalue);,set(gcf,color,w),标题设置函数,title(string),title(.,PropertyName,PropertyValue,.),文本标注函数,text(x,y,string),text x,y,string,PropertyName,PropertyValue,),例,标题、背景以及文本设置。,backColor=0.3 0.6 0.4;,figure(color,backColor);,t=0:0.1:2*pi;,y=sin(2*t);,plot(t,y,title(Title Stytle,fontsize,16,color,r),xlabel(t,fontsize,12,color,m);,ylabel(y,fontsize,12,color,g);,text(xPoint,yPoint,y=sin(2*t),fontsize,16,color,k);,4,图例标注,在对数值结果进行绘图时,经常会出现在一幅图中绘制多条曲线的情况,这时用户可以使用,legend,命令为曲线添加图例以便区分它们。,legend,函数能够为图形中所有的曲线进行自动标注,并以输入变量作为标注文本。,其调用格式如下:,legend(string1,string2,),legend(,Location,location),其中,,string1,、,string2,等分别标注对应绘图过程中按绘制先后顺序所生成的曲线,,Location,location,用于定义标注放置的位置。,Location,可以是一个,14,向量(,left bottom width height,)或任意一个字符串。,位置字符串,位,置,位置字符串,位,置,North,绘图区内的上中部,South,绘图区内的底部,East,绘图区内的右部,West,绘图区内的左中部,NorthEast,绘图区内的右上部,NorthWest,绘图区内的左上部,SouthEast,绘图区内的右下部,SouthWest,绘图区内的左下部,NorthOutside,绘图区外的上中部,SouthOutside,绘图区外的下部,EastOutside,绘图区外的右部,WestOutside,绘图区外的左部,NorthEastOutside,绘图区外的右上部,NorthWestOutside,绘图区外的左上部,SouthEastOutside,绘图区外的右下部,SouthWestOutside,绘图区外的左下部,Best,标注与图形的重叠最小处,BestOutside,绘图区外占用最小面积,x=-pi:pi/20:pi;,y1=cos(x);y2=sin(x);,figure,plot(x,y1,-ro,x,y2,-.b);,legend(y1,y2,location,NorthWest);,figure,plot(x,y1,-ro,x,y2,-.b);,legend(y1,y2,location,NorthEast);,figure,plot(x,y1,-ro,x,y2,-.b);,legend(y1,y2,3);,figure,plot(x,y1,-ro,x,y2,-.b);,legend(y1,y2,4);,例 使用,legend,命令进行图例标注。,标注的位置还可以通过定位代号来定义:,0,:自动定位,使得标注图标与图形重叠最少,1,:默认值,置于图形的右上角,2,:置于图形的左上角,3,:置于图形的左下角,4,:置于图形的右下角,-1,:置于图形的右外侧,3.1.3,多图叠绘、双纵坐标、多子图,1.,多图叠绘,使用,MATLAB,绘制图形时,常常需要将多个图形绘制在一幅图中。此时,用户可以选择使用,hold,属性来改变图形的叠绘情况。,hold,命令的常见格式,为:,hold on,原来的坐标轴不会被删除,新的曲线将添加在原来的图形上,如果曲线超出当前的范围,坐标轴将重新绘制刻度,hold off,将当前图形窗口中的图形释放,绘制新的图形,hold,实现,hold,命令之间的切换,例,多图叠绘示例,程序如下:,t=0:0.1:2*pi;,x=sin(2*t);,y=cos(2*t)+0.5;,plot(t,x);,%,上次绘图保留,hold on;,plot(t,y,m*-);,%,解除上次绘图保留,hold off;,grid on;,legend(x=sin(2*t),y=cos(2*t)+0.5);,2.,双纵坐标绘制,在科学计算和分析中,常常需要将同一自变量的两个(或多个)不同量纲、不同数量级的函数曲线在一幅图形中绘制出来。,MATLAB,中提供了,plotyy,函数来绘制双坐标轴的曲线。,plotyy,函数的常见命令格式如下:,plotyy(x1,y1,x2,y2),绘制两条曲线,x1-y1,和,x2-y2,,两条曲线分别以左右纵轴为纵轴,plotyy(x1,y1,x2,y2,fun),绘制两条曲线,x1-y1,和,x2-y2,,两条曲线分别以左右纵轴为纵轴,曲线的类型由,fun,指定,plotyy(x1,y1,x2,y2,fun1,fun2),绘制两条曲线,x1-y1,和,x2-y2,,两条曲线分别以左右纵轴为纵轴,两条曲线的类型分别由,fun1,和,fun2,指定,例 利用,plotyy,函数绘制曲线,和,程序如下:,x1=0:0.1:5;,y1=exp(-x1/3);,x2=0:0.1:5;,y2=sin(2*x2);,plotyy(x1,y1,x2,y2);,title(plotyy exam);,3.,多子图绘制,在一个图形窗口中可以包含多套坐标轴系。此时,可以在一个图形窗口中绘制多个不同的子图来达到效果和目的。在,MATLAB,中可以使用,subplot,函数来绘制子图。,subplot,函数的常见命令格式如下:,subplot(m,n,p),将图形窗口分为,mn,个子窗口,在第,p,个子窗口中绘制图形,子图的编号顺序为从左到右,从上到下,subplot(m,n,p,replace),若在绘制图形时,子图,p,已经绘制坐标系,此时将删除原来的坐标系,用新的坐标系代替,subplot(m,n,p,align),对齐坐标轴,例 利用,subplot,绘制函数,sin(x),、,2sin(x)cos(x),、,sin(x)/cos(x),的图形。,程序如下:,x=0:0.1:2*pi;y=sin(2*x);,subplot(2,2,1);,plotyy(x1,y1,x2,y2);,title(plotyy exam);,plot(x,y);title(y=sin(2x);,y=2*sin(2*x).*cos(x);,subplot(2,2,2);,plot(x,y);,title(y=2sin(2x)cox(x);,y=sin(x)./cos(x);,subplot(position,0.2 0.05 0.6 0.4);,plot(x,y);,title(y=sin(x)/cos(x);,3.1.4,特殊二维图形绘制,MATLAB,除了提供常用的二维曲线绘制和相关辅助功能外,还提供条形图、矢量图、柱状图、饼状图等二维图形绘制功能。,函数,功能,函数,功能,函数,功能,area,填充绘图,fplot,函数绘制,fill,多边形填充,bar,条形图,hist,柱状图,gplot,拓扑图,barh,条形水平图,pareto,帕累托图,compass,与,feather,同,comet,彗星图,pie,饼状图,stairs,阶梯图,errorbar,误差带图,plotmatrix,分散矩阵绘制,rose,极坐标系下的柱状图,ezplot,简单函数图,ribbon,三维图的二维条状显示,quiver,功能类似的矢量图,ezpolar,简单极坐标图,scatter,散射图,feather,矢量图,stem,离散序列火柴杆状图,1.,垂直条形图绘制,bar,命令用于绘制二维垂直条形图,用垂直条形显示向量或矩阵中的值。,bar,函数的常见命令格式如下:,bar(y),为每一个,y,中的元素画一个条状,bar(x,y),在指定横坐标,x,上画出,y,,其中,x,为严格单调递增的向量,bar(,width),设置条形的相对宽度。默认值为,0.8,,所以如果用户未指定,x,,则同一组内的条形有很小的间距,若设置,width,为,1,,则同一组内的条形相互接触,bar(,style),style,定义条的形状类型,可取值,group,或,stack,bar(,bar_color),bar_color,定义条的颜色,例 使用,bar,命令绘制条形图,程序如下:,y=round(rand(5,4)*10);,bar(y,group,r);,title(bar exam),group,表示若,y,为,nm,阶矩阵,则,bar,显,n,组,每组有,m,个垂直条形的条形图。,2.,饼状图绘制,pie,命令用于绘制饼形图。,Pie,函数的常见命令格式如下:,pie(x),为每个,x,中的元素画一个扇形,pie(x,explode),explode,与,x,同维的矩阵,若其中有非零元素,,x,矩阵中的相应位置的元素在饼图中对应的扇形将向外移出一些,加以突出,pie(,labels),labels,用于定义相应块的标签,例 使用,pie,命令绘制饼形图,程序如下:,x=7 18 24 19 9 2;,explode=0 1 1 1 0 0;,pie(x,explode,优秀,良好,中等,及格,不及格,缺考,);,Explode,将部分扇形移出突出显示,3.,等高线绘制,contour,命令用于绘制等高线图。,contour,函数的常见命令格式如下:,Z,必须为一数值矩阵,是必须输入的变量,n,为所绘图形等高线的条数,v,为向量,等高线条数等于该向量的长度,并且等高线的值为对应向量的元素值,c,为等高线矩阵,PropertyName,是等高线的属性参数,PropertyValue,是等高线的属性值,contour(Z),contour(Z,n),contour(Z,v),contour(X,Y,Z),contour(X,Y,Z,n),contour(X,Y,Z,v),contour(,PropertyName,PropertyValue),例 使用,contour,绘制等高线,程序如下:,X,Y=meshgrid(-2:.2:2,-2:.2:3);,Z=X.*exp(-X.2-Y.2);,C,h=contour(X,Y,Z,ShowText,on);,4.,矢量图绘制,quiver,命令用于绘制矢量图或速度图,以及绘制向量场的形状。,quiver,函数的常见命令格式如下:,quiver(x,y,u,v),在坐标,(x,y),点处用箭头图形绘制向量,,(u,v),为相应点的速度分量。,x,、,y,、,u,、,v,必须具有相同的大小,quiver(u,v),以,u,或,v,矩阵的列和行的下标为,X,和,Y,轴的自变量,,(u,v),为相应点的速度分量,quiver(,scale),scale,用于控制图中向量“长度”的实数,默认值为,1,。有时需要设置较小的值,以免绘制的向量彼此重叠掩盖,quiver(,LineSpec),LineSpec,用于设置矢量图中线条的线型、标记符号和颜色等,例 使用,quiver,绘制矢量图,程序如下:,X,Y=meshgrid(-2:.2:2);,Z=X.*exp(-X.2-Y.2);,DX,DY=gradient(Z,.2,.2);,contour(X,Y,Z,ShowText,on);,hold on,quiver(X,Y,DX,DY);,3.2,三维数据可视化,在实际工程,中,常遇到三维数据,为了将三维数据可视化,需要将结果表示成三维图形,,MATLAB,语言为此提供了相应的三维图形绘制功能。最常用的三维绘图是绘制三维曲线图、三维网格图和三维曲面图三,种基本类型,相应的,MATLAB,命令为,plot3,、,mesh,和,surf,,分别绘制三维曲线图,、,三维曲面图和三维框架图,,,此外还可以通过颜色表现第四维。,3.2.1,三维曲线绘制,plot3(x,y,z,),plot3(x,y,z,LineSpec,),plot3(,PropertyName,PropertyValue,),与,plot,类似,,plot3,是三维绘图的基本函数,但在输入参数时,用户需要输入第三个参数数组。其调用格式如下:,其中,,,x,、,y,、,z,为,相同维数的向量或矩阵,在绘制过程中分别以对应列的元素作为,x,、,y,、,z,坐标,曲线的个数等于数组的列数。,LineSpec,定义曲线线,型、颜色和数据点等,,,PropertyName,是,线对象的属性名,,PropertyValue,是,相应属性的值。,【例3.21】利用plot3命令绘制螺旋线。,绘图程序代码如下,绘图结果如图所示。,t=0:pi/50:10*pi;,x=cos(t);,y=sin(t);,z=t;,plot3(x,y,z);,title(plot3 exam);,xlabel(x,fontsize,14);,ylabel(y,fontsize,14);,zlabel(z,fontsize,14);,grid on,【,例,3.22】,利用,plot3,命令绘制多条三维曲线。,绘图程序代码如下,绘图结果如图,3.22,所示。,x=0:pi/50:4*pi;,z1=sin(x);z2=sin(x*2);z3=sin(x*3);,y1=zeros(size(x);,y2=ones(size(x);,y3=y2*2+y1;,plot3(x,y1,z1,-r*,x,y2,z2,-,bx,x,y3,z3,-mh);,title(plot3 exam2);,xlabel(x,fontsize,14);,ylabel(y,fontsize,14);,zlabel(z,fontsize,14);,legend(x-y1-z1,x-y2-z2,x-y3-z3);,grid on;,3.2.2,三维网格绘制,在对三维数据进行分析处理时,常常还需要绘制三维曲线或曲面的网格图。在,MATLAB,中,网格图常通过,mesh,函数来绘制,该命令与,plot3,不同的是,它可以绘出某一区间内的完整曲面,而不是单根曲线。函数,mesh,的常用格式如表所示。,格,式,说,明,mesh(z),此时,以,z,矩阵的列和行的下标为,X,和,Y,轴的自变量绘制网格图,mesh(x,y,z),其中,,x,和,y,为自变量矩阵,,z,为建立在,x,和,y,之上的函数矩阵,mesh(x,y,z,c),此命令和上面的命令相比,,c,用于指定矩阵,z,在各点的颜色,x,和,y,必须均为向量,若,x,和,y,的长度分别为,m,和,n,,则,Z,必须为,mn,的矩阵,也即,m,n=size(Z),。,MATLAB,提供一些内置函数来,生成数据矩阵,用于,mesh,函数绘图,如,peaks,、,sphere,等。,x,y,z=peaks(30);%产生三维网格,mesh(x,y,z);%mesh绘制三维网格,title(mesh exam1);,xlabel(X);,ylabel(Y);,zlabel(Z);,grid on;,【例3.23】使用mesh函数绘制peaks网格面。,MATLAB程序如下所示,绘制图形如图3.23所示。,【,例,3.24】,使用,mesh,函数绘制自定义三维网格。,MATLAB,程序如下所示,绘制图形如图,3.24,所示。,x=-4:0.2:4;,y=x;,m=ones(size(y)*x;,n=y*ones(size(x);,p=sqrt(m.2+n.2)+eps;,z=sin(p)./p;,mesh(z);,title(mesh exam2);,grid on;,在,MATLAB,中,系统还提供两种变体形式的,mesh,函数,,即,meshz,和,meshc,。这两个变体,mesh,函数的区别在于,,meshc,函数在三维曲面图的下方绘制等值线图,而,meshz,的,作用在于增加边界绘图功能。下面通过例子说明,这,两个函数的区别。,【,例,3.25】,使用,meshc,函数绘制三维网格图。,MATLAB,程序如下所示,绘制图形如图,3.25,所示。,x,y,z=peaks(30);,meshc(x,y,z);,title(meshc exam);,xlabel(X);,ylabel(Y);,zlabel(Z);,grid on;,【,例,3.26】,使用,meshz,函数绘制三维网格图。,MATLAB,程序如下所示,绘制图形如图,3.26,所示。,x,y,z=peaks(30);,meshz(x,y,z);,title(meshz exam);,xlabel(X);,ylabel(Y);,zlabel(Z);,grid on;,3.2.3,三维曲面绘制,和,mesh,绘制的,图,形,相比,,surf,函数绘制的曲面图,可,使曲面上的所有网格都填充颜色。该命令的格式与,mesh,函数的格式相同,,参数设置也大致相同。其调用格式如表,所示。,格,式,说,明,surf(Z),此时,以,z,矩阵的列和行的下标为,X,和,Y,轴的自变量绘制曲面图,surf(X,Y,Z),其中,,x,和,y,为自变量矩阵,,z,为建立在,x,和,y,之上的函数矩阵,surf(X,Y,Z,C),此命令和上面的命令相比,,c,用于指定矩阵,z,在各点的颜色,surf(,PropertyName,PropertyValue),PropertyName,PropertyValue,用于设置曲面图的颜色、线型等属性,X,和,Y,必须均为向量,若,X,和,Y,的长度分别为,m,和,n,,则,Z,必须为,mn,的矩阵,也即,m,n=size(Z),。此时,,网格线的顶点为,(X(j),Y(i),Z(i,j),;若参数中,未,提供,X,、,Y,,则将,(i,j),作为,Z(I,j),的,X,、,Y,轴坐标值。,【,例,3.27】,使用,surf,命令绘制三维曲面。,MATLAB,程序如下所示,绘制图形如图所示。,x,y,z=peaks(30);,surf(x,y,z);,title(surf exam);,xlabel(X);,ylabel(Y);,zlabel(Z);,grid on;,surf,函数也有一些变体,。,surfc,函数在绘制曲面图时,在底层绘制等值线图,;,surfl,函数在绘制曲面图时,则考虑到了光照效果,;,urfnorm,函数根据输入的数据,x,、,y,和,z,来,定义各个表面的法线,同时在数据点处绘制曲面的法线向量。,【,例,3.28】,使用,surfc,命令绘制三维曲面。,MATLAB,程序如下所示,绘制图形如图所示。,x,y,z=peaks(30);,surfc(x,y,z);%surfc绘制三维曲面,title(surfc exam);,【例3.29】使用surfl命令绘制三维曲面。,MATLAB程序如下所示,绘制图形如图3.29所示。,x,y,z=peaks(30);,surfl(x,y,z);,title(surfl exam);,【例3.30】使用surfnorm命令绘制三维曲面。,MATLAB程序如下所示,绘制图形如图3.30所示。,x,y,z=peaks(30);,surfnorm(x,y,z);,title(surfl exam);,3.2.4,准四维图形绘制,当需要绘制思维数据时,,由于,我们所处的空间和思维局限性,在计算机屏幕上只能表现出三个空间变量。为此,,MATLAB,通过颜色来表示该,存在于第四维空间的值,由函数,slice,实现。,slice,函数,是,利用切片,来,实现数据,显示,的命令,可用于显示三维函数的切面图、等位线图等。,slice,命令,的常用格式如下:,slice(V,sx,sy,sz),显示三元函数,V=V(X,Y,Z),确定的超立体在,x,轴、,y,轴与,z,轴方向上的若干点,(,对应若干平面,),的切片图,各点的坐标由数量向量,sx,、,sy,与,sz,指定。其中,V,为三维数组(阶数为,mnp,),默认的有,X=1:m,、,Y=1:n,、,Z=1:p,slice(V,XI,YI,ZI),显示由参量矩阵,XI,、,YI,与,ZI,确定的超立体图形的切面图。参量,XI,、,YI,与,ZI,定义了一个曲面,同时会在曲面的点上计算超立体,V,的值。参量,XI,、,YI,与,ZI,必须为同型矩阵,slice(X,Y,Z,V,XI,YI,ZI),沿着由矩阵,XI,、,YI,与,ZI,定义的曲面画穿过超立体图形,V,的切片,slice(,method),指定内插值的方法。,method,为如下方法之一:,linear,、,cubic,、,nearest,,其中,,linear,指定使用三次线性内插值法(该状态为默认状态);,cubic,指定使用三次立方内插值法;,nearest,指定使用最近点内插值法,slice(X,Y,Z,V,sx,sy,sz),显示三元函数,V=V(X,Y,Z),确定的超立体在,x,轴、,y,轴与,z,轴方向上的若干点。即若函数,V=V(X,Y,Z),中有一变量如,X,取一定值,X0,,则函数,V=V(X0,Y,Z),变成一立体曲面的切片图,各点的坐标由参量向量,sx,、,sy,与,sz,指定。,【例3.31】使用slice命令绘制准四维图。,MATLAB程序如下所示,绘制图形如图所示。,x,y,z,v=flow;,xmin=min(min(min(x);,xmax=max(max(max(x);,sx=linspace(xmin+1.5,xmax-1.5,4);,slice(x,y,z,v,sx,0,0);,shading interp;,title(slice exam);,其他特殊的三维图形及相应的,MATLAB,绘制命令如表,3.16,所示。,3.2.5,其他特殊三维图形,函,数,名,说,明,函,数,名,说,明,bar3,三维条形图,trisurf,三角形表面图,comet3,三维彗星轨迹图,trimesh,三角形网格图,ezgraph3,函数控制绘制三维图,waterfall,瀑布图,pie3,三维饼状图,cylinder,柱面图,scatter3,三维散射图,sphere,球面图,stem3,三维离散数据图,contour3,三维等高线,quiver3,向量场,cplxmap,复数变量图,表,3.16,三维特殊图形函数,这里介绍几种与二维特殊图形不一样的函数。,1,圆柱图形绘制,MATLAB,提供了,cylinder,命令用于绘制圆柱图形,,其,调用格式如表,所示。,格,式,说,明,X,Y,Z=cylinder,返回一半径为,1,、高度为,1,的圆柱体的,x,y,z,轴的坐标值,圆柱体的圆周有,20,个距离相同的点,X,Y,Z=cylinder(r),返回一半径为,r,、高度为,1,的圆柱体的,x,y,z,轴的坐标值,圆柱体的圆周有,20,个距离相同的点,X,Y,Z=cylinder(r,n),返回一半径为,r,、高度为,1,的圆柱体的,x,y,z,轴的坐标值,圆柱体的圆周有指定的,n,个距离相同的点,【例3.33】使用cylinder命令绘制圆柱图。,MATLAB程序如下所示,绘制图形如图3.33所示。,t=0:pi/10:2*pi;,X,Y,Z=cylinder(2+sin(t);%产生圆柱体坐标点,surf(X,Y,Z);%绘制圆柱体,2,球体绘制,MATLAB,提供,sphere,命令用于生成球体,,其,调用格式如表,所示。,格,式,说,明,sphere,生成三维直角坐标系中的单位球体,该单位球体由,2020,个面组成,sphere(n),在当前坐标系中画出有,nn,个面的球体,X,Y,Z=sphere(),返回三个阶数为,(n+1)*(n+1),的直角坐标系中的坐标矩阵。该命令不画图,只是返回矩阵。用户可以用命令,surf(x,y,z),或,mesh(x,y,z),画出球体,【例3.34】使用sphere命令绘制球体。,MATLAB程序如下所示,绘制图形如图所示。,m,n,p=sphere(30);%产生球体坐标,t=abs(p);,surf(m,n,p,t)%绘制球体,3,瀑布图,MATLAB,提供,waterfall,命令用于生成球体,,其,调用格式如表,所示。,格,式,说,明,waterfall(Z),此时,以,Z,矩阵的列和行的下标为,X,和,Y,轴的自变量绘制瀑布图,waterfall(X,Y,Z),其中,,X,和,Y,为自变量矩阵,,Z,为建立在,X,和,Y,之上的函数矩阵,waterfall(,C),此命令和上面的命令相比,,C,用于指定矩阵,z,在各点的颜色,【例3.35】使用waterfall命令绘制瀑布图。,MATLAB程序如下所示,绘制图形如图3.35所示。,X,Y,Z=peaks(30);,waterfall(X,Y,Z);%绘制瀑布图,MATLAB,中提供的复数绘图函数常见的有,cplxmap,、,cplxgrid,、,cplxroot,等。使用这些函数绘制的图形常常以函数的实部为高度,以虚部为颜色,默认情况下的颜色变化范围是,HSV,颜色模式。其中,,cplxgrid,函数与前面的,meshgrid,函数功能类似,可以产生数据网格点,但数据格式都是复数形式的。通过该函数可以产生一个复数矩阵,Z,,该矩阵的维数是,(m-1)(2m-1),,即复数的极径范围是,0,1,,复数的极角范围是,-,。,4,复数变量图,【例3.36】使用cplxmap绘制复数图形。,MATLAB程序如下所示,绘制图形如图3.36所示。,z=cplxgrid(50);%生成复数绘图的网格点,cplxmap(z,z.2+z.3);%绘制函数z2+z3的图形,3.3,可视化图形修饰,MATLAB,除了提供强大的绘图功能外,还提供强大的图形修饰处理功能,。,3.3.1,图形视角处理,三维视图表现的是一个空间内的图形,因此从不同的位置和角度观察图形会有不同的效果。MATLAB 提供对图形进行视觉控制的功能。所谓视觉,就是图形展现给用户的角度。,1.,立体图观察点设置,MATLAB,提供,view,命令用于指定立体图形的观察点。观察者(观察点)的位置决定了坐标轴的方向。用户可以用方位角(,azimuth,)和仰角(,elevation,)一起,或者用空间中的一点来确定观察点的位置,其调用格式如表所示。,格,式,说,明,view(az,el),、,view(az,el),为三维空间图形设,置观察点的方位角。方位角,az,与仰角,el,是按下面的方法定义的两个旋转角度:作一通过视点与,z,轴的平面,与,xy,平面有一交线,该交线与,y,轴的反方向的、按逆时针方向(从,z,轴的方向观察)计算的、单位为度的夹角,就是观察点的方位角,az,。若方位角为负值,则按顺时针方向计算;在通过视点与,z,轴的平面上,用一直线连接视点与坐标原点,该直线与,xy,平面的夹角就是观察点
展开阅读全文