1、试验22三维数据的绘图实验2.2 三维数据的绘图实验目的学会MATLAB软件中三维图形(二元函数)、曲面图形、等高线图的绘图方法。三维图形包括空间曲面、空间曲线、等高线图等图形。函数z=f(x,y)的图像一般是一张空间曲面.一般说来,参数方程组的图像是空间一条曲线。如果二元函数z=f(x,y)在平面数集D上有定义,空间曲线称为函数z=f(x,y)的等高线。 实验内容1空间曲线的作图绘制空间曲线命令:plot3(x,y,z,S)x,y,z是n维向量,分别表示曲线上点集的横坐标、纵坐标、与竖坐标;S是可选的字符串,用来指定颜色、标记符号和/或线形。【例题2.5】画出参数曲线的图形。题目分析:由于参
2、数方程表示的是空间曲线,所以可用plot3命令画出图形,根据plot3命令格式要求,先产生参数t向量,再生成向量X、Y、Z。解:用plot3作图命令,程序为:t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)title( 螺旋线 ),xlabel( sint(t) ),ylabel( cos(t) ),zlabel( t );text(0,0,0, 原点 ) %在坐标原点(0,0,0)处注解grid on运行结果如图2.5所示。图2.5说明:(1)从例中可明显看出,二维图形的所有基本特性在三维中仍都存在,如坐标网格、标题等。(2)plot3(X,Y1,S1, X,Y2
3、,S2, ,X,Yn,Sn)命令可将多条曲线画在一起。【例题2.6】 设曲面,画出与平面相交的多条曲线。题目分析:显然平面与x轴的交点坐标构成向量x= (-1.5, -1.0 , -0.5, 0, 0.5, 1.0, 1.5),由命令meshgrid的用法可知,可以用该命令生成二元函数z = f(x,y)中x-y平面上的矩形定义域中数据点矩阵X和Y。解:选用plot3作图命令,程序为:clear x=-1.5:0.5:1.5;y=-2:0.5:2;X,Y=meshgrid(x,y); %生成数据点矩阵X和YZ=X.2+Y.2; plot3(X,Y,Z)title( 截痕线 ),xlabel(
4、x ),ylabel( y ),zlabel( z )grid on运行结果如图2.6所示。图2.6说明:从图形容易看出这些曲线是抛物线。2空间曲面的作图(1)绘制空间曲面命令:surf(x,y,z) x,y,z是n维向量,分别表示曲线上点集的横坐标、纵坐标与竖坐标。(2)绘制空间网格曲面命令:mesh(x,y,z) x,y,z是n维向量,分别表示曲线上点集的横坐标、纵坐标、与竖坐标。注意:空间曲面绘图时,首先要利用meshgrid命令在xoy面生成网格线,才可以绘图。【例题2.7】 绘出旋转抛物面的图形。解法1:选用surf作图命令,程序为:x=-2:0.05:2;y=-2:0.05:2;X
5、,Y=meshgrid(x,y); %生成数据点矩阵X和YZ=X.2+Y.2;surf(X,Y,Z)grid onshading flat %将当前的图形变平滑运行结果如图2.7所示。图2.7解法2:选用mesh作图命令,程序为:x=-2:0.1:2;y=-2:0.1:2;X,Y=meshgrid(x,y); Z=X.2+Y.2;mesh(X,Y,Z)运行结果如图2.8所示。图2.8说明:(1)由于作图范围是平面上的矩形区域,因此画出的图形位于长方体区域内。(2)程序中对函数图形的属性作了一些处理,比如使当前的图形变平滑等。利用在xy平面的矩形网格点上的z轴坐标值,MATLAB定义了一个网格曲
6、面。MATLAB通过将邻接的点用直线连接起来形成网状曲面,其结果好象在数据点有结点的鱼网。 3、曲面的等高线图等高线命令:contour(z)把矩阵z中的值作为一个二元函数的值,等高曲线是一个平面的曲线,平面的高度v是Matlab自动取的;C,h=contour(x,y,z,n)(x,y)是平面z=0上点的坐标矩阵,z为相应点的高度值矩阵,有n条等高线。【例题2.8】在范围内,绘出曲面的等高线。题目分析:由题目的要求,选用contour作图命令。解:程序为:x=-2:0.2:2; y=-2:0.2:3;X,Y=meshgrid(x,y); Z=X.*exp(-X.2-Y.2);C,h=cont
7、our(X,Y,Z); clabel(C,h); %给等值线图标上高度值(见图2.9)colormap cool; %图形窗口的色图figure(2); %新建图形窗口(2),以显示下面的所作图形。subplot(2,1,1);mesh(X,Y,Z); % 画出立体网状图subplot(2,1,2);surf(X,Y,Z); % 画出立体曲面图shading flat运行结果如图2.9、2.10所示。图2.9图2.10说明:函数clabel给等值线图标上高度值。不过这样做时,函数clabel需要函数contou等值线矩阵的输出。在三维作图常用到命令:meshgrid生成二元函数z = f(x,
8、y)中x-y平面上的矩形定义域中数据点矩阵X和Y,或者是三元函数u = f (x,y,z)中立方体定义域中的数据点矩阵X,Y和Z。X,Y = meshgrid(x,y) 输入向量x为x-y平面上矩形定义域的矩形分割线在x轴的值,向量y为x-y平面上矩形定义域的矩形分割线在y轴的值。输出向量X为x-y平面上矩形定义域的矩形分割点的横坐标值矩阵,输出向量Y为x-y平面上矩形定义域的矩形分割点的纵坐标值矩阵。 X,Y,Z = meshgrid(x,y,z)输入向量x为立方体定义域的立方体分割平面在x轴上的值,输入向量y为立方体定义域的立方体分割平面在y轴上的值,输入向量z为立方体定义域的立方体分割平
9、面在z轴上的值。输出向量X为立方体定义域中分割点的x轴坐标值,Y为立方体定义域中分割点的y轴坐标值,Z为立方体定义域中分割点的z轴坐标值。4、建模问题的作图【例题2.9】 (1994年全国大学生数学建模竞赛A题)要在一山区修建公路,首先测得一些地点的高程,数据见表2.2(平面区域0x5600,0y4800;表中数据为坐标点的高程,单位:米;y轴正向为北)。表2.2480013501370139014001410960940880800690570430290210150440013701390141014301440114011101050950820690540380300210400013
10、801410143014501470132012801200108094078062046037035036001420143014501480150015501510143013001200980850750550500320014301450146015001550160015501600160016001550150015001550150028008950119013701500120011001550160015501380107090010501150120024009101090127015001200110013501450120011501010880100010501100
11、200088010601230139015001500140090011001060950870900930950160083098011801320145014201400130070090085084038078075012007408801080113012501280123010409005007007807506505508006507608809701020105010208308007003005005504803504005106207308008508708507807206505002003003503200370470550600670690670620580450400
12、300100150250y/x0400800120016002000240028003200360040004400480052005600试利用表中的数据,绘制这一山区的地貌网格图、平滑地貌图、等高线图。题目分析:山区地貌可视为为空间曲面,根据表中的测量数据,可建立空间直角坐标系,坐标系的原点位于xy面的起始测量位置。利用meshgrid命令建立起x-y平面上的矩形定义域(x,y)|0x5600,0y4800中数据点矩阵X和Y,若将表中高程数据按原来的行列顺序作为地貌的纵坐标,此时给出Y轴的坐标的顺序是4800,4400,4000,0。又由于测量的数据间隔较大,直接作出较平滑的地貌图是不精确
13、的,若假设地貌的变化是连续的,则可用插值的方法画出较平滑的地貌图。解:程序为:x=0:400:5600; %给出X轴的坐标y=4800:-400:0; %给出Y轴的坐标X,Y=meshgrid(x,y); Z=1350 1370 1390 1400 1410 960 940 880 800 690 570 430 290 210 50;1370 1390 1410 1430 1440 1140 1110 1050 950 820 690 540 380 300 210;1380 1410 1430 1450 1470 1320 1280 1200 1080 940 780 620 460 37
14、0 350;1420 1430 1450 1480 1500 1550 1510 1430 1300 1200 980 850 750 550 500;1430 1450 1460 1500 1550 1600 1550 1600 1600 1600 1550 1500 1500 1550 1500;950 1190 1370 1500 1200 1100 1550 1600 1550 1380 1070 900 1050 1150 1200;910 1090 1270 1500 1200 1100 1350 1450 1200 1150 1010 880 1000 1050 1100;880
15、 1060 1230 1390 1500 1500 1400 900 1100 1060 950 870 900 930 950;830 980 1180 1320 1450 1420 1400 1300 700 900 850 840 380 780 750;740 880 1080 1130 1250 1280 1230 1040 900 500 700 780 750 650 550;650 760 880 970 1020 1050 1020 830 800 700 300 500 550 480 350;510 620 730 800 850 870 850 780 720 650
16、500 200 300 350 320;370 470 550 600 670 690 670 620 580 450 400 300 100 150 250; %给出(x,y)点的高程surf(X,Y,Z); %网格阴影图 见图2.11figure(2); %新开一窗口contour(X,Y,Z,20); %画平面等高线见图2.12figure(3); %再新开一窗口contour3(X,Y,Z,20); %画三维等高线见图2.13xi=linspace(0,5600,50);yi=linspace(0,4800,50); % 给出新的插值坐标XI,YI=meshgrid(xi,yi);ZI
17、=interp2(X,Y,Z,XI,YI,*cubic); %对数据(xi, yi,zi)使用样条在网格 X,Y 上插值.surf(XI,YI,ZI); %用网格画出插值的结果见图2.14shading interp %采用插补明暗处理见图2.15图2.11图2.12图2.13图2.14图2.15说明:(1)图形显示在y=3200米处有一东西走向的山峰;从坐标(2400,2400)到(4800,0)有一西北东南走向的山谷;在(2000,4800)附近有一山口峰。(2)在MATLAB中,除命令interp2(X,Y,Z,XI,YI,*cubic) 对数据(X,Y,Z)使用样条在网格 XI,YI 上插值外,函数griddata也用来产生经插值后的均匀间隔数据以作图,其格式为ZI=griddata(X,Y,Z,XI,YI),功能是三个原始矩阵X,Y,Z和需要插值的方格矩阵XI,YI,创建一个新的因变量矩阵ZI。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1