试验22三维数据的绘图.docx
《试验22三维数据的绘图.docx》由会员分享,可在线阅读,更多相关《试验22三维数据的绘图.docx(20页珍藏版)》请在冰点文库上搜索。
试验22三维数据的绘图
实验2.1二维数据的绘图----一元函数的作图
5.1.1实验目的
掌握MATLAB软件中二维数据的绘图方法。
实验内容
1、平面曲线的作图----基本绘图命令plot
(1)plot(Y)
这是plot命令中最为简单的形式。
当Y为向量时,以Y的元素为纵坐标,元素相应的序列号为横坐标绘制出连线。
若Y为实矩阵,则按照列绘出每列元素和其序列号的对应关系,曲线数等于矩阵的列数。
若Y为复矩阵,则按列以每列元素的实部为横坐标以虚部为纵坐标,绘出曲线。
曲线数等于矩阵的列数。
(2)plot(X,Y)
当X和Y为同维向量时,以X为横坐标,Y为纵坐标绘制曲线;当X是向量,Y是每行元素数目和X维数相等的矩阵时,将绘出以X为横坐标,以Y中每行元素为纵坐标的多条曲线,曲线数等于矩阵的行数。
(3)plot(X,Y1,X,Y2,……,X,Yn)
这个命令能够绘制多条曲线,每条曲线分别以X,Y为横纵坐标。
各条曲线互不影响。
采用plot(X,Y1,X,Y2,……,X,Yn)命令能够绘制多重曲线,而plot(X,Y)中当X是向量,Y是矩阵时,也能够绘制多重曲线,事实上,MATLAB还提供了命令,可以在已经绘好的图形上加上新的图形。
当图线太多时,我们可以在命令中对线形和颜色进行设定,达到良好的区分效果。
例如plot(X,Y)命令可以改为plot(X,Y,S)其中S表示线型和颜色。
线型和颜色种类见表2.1。
表2.1线型和颜色种类
颜色
线型
标记类型
r(red)红色
g(green)绿色
b(blue)蓝色
y(yellow)黄色
k(black)黑色
w(white)白色
c(cyan)青色
m(magenta)品红
-实线(默认)
--双划线
:
虚线
-.点划线
+加号
*星号
.实点
o小圆圈(字母)
x交叉号
d棱形
s正方形
p正五角星
h正六角星
2、函数绘图命令:
fplot(‘function’,limits)——在指定的范围limits=[xmin,xmax]内画出函数名为function的一元函数图形。
注意fplot与plot的区别:
fplot的指令可以用来自动的画一个已定义的函数图形,而无须产生绘图所须要的一组数据作为变数。
fplot采用自适应步长控制来画出函数function的示意图,在函数的变化激烈的区间,采用小的步长,否则采用大的步长。
总之,使计算量与时间最小,图形尽可能精确。
3、符号函数的绘图命令:
ezplot(‘f(x)’,[xmin,xmax])——绘出函数f(x)从xmin到xmax区间的图形;
ezplot(‘f(x,y)’,[xmin,xmax,ymin,ymax])——绘出隐函数f(x,y)=0在[xmin,xmax]与[ymin,ymax]xmin区间上的图形;
ezplot(‘x(t)’,’y(t)’,[tmin,tmax])——在区间[tmin,tmax]上绘出参数方程x=x(t),y=y(t)的函数图形。
【例题2.1】分别用不同的作图命令,画出函数
在[-2,2]上的图形。
解:
(1)用plot作图命令,程序为:
x=-2:
0.1:
2;
y=x.^3-3*x;
plot(x,y)
gridon%加网格线
axisequal%x,y轴单位刻度相等
运行结果如图2.1所示。
图2.1
(2)用fplot作图命令,程序为:
fplot('x^3-3*x',[-2,2])%字符串'x^3-3*x'表示函数
axisequal
gridon
运行结果如图2.1所示。
(3)用ezplot作图命令,程序为:
ezplot('x^3-3*x',[-2,2])
axisequal
gridon
运行结果如图2.1所示。
说明:
(1)三种方法得到相同的图形,但不能认为三个命令的功能完全相同。
(2)plot与fplot绘图可对图形的线形、颜色作出控制,ezplot则不能。
【例题2.2】绘出函数
的函数图像。
题目分析:
函数
是由数学表达式表示的函数,可考虑选用fplot作图命令。
解:
选用fplot作图命令,程序为:
fplot('sin(x)./x',[-2020-0.51.5])%作图并显示x轴、y轴的范围
gridon
xlabel('x轴');%x轴注解
ylabel('y轴');%y轴注解
title('y=sinx/x');%图形标题
运行结果如图2.2所示。
图2.2
说明:
用fplot作图命令,可以绘出比较精确的图形,特别对那些变化比较剧烈的函数。
(2)程序中对函数图形的属性作了一些处理,比如添加数轴名、标题等。
【例题2.3】分别绘出参数函数
与隐函数
图像。
题目分析:
对参数函数与隐函数的作图,可考虑选用ezplot作图命令。
解:
选用ezplot作图命令,程序为:
subplot(2,1,1);%窗口分割为二行一列,且在第一行显示图形
ezplot('cos(3*t)','sin(5*t)',[0,2*pi])
gridon
subplot(2,1,2);%在第二行显示图形
ezplot('4*x^2+16*y^2-3',[-1.5,1.5,-1,1])
gridon
运行结果如图2.3所示。
图2.3
说明:
(1)图形窗口的分割一般用命令是subplot(m,n,k),表示将窗口分割成m*n块,并在第k块中显示当前图形。
(2)对隐函数作图要注意将二元关系式化成
的形式。
(3)ezplot作图命令一般较适宜画不太精确的图形。
【例题2.4】为了分析X射线的杀菌作用,用200千伏的X射线来照射细菌,每次照射6分钟,照射次数记为t,照射后的细菌数y如下表所示:
t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
y
352
211
197
160
142
106
104
60
56
38
36
32
21
19
15
试在O—ty坐标系中绘出散点图。
题目分析:
此题给出的是二维数据,因此选用plot作图命令即行了。
解:
选用plot作图命令,程序为:
T=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
Y=[352,211,197,160,142,106,104,60,56,38,36,32,21,19,15];
plot(t,y,'-o')
gridon
xlabel('次数t');ylabel('细菌数y');title('原始数据散点');
legend('原始数据')
运行结果如图2.4所示。
图2.4
说明:
(1)plot(t,y,'-o')对图形的线形作了控制,'-o'表示以O表示数据点,且点与点之间用短线连结。
(2)legend('原始数据')是给图形增加标签注解,以便意义更直观明确。
实验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。