试验22三维数据的绘图.docx
- 文档编号:10171541
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:13
- 大小:306.36KB
试验22三维数据的绘图.docx
《试验22三维数据的绘图.docx》由会员分享,可在线阅读,更多相关《试验22三维数据的绘图.docx(13页珍藏版)》请在冰豆网上搜索。
试验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】画出参数曲线
的图形。
题目分析:
由于参数方程表示的是空间曲线,所以可用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)处注解
gridon
运行结果如图2.5所示。
图2.5
说明:
(1)从例中可明显看出,二维图形的所有基本特性在三维中仍都存在,如坐标网格、标题等。
(2)plot3(X,Y1,S1,X,Y2,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和Y
Z=X.^2+Y.^2;
plot3(X,Y,Z)
title(‘截痕线‘),xlabel(‘x‘),ylabel(‘y‘),zlabel(‘z‘)
gridon
运行结果如图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,Y]=meshgrid(x,y);%生成数据点矩阵X和Y
Z=X.^2+Y.^2;
surf(X,Y,Z)
gridon
shadingflat%将当前的图形变平滑
运行结果如图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)程序中对函数图形的属性作了一些处理,比如使当前的图形变平滑等。
利用在x-y平面的矩形网格点上的z轴坐标值,MATLAB定义了一个网格曲面。
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]=contour(X,Y,Z);
clabel(C,h);%给等值线图标上高度值(见图2.9)
colormapcool;%图形窗口的色图
figure
(2);%新建图形窗口
(2),以显示下面的所作图形。
subplot(2,1,1);
mesh(X,Y,Z);%画出立体网状图
subplot(2,1,2);
surf(X,Y,Z);%画出立体曲面图
shadingflat
运行结果如图2.9、2.10所示。
图2.9
图2.10
说明:
函数clabel给等值线图标上高度值。
不过这样做时,函数clabel需要函数contou等值线矩阵的输出。
在三维作图常用到命令:
meshgrid——生成二元函数z=f(x,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为立方体定义域的立方体分割平面在z轴上的值。
输出向量X为立方体定义域中分割点的x轴坐标值,Y为立方体定义域中分割点的y轴坐标值,Z为立方体定义域中分割点的z轴坐标值。
4、建模问题的作图
【例题2.9】(1994年全国大学生数学建模竞赛A题)要在一山区修建公路,首先测得一些地点的高程,数据见表2.2(平面区域0≤x≤5600,0≤y≤4800;表中数据为坐标点的高程,单位:
米;y轴正向为北)。
表2.2
4800
1350
1370
1390
1400
1410
960
940
880
800
690
570
430
290
210
150
4400
1370
1390
1410
1430
1440
1140
1110
1050
950
820
690
540
380
300
210
4000
1380
1410
1430
1450
1470
1320
1280
1200
1080
940
780
620
460
370
350
3600
1420
1430
1450
1480
1500
1550
1510
1430
1300
1200
980
850
750
550
500
3200
1430
1450
1460
1500
1550
1600
1550
1600
1600
1600
1550
1500
1500
1550
1500
2800
8950
1190
1370
1500
1200
1100
1550
1600
1550
1380
1070
900
1050
1150
1200
2400
910
1090
1270
1500
1200
1100
1350
1450
1200
1150
1010
880
1000
1050
1100
2000
880
1060
1230
1390
1500
1500
1400
900
1100
1060
950
870
900
930
950
1600
830
980
1180
1320
1450
1420
1400
1300
700
900
850
840
380
780
750
1200
740
880
1080
1130
1250
1280
1230
1040
900
500
700
780
750
650
550
800
650
760
880
970
1020
1050
1020
830
800
700
300
500
550
480
350
400
510
620
730
800
850
870
850
780
720
650
500
200
300
350
320
0
370
470
550
600
670
690
670
620
580
450
400
300
100
150
250
y/x
0
400
800
1200
1600
2000
2400
2800
3200
3600
4000
4400
4800
5200
5600
试利用表中的数据,绘制这一山区的地貌网格图、平滑地貌图、等高线图。
题目分析:
山区地貌可视为为空间曲面,根据表中的测量数据,可建立空间直角坐标系,坐标系的原点位于xy面的起始测量位置。
利用meshgrid命令建立起x-y平面上的矩形定义域{(x,y)|0≤x≤5600,0≤y≤4800}中数据点矩阵X和Y,若将表中高程数据按原来的行列顺序作为地貌的纵坐标,此时给出Y轴的坐标的顺序是4800,4400,4000,……,0。
又由于测量的数据间隔较大,直接作出较平滑的地貌图是不精确的,若假设地貌的变化是连续的,则可用插值的方法画出较平滑的地貌图。
解:
程序为:
x=0:
400:
5600;%给出X轴的坐标
y=4800:
-400:
0;%给出Y轴的坐标
[X,Y]=meshgrid(x,y);
Z=[1350137013901400141096094088080069057043029021050;13701390141014301440114011101050950820690540380300210;138014101430145014701320128012001080940780620460370350;1420143014501480150015501510143013001200980850750550500;143014501460150015501600155016001600160015501500150015501500;9501190137015001200110015501600155013801070900105011501200;9101090127015001200110013501450120011501010880100010501100;88010601230139015001500140090011001060950870900930950;830980118013201450142014001300700900850840380780750;740880108011301250128012301040900500700780750650550;650760880970102010501020830800700300500550480350;510620730800850870850780720650500200300350320;370470550600670690670620580450400300100150250];%给出(x,y)点的高程
surf(X,Y,Z);%网格阴影图见图2.11
figure
(2);%新开一窗口
contour(X,Y,Z,20);%画平面等高线见图2.12
figure(3);%再新开一窗口
contour3(X,Y,Z,20);%画三维等高线见图2.13
xi=linspace(0,5600,50);yi=linspace(0,4800,50);%给出新的插值坐标
[XI,YI]=meshgrid(xi,yi);
ZI=interp2(X,Y,Z,XI,YI,'*cubic');%对数据(xi,yi,zi)使用样条在网格{X,Y}上插值.
surf(XI,YI,ZI);%用网格画出插值的结果见图2.14
shadinginterp%采用插补明暗处理见图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。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 试验 22 三维 数据 绘图