《数据和函数的可视化.ppt》由会员分享,可在线阅读,更多相关《数据和函数的可视化.ppt(81页珍藏版)》请在三一办公上搜索。
1、2023/6/1,第1页,第五讲 数据和函数的可视化,matlab语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现可视化,这是其它语言所不能比拟的。,2023/6/1,第2页,5.1 引导,任何二元实数标量对(x,y)可用平面上的一个点表式;任何二元实数向量对(x,y)可用平面上的一组点表示。对于离散实函数yn=f(xn),当 xn以递增(或递减)次序取值x=x1,x2,xNT时,根据函数关系可求得同样数目的yn,y=y1,y2,yNT。当把这向量对用直角坐标中的点序列图示时,就实现了离散函数的可视化。,离散数据和离散函数的可视化,2023/6/1,第3页,例5.1-1:离散函
2、数y=|n|的可视化,n=(-10:10);y=abs(n);plot(y,r.)figure(2),plot(n,y,b),2023/6/1,第4页,5.1.2 连续函数的可视化,与离散函数可视化一样,进行连续函数可视化也必须先在一组离散自变量上计算相应的函数值,并把这一组“数据对”用点图示。但这些离散的点不能表现函数的连续性。为了进一步表示离散点之间的函数情况,有两种常用处理方法:对区间进行更细的分割,计算更多的点,去近似表现函数的连续变化;把两点用直线连接,近似表现两点间的(一般是非线性的)函数性状。在MATLAB中,以上两种表现方法都可以采用。注意:倘若自变量的采样点数不足够多,则无论
3、哪种方法都不能真实地反映原函数。,2023/6/1,第5页,例5.1-2:用图形表示连续调制波形y=sin(t)sin(9t),t1=(0:11)/11*pi;t2=(0:400)/400*pi;t3=(0:50)/50*pi;y1=sin(t1).*sin(9*t1);y2=sin(t2).*sin(9*t2);y3=sin(t3).*sin(9*t3);subplot(2,2,1),plot(t1,y1,r.)axis(0,pi,-1,1),title(1)点过少的离散图形)subplot(2,2,2),plot(t1,y1,t1,y1,r.)%红色部分画折线,其余画点axis(0,pi,
4、-1,1),title(2)点过少的连续图形)subplot(2,2,3),plot(t2,y2,r.)axis(0,pi,-1,1),title(3)点密集的离散图形)subplot(2,2,4),plot(t3,y3)axis(0,pi,-1,1),title(4)点足够的连续图形),2023/6/1,第6页,N=9;t=0:2*pi/N:2*pi;x=sin(t);y=cos(t);tt=reshape(t,2,(N+1)/2);tt=flipud(tt);tt=tt(:);xx=sin(tt);yy=cos(tt);subplot(1,2,1),plot(x,y)title(1)正常排
5、序图形),axis equal off,shgsubplot(1,2,2),plot(xx,yy)title(2)非正常排序图形),axis equal off,shg,例5.1-3:绘制奇数正多边形及圆。,tt=0 1.3963 2.7925 4.1888 5.5851 0.6981 2.0944 3.4907 4.8869 6.2832,tt=0.6981 2.0944 3.4907 4.8869 6.2832 0 1.3963 2.7925 4.1888 5.5851,tt=0.6981 0 2.0944 1.3963 3.4907 2.7925 4.8869 4.1888 6.2832
6、 5.5851,2023/6/1,第7页,5.2 二维曲线和图形,plot 最基本的二维图形指令plot的功能:plot命令自动打开一个图形窗口Figure 用直线连接相邻两数据点来绘制图形根据图形坐标大小自动缩扩坐标轴,自动标注数据标尺及单位标注,二维曲线绘制的基本指令plot,2023/6/1,第8页,1.基本调用格式plot(x,y,s),(1)一维数组(x,y)指定采样点的横坐标和纵坐标。(2)s 是字符串,用来设定“离散点形”或/和“连续线型”,也指定“点线色彩”。颜色字符串用英文单词的前13个字母,如yellowyel(或y或ye)表示等。(3)若没有第三个输入量,将采用默认设置:
7、蓝色细实线。,输入量(x,y,s)称为平面绘线三元组。,2023/6/1,第9页,表5.2-2 离散数据点形允许设置值,演示数据点型的变化,t=0:10;plot(t,p,MarkerSize,18),2023/6/1,第10页,表5.2-4 连续线型允许设置值,表5.2-4 点线色彩允许设置值,如:s=r:-表示红色虚线,t=0:10;plot(t,pr:,MarkerSize,18),2023/6/1,第11页,2.plot的衍生调用格式,plot(X,Y)指令采用细实线绘制多条彩色曲线,各曲线的颜色顺序见表5.2-4.,(1)单色或多色绘制多条曲线,plot(X,Y,s),X、Y是均为(
8、mn)矩阵时,则以X、Y对应列元素为横、纵坐标分别绘制n条曲线。X、Y之一是一维数组,且数组长度与另一个矩阵输入量的“行数”(或“列数”)相等时,将绘制出“列数”(或“行数”)条曲线。s 用来指定多条曲线用同一色彩绘制。X、Y均是一维数组时,就是基本调用格式。,plot(X,Y,p-,MarkerSize,18),X=1 1 4;2 2 5;3 3 6;,Y=1 4 7;2 5 8;3 6 9;,2023/6/1,第12页,plot(x1,y1,s1,x2,y2,s2),在此格式中,每个绘线“三元组”(X,Y,s)的结构和作用,与plot(X,Y,s)相同。不同的“三元组”之间没有约束关系。,
9、(2)多三元组绘制多条曲线,Y是实向量时,以该向量元素的下标为横坐标、元素值为纵坐标画出一条连续曲线。Y是实矩阵时,则按列绘制每列元素值相对其下标的曲线。图中曲线数等于Y阵列数。Y是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线,2023/6/1,第13页,3.plot的属性可控调用格式,plot(x,y,s,PropertyName,PropertyValue,),plot(x,y,LineStyle,:,LineWidth,8.5),2023/6/1,第14页,例5.2-1:二维曲线绘图指令演示。,Clft=(0:pi/50:2*pi);k=0.4:0.1:1;Y=cos(
10、t)*k;%是矩阵subplot(1,2,1),plot(t,Y,LineWidth,1.5)title(By plot(t,Y),xlabel(t)subplot(1,2,2),plot(Y,LineWidth,1.5)title(By plot(Y),xlabel(row subscript of Y),2023/6/1,第15页,例5.2-2:用图形表示连续调制波形y=sin(t)sin(9t)极其包络线。,t=(0:pi/100:pi);y1=sin(t)*1,-1;y2=sin(t).*sin(9*t);t3=pi*(0:9)/9;y3=sin(t3).*sin(9*t3);plot
11、(t,y1,r:,t,y2,-bo)hold onplot(t3,y3,s,MarkerSize,10,MarkerEdgeColor,0,1,0,MarkerFaceColor,1,0.8,0)axis(0,pi,-1,1)hold off,2023/6/1,第16页,5.2.2 坐标控制和图形标识,表 5.2-6 常用的坐标控制指令,1.坐标轴的控制,2023/6/1,第17页,例5.2-3观察各种轴控制指令的影响。,演示采用长轴为3.25,短轴为1.15的椭圆。注意:采用多子图表现时,图形形状不仅受“控制指令”影响,而且受整个图面“宽高比”及“子图数目”的影响。想准确体会控制指令的影响,
12、可在全图状态下进行观察。,t=0:2*pi/99:2*pi;x=1.15*cos(t);y=3.25*sin(t);subplot(2,3,1),plot(x,y),axis normal,grid on,title(Normal and Grid on)subplot(2,3,2),plot(x,y),axis equal,grid on,title(Equal)subplot(2,3,3),plot(x,y),axis square,grid on,title(Square)subplot(2,3,4),plot(x,y),axis image,box off,title(Image an
13、d Box off)subplot(2,3,5),plot(x,y),axis image fill,box offtitle(Image and Fill)subplot(2,3,6),plot(x,y),axis tight,box off,title(Tight),2023/6/1,第18页,2.分格线和坐标框,grid是否画分格线的双向切换指令(使当前分格线状态翻转)grid on 画出分格线grid off 不画分格线box 坐标形式在封闭式和开启式之间切换指令box on 使当前坐标呈封闭形式box off 使当前坐标呈开启形式,默认设置:不画出分格线,所画坐标呈封闭形式。,202
14、3/6/1,第19页,3.图形标识,图形标识包括:图名(Title)、坐标轴名(Label)、图形注释(Text)和图例(Legend)。标识指令的最简捷使用格式如下:title(S)书写图名xlabel(S)横坐标轴名ylabel(S)纵坐标轴名legend(S1,S2,)绘制曲线所用线型、色彩或数据点形图例text(xt,yt,S)在图面(xt,yt)坐标处书写字符注释,2023/6/1,第20页,4.标识指令中字符的精细控制,表5.2-7 图形标识用的希腊字母,2023/6/1,第21页,表5.2-8 图形标识用的其他特殊字符,4.标识指令中字符的精细控制,2023/6/1,第22页,4
15、.标识指令中字符的精细控制,若想设置上下标,对字体和字体大小进行控制,须在被控制字符前使用5.2-9,5.2-10的指令,表5.2-9 上下标的控制指令,2023/6/1,第23页,4.标识指令中字符的精细控制,表4 字体式样设置规则,x,2023/6/1,第24页,表5.2-2 离散数据点形允许设置值,1.基本调用格式plot(x,y,s)平面绘线三元组,表5.2-4 连续线型允许设置值,表5.2-4 点线色彩允许设置值,Review,2023/6/1,第25页,2 坐标控制和图形标识,axis equal;axis square;axis off;axis on,(1).坐标轴的控制,gr
16、id是否画分格线的双向切换指令(使当前分格线状态翻转)grid on 画出分格线grid off 不画分格线,(2).分格线,(3).图形标识,title(S)书写图名xlabel(S)横坐标轴名ylabel(S)纵坐标轴名legend(S1,S2,)绘制曲线所用线型、色彩或数据点形图例text(xt,yt,S)在图面(xt,yt)坐标处书写字符注释,Review,2023/6/1,第26页,例5.2-4:标识实验。,clf;t=0:pi/50:2*pi;y=sin(t);plot(t,y);axis(0,2*pi,-1.2,1.2)text(pi/2,1,fontsize16leftarro
17、witsin(t)fontname隶书极大值)title(y=sin(t)xlabel(t)ylabel(y),2023/6/1,第27页,例5.2-5 通过绘制二阶系统阶跃响应,综合演示图形标识。,clf;t=6*pi*(0:100)/100;y=1-exp(-0.3*t).*cos(0.7*t);plot(t,y,r-,LineWidth,3);hold ontt=t(find(abs(y-1)0.05);ts=max(tt);plot(ts,0.95,bo,MarkerSize,10);hold off;axis(-inf,6*pi,0.6,inf)set(gca,Xtick,2*pi,
18、4*pi,6*pi,Ytick,0.95,1,1.05,max(y)set(gca,XtickLabel,2*pi;4*pi;6*pi)set(gca,YtickLabel,0.95;1;1.05;max(y);grid ontext(13.5,1.2,fontsize12alpha=0.3)text(13.5,1.1,fontsize12omega=0.7)cell_string1=fontsize12uparrow;cell_string2=fontsize16 fontname隶书镇定时间;cell_string3=fontsize6;cell_string4=fontsize14rmt
19、_s=num2str(ts);text(ts,0.85,cell_string,Color,b,HorizontalAlignment,Center)title(fontsize14it y=1-e-alpha tcosomegat)xlabel(fontsize14 bft rightarrow)ylabel(fontsize14 bfy rightarrow),2023/6/1,第28页,5.2.3 多次叠绘、双纵坐标和多子图,前面已介绍过plot在同一次调用中画多条曲线的功能。实际应用中,还会遇到在已经存在的图上再绘制一条或多条曲线的情况。为此,MATLAB提供了以下指令:,1.多次叠绘
20、,hold on 使当前轴及图形保持而不被刷新,准备接受此后将绘制的新曲线hold off使当前轴及图形不再具备不刷新的性质hold当前图形是否具备刷新性质的双向切换开关,2023/6/1,第29页,例5.2-6 利用hold绘制离散信号通过零阶保持器后产生的波形。,t=2*pi*(0:20)/20;y=cos(t).*exp(-0.4*t);stem(t,y,g,Color,k);hold onstairs(t,y,:r,LineWidth,3)hold offlegend(fontsize14it stem,fontsize14it stairs)box on,2023/6/1,第30页,
21、2.双纵坐标图,在实际应用中常常提出这样一种需求:把同一自变量的两个不同量纲、不同数量级的函数量的变化绘制在同一张图上。为此,MATLAB5.x新增了以下指令。,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指定的不同形式的两条曲线,2023/6/1,第31页,clf;dx=0.1;x
22、=0:dx:4;y=x.*sin(x);s=cumtrapz(y)*dx;a=plotyy(x,y,x,s,stem,plot);text(0.5,1.5,fontsize14ity=xsinx)sint=fontsize16int_fontsize80 x;ss=fontsize14its=,sint,fontsize14itxsinxdx;text(2.5,3.5,ss)set(get(a(1),Ylabel),String,被积函数 ity=xsinx)set(get(a(2),Ylabel),String,ss)xlabel(x),例5.2-7 用双纵坐标画出函数 和积分 在0,4区间
23、上的曲线。,2023/6/1,第32页,3.多子图,MATLAB允许用户在同一图形窗中布置几幅独立的子图,具体指令是:,subplot(m,n,k)使(mn)幅子图中的第k幅成为当前图。subplot(position,left bottom width height)在指定位置上开辟子图,并成为当前图。,2023/6/1,第33页,subplot(position,left bottom width height),例:subplot(position,0.5 0.5 0.45 0.45)subplot(position,0.05 0.5 0.4 0.45)subplot(position,
24、0.2 0.05 0.6 0.4),2023/6/1,第34页,例5.2-8 演示subplot指令对图形窗的分割。,clf;t=(pi*(0:1000)/1000);y1=sin(t);y2=sin(10*t);y12=sin(t).*sin(10*t);subplot(2,2,1),plot(t,y1);axis(0,pi,-1,1)subplot(2,2,2),plot(t,y2);axis(0,pi,-1,1)subplot(position,0.2,0.1,0.6,0.40)plot(t,y12,b-,t,y1,-y1,r:)axis(0,pi,-1,1),2023/6/1,第35页
25、,5.2.4 获取二维图形数据的指令ginput,x,y=ginput(n)用鼠标从二维图形上获取n个点的数据坐标(x,y)。,该指令仅适用于二维图形。具体操作方法:指令运行后,会把当前图形从后台调到前台,同时鼠标光标变为十字叉;用户可移动鼠标,使十字叉移到待取坐标点;点动鼠标左键,便获得该点数据;此后,用同样的方法,获取其余点的数据;当n个点的数据全部取到后,图形窗便退回后台,机器回到ginput执行前的环境。,2023/6/1,第36页,clfx=0:0.01:1;y=(x+2).x-2;plot(x,y);grid on,例5.2-9 采用图解法求 的解。,(1)绘制 的曲线。,x,y=
26、ginput(1);,(2)放大图形,用鼠标获取曲线与横轴交点坐标值。,format longx,yx=0.698286930399556y=,2023/6/1,第37页,交互式图形指令,在MATLAB中还有若干与鼠标有关的图形操作指令。它们是:ginputgtextlegend,2023/6/1,第38页,gtext,gtext(arg),用鼠标把字符串或字符串异质(元胞)数组arg放置到图形上。该指令对二维、三维图形都适用。具体操作方法:指令运行后,当前图形窗自动由后台转为前台,鼠标光标变为十字叉;移动鼠标,使十字叉移到希望的位置;点动鼠标右键,arg所承载的字符将被放在紧靠十字叉点的“第
27、一象限”位置。,A=My,God;Its,here!gtext(A),2023/6/1,第39页,legend,legend(arg,pos)在指定位置建立图例legend off 擦除当前图上的图例说明:输入宗量arg是图例中的说明文字注释。输入宗量pos是图例在图上位置的指定符,它可取下表中的值。Legend在图形窗中产生后,可用鼠标对其进行拖拉,即把鼠标光标移到图例上,按住鼠标左键;图例将随鼠标移动,直到满意位置;放开按键便完成操作。,2023/6/1,第40页,5.3 三维曲线和曲面图,plot3(X,Y,Z s)plot3(X1,Y1,Z1,s1,X2,Y2,Z2,s2,),5.3.
28、1 三维线图指令plot3,X,Y,Z是同维向量时,则绘制以X,Y,Z元素为x,y,z坐标的三维曲线X,Y,Z是同维矩阵时,则以X,Y,Z对应列元素为x,y,z坐标分别绘制曲线曲线条数等于矩阵列数s,s1,s2的意义与二维情况相同,是主要用于指定线型,色彩,数据点形的选项字符串。,2023/6/1,第41页,二维图形的所有基本特性对三维图形全都适用。定义三维坐标轴大小:axis(xmin xmax ymin ymax zmin zmax)grid on(off)绘制三维网格 text(x,y,z,string)三维图形标注 子图和多窗口也可以用到三维图形中,2023/6/1,第42页,例5.3
29、-1 三维曲线绘图,t=(0:0.02:2)*pi;x=sin(t);y=cos(t);z=cos(2*t);plot3(x,y,z,r-,x,y,z,bd),view(-82,58),box on,legend(链,宝石),2023/6/1,第43页,5.3.2 三维曲面/网线图,需要绘图数据的准备,可实现三维图形的色彩,明暗,光照和视点处理,1.三维图形的数据准备,1)确定自变量x,y的取值范围和取值间距如x=x1:dx:x2;y=y1:dy:y22)构成xy平面上的自变量格点矩阵:X,Y=meshgrid(x,y);3)计算在自变量采样格点上的函数值,即Z=f(X,Y),2023/6/1
30、,第44页,三维网线图曲面图作图要领,x 1m数组,y 1n数组生成X,Y格点坐标 X,Y=meshgrid(x,y)X由x(1m)按行放置,再纵向扩展n行 Y由y(1n)按列放置,再横向扩展m行 结果:X和Y均成为nm矩阵表达式点运算 Z=X.2+Y.2 X,Y,Z是nm的数组,维数可任定 默认方位角:-37.5,俯角30。,2023/6/1,第45页,2.绘制曲面/网线图基本指令格式,mesh(Z)-以Z矩阵列,行下标为x,y轴自变量,画网线图mesh(X,Y,Z)-最常用的网线图调用格式mesh(X,Y,Z,C)-最完整的格式,画由C指定用色的网线图surf(Z)-以Z矩阵列,行下标为x
31、,y轴自变量,画曲面图surf(X,Y,Z)-最常用的曲面图调用格式surf(X,Y,Z,C)-最完整调用格式,画由C指定用色曲面图,在最完整的调用格式中,四个输入宗量都是维数相同的矩阵。X,Y是自变量 格点矩阵,Z是格点上的函数矩阵。指定点的用色,可以缺省,此时取C=Z。单输入宗量格式绘图时,把Z矩阵的列下标当作x坐标轴的自变量,把Z的行 下标当作y坐标轴的自变量。,2023/6/1,第46页,clf,x=-4:4;y=x;X,Y=meshgrid(x,y);%生成x-y坐标格点矩阵 Z=X.2+Y.2;surf(X,Y,Z);%绘曲面图 hold on;colormap(hot)stem3
32、(X,Y,Z,bo);%表现在格点上计算函数值,例5.3-2:用曲面图表现函数,figure(2),mesh(X,Y,Z)%绘网线图hold on;colormap(hot),2023/6/1,第47页,曲面/网线图的精细修饰,1.视角控制view,改变观察点是获得较好三维视觉效果的重要途径,一般而言,三维图形的观测角度是由方位角(Azimuth)及仰角(Elevation)来决定,对二维图形而言,默认值为 az=0,el=90;,对三维图形而言,默认值为 az=-37.5,el=30.,view(az,el)-通过方位角,俯视角设置视点.view(vx,vy,vz)-通过直角坐标设置视点.,
33、2023/6/1,第48页,曲面/网线图的精细修饰,Colormap(CM)%设置当前图形窗的着色色图为CM。,2.色彩控制,色图为(m3)矩阵,它的每一行是RGB三元组。,常用色图矩阵见表5.3-1。这些预定义色图矩阵是由0,1区间数据组成的(643)矩阵.,Jet是默认色图。,2023/6/1,第49页,shading options%options可取以下方式:,3.浓淡处理,2023/6/1,第50页,【例5.3-3】三种浓淡处理方式比较。,clfx=-4:4;y=x;X,Y=meshgrid(x,y);Z=X.2+Y.2;surf(X,Y,Z)colormap(jet)subplot
34、(1,3,1),surf(Z),axis off%默认shading facetedsubplot(1,3,2),surf(Z),axis off,shading flatsubplot(1,3,3),surf(Z),axis off,shading interpset(gcf,Color,w),2023/6/1,第51页,hidden off:用于网格图形,alpha(v):0v1 用于曲面图形,0表示完全透明,1表示不透明。,根据3个数据mn矩阵X,Y和Z所绘制得到的曲面为例,Matlab有三种透明度的处理方式,标量:使所有数据点都设置相同的透明度,线性数据:使曲面的数据点的透明度按照某个
35、指定的维数的方向线性变化,矩阵:使每个数据点选取不同的透明度,4.透明控制,2023/6/1,第52页,【例5.3-4】半透明的表面图。,clfsurf(peaks)shading interpalpha(0.7)colormap(summer),alpha(v):0v1 用于曲面图形,0表示完全透明,1表示不透明。,4.透明控制,2023/6/1,第53页,5.灯光设置light,color属性表示光的颜色;可取相应的颜色字符或RGB三元组。style属性表示光源形式;选项有infinite和local两个取值,分别表示无限远的平行光源和近光源。position属性表示光源位置。positi
36、on属性的选项取三维坐标点组成的向量形式x,y,z。,默认设置:白光,无穷远,穿过1,0,1射向坐标原点。,light(Color,option1,Style,option2,Position,option3),2023/6/1,第54页,6.照明模式lighting,该指令只有在light指令执行后才起作用。,lighting options,2023/6/1,第55页,7.控制光反射的材质指令material,material options其有如下一些选项:,2023/6/1,第56页,clf;X,Y,Z=sphere(40);colormap(jet)subplot(1,2,1),su
37、rf(X,Y,Z),axis equal off,shading interplight(position,0-10 1.5,style,infinite)lighting phongmaterial shinysubplot(1,2,2),surf(X,Y,Z,-Z),axis equal off,shading flatlight;lighting flatlight(position,-1,-1,-2,color,y)light(position,-1,0.5,1,style,local,color,w)set(gcf,Color,w),【例5.3-5】灯光、照明、材质指令所表现的图形。
38、,2023/6/1,第57页,5.3.4 透视,镂空和裁切,1.图形的透视,matlab在采用缺省设置画mesh图形时,对叠压在后面的图形采取了消隐措施,若需要透视效果,可以通过相关的指令来实现,hidden off-透视被叠压的图形hidden on-消隐被叠压的图形,2023/6/1,第58页,例5.3-6 透视演示,X0,Y0,Z0=sphere(30);X=2*X0;Y=2*Y0;Z=2*Z0;surf(X0,Y0,Z0);shading interp;hold on;mesh(X,Y,Z),colormap(hot),hold offhidden off;axis equal,axi
39、s off,2023/6/1,第59页,2.图形的镂空,例5.3-7 演示如何利用非数NaN对图形进行镂空处理,P=peaks(30);surfc(P);%完整的图形P(18:20,9:15)=NaN;%进行镂空处理surfc(P);%镂空后的图形colormap(hot);light(position,50,-10,5);lighting flatmaterial(0.9,0.9,0.6,15,0.4),2023/6/1,第60页,3.裁切,由NaN处理的图形不会产生切面,为了看清图形而需要表现切面,那么应该把被切部分强制为零,例5.3-8 表现切面,x=-8:0.1:8;y=x;X,Y=m
40、eshgrid(x,y);ZZ=X.2+Y.2-40;ii=find(abs(X)6|abs(Y)6);%确定超出-6,6范围的格点下标ZZ(ii)=zeros(size(ii);%强制为0surf(X,Y,ZZ),shading interp;colormap(copper)light(position,0,-15,1);lighting phongmaterial(0.8,0.8,0.5,10,0.5),2023/6/1,第61页,伪彩图 pcolor,等位线指令 contour、contourf,5.4 高维可视化,5.4.1 二维半图指令pcolor,contour,contourf,
41、close all;clear;X,Y,Z=peaks(40);subplot(1,2,1),pcolor(X,Y,Z)%shading interpsubplot(1,2,2),surf(X,Y,Z)%shading interp,例5.4-1 二维半图指令pcolor,contour,contourf 应用。,2023/6/1,第62页,close all;clear;X,Y,Z=peaks(40);n=6;%等高线分级数subplot(1,2,1),pcolor(X,Y,Z)shading interpzmax=max(max(Z);zmin=min(min(Z);caxis(zmin,
42、zmax)Colorbarhold onC=contour(X,Y,Z,n,k:);clabel(C)hold offsubplot(1,2,2)C,h=contourf(X,Y,Z,n,k:);clabel(C,h)colormap(cool)set(gcf,Color,w),例5.4-1 二维半图指令pcolor,contour,contourf 应用。,2023/6/1,第63页,5.4 高维可视化,5.4.1 二维半图指令pcolor,contour,contourf,伪彩图 pcolor;等位线指令 contour、contourf;等位线标高指令 clabel 的配合使用和区别。练
43、习本例时注意:(1)本例等位线指令中的第 4 输入宗量 n 设定高度的等级数,第 5 输入宗量设定等位线的线型、色彩。(2)左右两图的标高方法不同。左图的标识以“+”引导,水平放置。右图沿线布置。这是由 clabel 的调用格式不同产生的。(3)左右两图色彩的形成方法不同,色彩效果也不同。(4)在左图中,colorbar 画出一根垂直色标尺,而 caxis 决定该色标尺的刻度。,例5.4-1 二维半图指令pcolor,contour,contourf 应用。,2023/6/1,第64页,5.4.2 四维表现,clfx=3*pi*(-1:1/15:1);y=x;X,Y=meshgrid(x,y)
44、;R=sqrt(X.2+Y.2)+eps;Z=sin(R)./R;dzdx,dzdy=gradient(Z);dzdr=sqrt(dzdx.2+dzdy.2);dz2=del2(Z);subplot(1,2,1),surf(X,Y,Z,abs(dzdr)shading faceted;colorbar(SouthOutside)brighten(0.6);colormap hsvtitle(No.1 surf(X,Y,Z,abs(dzdr)subplot(1,2,2);surf(X,Y,Z,abs(dz2)shading facetedcolorbar(NorthOutside)title(N
45、o.2 surf(X,Y,Z,abs(dz2),例5.4-2 用颜色表现z=f(x,y)函数的其他特征(如梯度,曲率等)。,1.准四维表现,2023/6/1,第65页,clf;x,y,z=meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);v=x.*exp(-x.2-y.2-z.2);xs=-0.7,0.7;ys=0;zs=0;slice(x,y,z,v,xs,ys,zs)colorbar;shading interpcolormap hsvxlabel(x),ylabel(y),zlabel(z)title(The color-to-v(x,y,z)mapping)vie
46、w(-22,39);alpha(0.3),X,Y,Z=meshgrid(x,y,z)slice(X,Y,Z,V,sx,sy,sz),2.切片图,例5.4-3 图形表现。,2023/6/1,第66页,5.4.3 动态图形,1.彗星状轨迹图,comet(x,y,p)二维彗星轨线 comet(x,y,z,p)三维彗星轨线,p 指定彗星体的长度p*length(y),缺省的p值为0.1。三维图形中彗星体的长度p*length(z),shg;n=50;t=n*pi*(0:0.000005:1);x=sin(t);y=cos(t);plot(x,y,g);axis squarehold on comet(
47、x,y,0.001)hold off,例5.4-4 简单二维示例。,2023/6/1,第67页,2.色图的变幻,matlab为颜色的动态变化提供了一个指令spinmap。它的功能是使当前图形的色图做循环变化,以产生动画效果该指令不涉及图形对象特性的操作,只限于对色图的操作。该指令只对256色设置有效。,spinmap-使色图周期旋转3sspinmap(t)-使色图周期旋转tsspinmap(inf)-使色图无限制旋转下去,用Ctrl+C键终止旋转spinmap(t,inc)-分别用t,inc(缺省为2)控制色图旋转的时间和快慢,2023/6/1,第68页,2.色图的变幻,spinmap(t,i
48、nc)-分别用t,inc(缺省为2)控制色图旋转的时间和快慢,ezsurf(x*y,circ);shading flat;view(-18,28)C=summer;CC=C;flipud(C);colormap(CC)spinmap(30,4),例5.4-5 指令spinmap的使用。,2023/6/1,第69页,3.影片动画,matlab支持影片动画(movie):先把一组二维或三维图形存储起来,然后再把这组图形回放。由于“视觉残留”,于是产生动画效果。,M(i)=getframe-对当前图形拍照后产生的数据向量依次存放于画面结构数组中。movie(M,k)-以不超过每秒12帧的速度把M中的
49、画面播放k次。,由M(i)=getframe所产生的M(i)是一个结构数组,它有两个域:M(i).cdata和M(i).colormap 动画的几个典型的产生方法:(1)改变某参数,获得一组画面,如驻波,行波的产生.(2)对产生的某三维图形,改变观察角,获得一组画面.(3)对产生的某三维图形,运用rotate旋转指令,获得一组画面,2023/6/1,第70页,例5.4-6 三维图形的影片动画。,clf,x=3*pi*(-1:0.05:1);y=x;X,Y=meshgrid(x,y);R=sqrt(X.2+Y.2)+eps;Z=sin(R)./R;h=surf(X,Y,Z);colormap(j
50、et);axis off;n=12;mmm=moviein(n);for i=1:nrotate(h,0 0 1,25);%使图形绕Z轴旋转25/每次mmm(:,i)=getframe;%捕获画面endcloseshg;axis off;movie(mmm,20,10)%以每秒10帧速度重复播放20次,2023/6/1,第71页,4实时动画制作,制作实时动画的基本方法是,先画出初始图形,再计算活动对象的新位置,并在新位置上把它显示出来,最后擦除原位置上原有的对象,刷新屏幕。重复操作即可产生动画效果。,2023/6/1,第72页,例 模拟布朗运动。程序如下:n=30;%指定布朗运动的点数s=0.