《matlab计算的可视化第二次.ppt》由会员分享,可在线阅读,更多相关《matlab计算的可视化第二次.ppt(45页珍藏版)》请在三一办公上搜索。
1、第四章 MATLAB计算的可视化,4.2 三维图形的绘制,4.2.1 三维曲线 plot3函数 最基本的三维图形函数为plot3,其调用格式为plot3(x,y,z):其中x,y和z为3个相同维数的向量。函数绘出这些向量所表示的点的曲线。plot3(X,Y,Z):其中X,Y和Z为3个相同阶数的矩阵,函数绘出3矩阵的列向量的曲线;,4.2 三维图形的绘制,若要定义不同的线型,使用以下形式:plot3(X,Y,Z,s):其中s为定义线型的字符串,形式同plot函数。plot3(x1,y1,z1,s1,x2,y2,z2,s2,xn,yn,zn,sn)其中,每一组x,y,z组成一组曲线的坐标参数,选项
2、的定义和plot函数相同。当x、y、z是同维向量时,则x、y、z对应元素构成一条三维曲线;当x、y、z是同维矩阵时,则以x、y、z对应列元素绘制三维曲线,曲线条数等于矩阵列数,4.2 三维图形的绘制,【例4.23】绘制三维曲线。程序如下:t=0:pi/10:10*pi;x=sin(t)+t.*cos(t);y=cos(t)-t.*sin(t);z=t;plot3(x,y,z);axis(-30 30-30 30 0 35)title(Line in 3-D Space);xlabel(X);ylabel(Y);zlabel(Z);grid on;,4.2 三维图形的绘制,【例4.24】绘制三维
3、螺旋线。x=0:pi/50:10*pi;y=sin(x);z=cos(x);plot3(x,y,z);,4.2 三维图形的绘制,【例4.25】绘制参数为矩阵的三维图。x,y=meshgrid(-2:0.1:2,-2:0.1:2);z=x.*exp(-x.2-y.2);plot3(x,y,z),4.2 三维图形的绘制,三维曲面1、网图函数 上例中用到了meshgrid函数,该函数为网图函数的一种,matlab语言提供了一系列的网图函数,如下表:,4.2 三维图形的绘制,matlab语言对于网格的处理方法是:将xy平面按指定方式分隔成平面网格,然后根据程序中给定的方式计算第三维变量的值,即z轴的值
4、,与对应的xy平面的坐标构成三维点元素,根据由此得到的(x,z),(y,z)计算各平面的曲线,彼此相连就构成了网格图。,4.2 三维图形的绘制,函数meshgrid是网图函数中最简单的一个,其作用是将给定的区域按一定的方式划分成平面网格,该平面网格可以用来绘制三维曲面,具体调用格式如下:X,Y=meshgrid(x,y):其中x,y为给定的向量,一方面可以用来定义网格划分区域;另一方面也可以用来定义网格划分方法。矩阵X和Y则是网格划分后的数据矩阵。,4.2 三维图形的绘制,【例4.26】x=1:3;y=22:25;X,Y=meshgrid(x,y)%在1,3 22,25区域生成为网 格坐标X=
5、1 2 3 1 2 3 1 2 3 1 2 3Y=22 22 22 23 23 23 24 24 24 25 25 25,4.2 三维图形的绘制,函数mesh用来绘制三维的网图,调用格式如下;Mesh(X,Y,Z,C)%绘制四个矩阵变量的彩色网格面图形。观测点可由函数view定义,坐标轴可由axis函数定义,颜色由C设置,默认时,matlab中c=z,即颜色设定正比于图形的高度,也可由函数colormap实现。mesh(X,Y,Z)%使C=Z,即网图高度正比于图高 mesh(x,y,Z)和mesh(x,y,Z,C)此处使用两个向量代替两个矩阵,同时要求length(x)=n,length(y)
6、=m且m,n=size(Z)。在这种情况下,网格线的顶点为(x(j),y(i),z(i,j)的三倍。,4.2 三维图形的绘制,注意:x对应于Z的列,而y对应于Z的行。mesh(Z)和mesh(Z,C)使用x=1:n及y=1:m。在此情况下,高度Z为单值函数。【例4.27】x=-8:0.5:8;y=x;a=ones(size(y)*x;b=y*ones(size(x);c=sqrt(a.2+b.2)+eps;z=sin(c)./c;mesh(z),4.2 三维图形的绘制,Mesh函数的第三个输入参数将设置生成图中的颜色,matlab允许用户增加一个输入变量专门设置面图色彩。当mesh函数仅有一个
7、输入变量时,将以输入矩阵的下标生成平面网格系,并由此生成三维面图。【例4.28】mesh函数绘制的Hilbert矩阵三维面图。z=hilb(10);mesh(z),4.2 三维图形的绘制,【例4.29】绘制三维曲面图X,Y=meshgrid(0:pi/100:pi,0:pi/100:pi/2);z=sin(X.2)+cos(Y.2);mesh(X,Y,z)axis(0 4 0 1.8-1.5 1.5);,4.2 三维图形的绘制,函数meshc与函数mesh调用的方式相同,只是该函数在mesh的作用之上又增加了contour函数的功能,即绘制相应的等高线。【例4.30】meshc函数绘制的三维面
8、图。X,Y=meshgrid(-4:0.5:4);Z=sqrt(X.2+Y.2);meshc(Z);,4.2 三维图形的绘制,函数meshz(带底座的三维网格曲面函数)与mesh调用的方式也相同,不同的是该函数在mesh函数的作用之上增加了屏蔽的作用,即增加了边界面屏蔽。【例4.31】使用meshz函数绘制的三维面图。X,Y=meshgrid(-4:0.5:4);Z=sqrt(X.2+Y.2);meshz(Z);,4.2 三维图形的绘制,2.着色函数 绘制着色图的函数surf也是matlab语言中较为常用的三维图形函数,其调用格式如下;surf(X,Y,Z,C)输入参数的设置与函数mesh相同
9、,不同的是mesh函数绘制的图形是一网格图,而surf函数绘制的图形是着色的三维表面。Matlab语言对表面进行着色的方法是,在得到相应的网格后,对每一网格依据该网格所代表的节点的色值(由变量C控制),来定义这一网格的颜色。,4.2 三维图形的绘制,【例4.32】绘制三维着色图。X,Y=meshgrid(-4:0.5:4);Z=sqrt(X.2+Y.2);surf(Z),4.2 三维图形的绘制,【例4.33】在xy平面内选择区域-2,2-2,2,绘制函数 的4种三维曲面图。程序转下页:,4.2 三维图形的绘制,xx=linspace(-2,2,25);yy=xx;X,Y=meshgrid(xx
10、,yy);Z=-exp(-X.2-Y.2);subplot(2,2,1);mesh(X,Y,Z);title(mesh(X,Y,Z);subplot(2,2,2);surf(X,Y,Z);title(surf(X,Y,Z);,subplot(2,2,3);meshz(X,Y,Z);title(meshz(X,Y,Z);subplot(2,2,4);meshc(X,Y,Z);title(meshc(X,Y,Z);axis(-2 2-2 2-1.2 0);,4.2 三维图形的绘制,3.特殊的三维图形函数 matlab语言中的三维图形函数,4.2 三维图形的绘制,【例4.34】绘制三维饼状图。x=2
11、,4,6,8;pie3(x,0,0,1,0);,4.2 三维图形的绘制,【例4.35】绘制着色图与三维等高线图。X,Y=meshgrid(-4:0.5:4);Z=sqrt(X.2+Y.2);surfc(X,Y,Z);,4.2 三维图形的绘制,与二维图形部分的等高线函数contour相类似,三维图形绘制函数中也有相应的等高线函数contour3,其调用格式与函数contour相同。【例4.36】绘制三维等高线图。X,Y=meshgrid(-4:0.5:4);contour3(peaks(X,Y),25);,4.2 三维图形的绘制,peaks函数:peaks函数(多峰函数)常用于三维曲面的演示。该
12、函数可以用来生成绘图数据矩阵,矩阵元素由函数在矩形区域-3,3-3,3的等分网格点上的函数值确定。例如:z=peaks(30);将生成一个3030的矩阵z,即分别沿x和y方向将区间3,3等分成29份,并计算这些网格点上的函数值。默认参数时将生成一个4949的矩阵。也可以根据网格坐标矩阵x、y重新计算函数值矩阵。,4.2 三维图形的绘制,例如:x,y=meshgrid(-5:0.1:5);z=peaks(x,y);生成的数值矩阵可以作为mesh、surf等函数的参数而绘制出多峰函数曲面图。另外,若在调用peaks函数时不带输出参数,则直接绘制出多峰函数曲面图。,4.2 三维图形的绘制,cylin
13、der函数:cylinder函数用于绘制柱面,其调用格式为 x,y,z=cylinder(R,n)其中,R是一个向量,存放柱面各个等间隔高度上的半径;n表示在圆柱圆周上有n个间隔点,默认时表示有20个间隔点。例如,cylinder(3)生成一个圆柱,cylinder(10,1)生成一个圆锥,而t=0:pi/100:4*pi;R=sin(t);cylinder(R,30)生成一个正弦型柱面。,4.2 三维图形的绘制,【例4.37】绘制三维曲面图形。t=0:pi/20:2*pi;subplot(1,2,1);x,y,z=cylinder(sin(t),30);surf(x,y,z);subplot
14、(1,2,2);x,y,z=peaks(100);mesh(x,y,z);,4.2 三维图形的绘制,【例4.38】绘制柱面图。x=0:pi/20:pi*3;r=5+cos(x);a,b,c=cylinder(r,30);mesh(a,b,c),4.2 三维图形的绘制,sphere函数:sphere函数用于绘制三维球面,其调用格式为 x,y,z=sphere(n)该函数将产生(n+1)(n+1)矩阵x、y、z,采用这3个矩阵可以绘制出圆心位于原点、半径为1的单位球体。若在调用该函数时不带输出参数,则直接绘制所需球面。n决定了球面的圆滑程度,其默认值为20。若n值取得较小,则将绘制出多面体表面图。
15、,4.2 三维图形的绘制,【例4.39】绘制地球表面的气温分布示意图。a,b,c=sphere(40);t=abs(c);surf(a,b,c,t);axis(equal);axis(square);colormap(hot),4.2 三维图形的绘制,bar3和bar3h函数:分别绘制垂直和水平三维条形图,其调用格式:bar3(x,y);bar3h(x,y);其中,x是向量,y是向量或矩阵,x向量元素的个数与y的行数相同。bar3和bar3h函数在x指定的位置上绘制y中元素的条形图,x默认时,若y是长度为n的向量,则x轴坐标从1变化到n;若y是mn的矩阵,则x轴坐标从1变化到n,y中的元素按行
16、分组。,4.2 三维图形的绘制,【例4.40】绘制三维条形图x=51 82 34 47;67 78 68 90;78 85 65 50;bar3(x);Bar3h(x);,4.2 三维图形的绘制,三维多边形函数fill3:可在三维空间内绘制出多边形,并填充颜色。其调用格式:fill3(x,y,z,c)其中,使用x,y,z作为多边形的顶点,而c指定填充的颜色。【例4.41】X=0 1 1 2;1 1 2 2;0 0 1 1;Y=1 1 1 1;1 0 1 0;0 0 0 0;Z=1 1 1 1;1 0 1 0;0 0 0 0;C=0.5000 1.0000 1.0000 0.5000;1.000
17、0 0.5000 0.5000 0.1667 0.3330 0.3330 0.5000 0.5000;fill3(X,Y,Z,C),4.2 三维图形的绘制,4.2 三维图形的绘制,瀑布图函数waterfall:它的用法及图形效果与meshz函数相似,只是它的网格线是在x轴方向出现,具有瀑布效果。【例4.42】绘制多峰函数的瀑布图和等高线图。程序如下: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
18、,k);%其中12代表高度的等级数xlabel(X-axis),ylabel(Y-axis),zlabel(Z-axis);,4.2 三维图形的绘制,4.2 三维图形的绘制,trimesh函数:生成三角形网格图,调用格式如下:trimesh(Tri,X,Y,Z):显示由m3的矩阵Tri定义的三角形网格。Tri的每行数据通过索引包含X,Y,Z顶点的矢量或矩阵来定义一个三角形。trimesh(Tri,X,Y,Z,C):用与surf函数相同的方式指定C定义的颜色。trimesh(,PropertyName,PropertyValue):为函数创建的patch图形对象指定其他属性名和属性值。,4.2
19、三维图形的绘制,【例4.43】创建顶点矢量和网格矩阵,然后创建一个三角形网格图。x=rand(1,50);y=rand(1,50);z=peaks(6*x-3,6*x-3);tri=delaunay(x,y);trimesh(tri,x,y,z);,4.2 三维图形的绘制,三角形刻面图函数trisurf:生成三角形表面图,调用格式如下:trisurf(Tri,X,Y,Z):显示由m3的矩阵Tri定义的三角形网格,并作为刻面。Tri的每行数据通过矢量或矩阵X,Y和Z赋索引值来定义一个三角形。trisurf(Tri,X,Y,Z,C):用与surf函数相同的方式指定C定义的颜色。,4.2 三维图形的
20、绘制,【例4.43】创建顶点矢量和刻面矩阵,然后创建一个三角形刻面图。x=rand(1,50);y=rand(1,50);z=peaks(6*x-3,6*x-3);tri=delaunay(x,y);trisurf(tri,x,y,z);,4.3 四维表现图,对于三维图形,通常可以利用z=z(x,y)的确定或不确定的函数关系来绘制可视化图形,此时自变量是二维的。而在高等物理、力学等的研究中经常会遇到形如v=v(x,y,z)的函数。此时自变量为三维的,而图形应当是四维的。但是由于我们所处空间和思维的局限性,在计算机的屏幕上只能表现出三个空间变量。为了表现四维图像,引入了三维实体的思维切片色图,它
21、由函数slice来实现,其调用格式如下:,4.3 四维表现图,slice(X,Y,Z,V,Sx,Sy,Sz):绘制向量Sx,Sy,Sz中的点沿x,y,z方向的切片图。数组X,Y,Z用来定义V的坐标。在每一点的颜色必须由对容量V的插值来决定。V必须为MNP阶的矩阵。slice(X,Y,Z,V,XI,YI,ZI):绘制沿XI,YI,ZI数组定义的曲面的通过容量V的切片图。slice(V,Sx,Sy,Sz)或slice(V,XI,YI,ZI):假设X=1:N,Y=1:M,Z=1:P。slice(,method):由method指定使用的插值方法。其值可以为linear,cubic或nearest.默认linear.,4.3 四维表现图,【例4.44】可视化函数,自变量的范围分别为 x,y,z=meshgrid(-2:.2:2,-2:.25:2,-1:.16:2);v=x.*exp(-x.2-y.2-z.2);slice(x,y,z,v,-1.2.8 2,2,-2.2)colorbar(horiz);view(-30,45),4.3 四维表现图,
链接地址:https://www.31ppt.com/p-5439312.html