山区地貌图 在某山区(平面区域(0,2800)´(0,2400)内,单位:米)测得一些地点的高程(单位:米)如表1,试作出该山区的地貌图.
表1
2400 2000 1600 1200 800 400 0 | 1430 1450 1470 1320 1280 1200 1080 940 1450 1480 1500 1550 1510 1430 1300 1200 1460 1500 1550 1600 1550 1600 1600 1600 1370 1500 1200 1100 1550 1600 1550 1380 1270 1500 1200 1100 1350 1450 1200 1150 1230 1390 1500 1500 1400 900 1100 1060 1180 1320 1450 1420 1400 1300 700 900 |
Y/X | 0 400 800 1200 1600 2000 2400 2800 |
绘制三维曲面函数
MATLAB提供了mesh函数和surf函数来挥之三维曲面图,常用图形还有瀑布图(waterfall函数)、三维曲面的等高线图(contour和contour3函数)。
mesh函数
Mesh函数用于绘制三维网格图,在不需要绘制特别精细的三维曲面图时,可以通过三维网格图来表示。Mesh函数的调用格式:
mesh(x,y,z)
注意:一般情况下,x、y、z是同型矩阵,x、y是网格坐标矩阵,z是网格点上的高度矩阵
1、mesh(x,y,z),MATLAB认为颜色的设定正比于图形的高度,可得到层次分明的三维图形
clear;clc;
x0=0:400:2800
y0=0:400:2400
z0=[1430 1450 1470 1320 1280 1200 1080 940;1450 1480 1500 1550 1510 1430 1300 1200;1460 1500 1550 1600 1550 1600 1600 1600;1370 1500 1200 1100 1550 1600 1550 1380;1270 1500 1200 1100 1350 1450 1200 1150;1230 1390 1500 1500 1400 900 1100 1060;1180 1320 1450 1420 1400 1300 700 900]
x=0:10:2800
y=0:10:2400
z=interp2(x0,y0',z0,x,y','spline')
mesh(x,y,z)
title('mesh(x,y,z)')
c称为色标(color scale)矩阵,用于指定曲面的颜色。
(1)meshc(x,y,z),用来绘制等值线网格图。
clear;clc;
x0=0:400:2800
y0=0:400:2400
z0=[1430 1450 1470 1320 1280 1200 1080 940;1450 1480 1500 1550 1510 1430 1300 1200;1460 1500 1550 1600 1550 1600 1600 1600;1370 1500 1200 1100 1550 1600 1550 1380;1270 1500 1200 1100 1350 1450 1200 1150;1230 1390 1500 1500 1400 900 1100 1060;1180 1320 1450 1420 1400 1300 700 900]
x=0:10:2800
y=0:10:2400
z=interp2(x0,y0',z0,x,y','spline')
meshc(x,y,z)
title('meshc(x,y,z)')
(2)meshz(x,y,z),用来绘制包含0平面的网格图。
clear;clc;
x0=0:400:2800
y0=0:400:2400
z0=[1430 1450 1470 1320 1280 1200 1080 940;1450 1480 1500 1550 1510 1430 1300 1200;1460 1500 1550 1600 1550 1600 1600 1600;1370 1500 1200 1100 1550 1600 1550 1380;1270 1500 1200 1100 1350 1450 1200 1150;1230 1390 1500 1500 1400 900 1100 1060;1180 1320 1450 1420 1400 1300 700 900]
x=0:10:2800
y=0:10:2400
z=interp2(x0,y0',z0,x,y','spline')
meshz(x,y,z)
title('meshz(x,y,z)')
surf函数用于绘制三维曲面图,各线条之间的补面用颜色填充。surf函数的调用格式为:
surf(x,y,z)
1、surf(x,y,z),MATLAB认为颜色的设定正比于图形的高度,可得到层次分明的三维图形
clear;clc;
x0=0:400:2800
y0=0:400:2400
z0=[1430 1450 1470 1320 1280 1200 1080 940;1450 1480 1500 1550 1510 1430 1300 1200;1460 1500 1550 1600 1550 1600 1600 1600;1370 1500 1200 1100 1550 1600 1550 1380;1270 1500 1200 1100 1350 1450 1200 1150;1230 1390 1500 1500 1400 900 1100 1060;1180 1320 1450 1420 1400 1300 700 900]
x=0:10:2800
y=0:10:2400
z=interp2(x0,y0',z0,x,y','spline')
surf(x,y,z)
title('surf(x,y,z)')
2、surfc(x,y,z),绘制了底层等高线图
clear;clc;
x0=0:400:2800
y0=0:400:2400
z0=[1430 1450 1470 1320 1280 1200 1080 940;1450 1480 1500 1550 1510 1430 1300 1200;1460 1500 1550 1600 1550 1600 1600 1600;1370 1500 1200 1100 1550 1600 1550 1380;1270 1500 1200 1100 1350 1450 1200 1150;1230 1390 1500 1500 1400 900 1100 1060;1180 1320 1450 1420 1400 1300 700 900]
x=0:10:2800
y=0:10:2400
z=interp2(x0,y0',z0,x,y','spline')
surfc(x,y,z)
title('surfc(x,y,z)')
.
3、surfl(x,y,z),考虑了有光照效果的表面图。
clear;clc;
x0=0:400:2800
y0=0:400:2400
z0=[1430 1450 1470 1320 1280 1200 1080 940;1450 1480 1500 1550 1510 1430 1300 1200;1460 1500 1550 1600 1550 1600 1600 1600;1370 1500 1200 1100 1550 1600 1550 1380;1270 1500 1200 1100 1350 1450 1200 1150;1230 1390 1500 1500 1400 900 1100 1060;1180 1320 1450 1420 1400 1300 700 900]
x=0:10:2800
y=0:10:2400
z=interp2(x0,y0',z0,x,y','spline')
surfl(x,y,z)
grid on
title('surfl(x,y,z)')
(三)集中对比
clear;clc;
x0=0:400:2800
y0=0:400:2400
z0=[1430 1450 1470 1320 1280 1200 1080 940;1450 1480 1500 1550 1510 1430 1300 1200;1460 1500 1550 1600 1550 1600 1600 1600;1370 1500 1200 1100 1550 1600 1550 1380;1270 1500 1200 1100 1350 1450 1200 1150;1230 1390 1500 1500 1400 900 1100 1060;1180 1320 1450 1420 1400 1300 700 900]
x=0:10:2800
y=0:10:2400
z=interp2(x0,y0',z0,x,y','spline')
subplot(3,2,1)
mesh(x,y,z)
title('mesh(x,y,z)')
subplot(3,2,2)
meshc(x,y,z)
title('meshc(x,y,z)')
subplot(3,2,3)
meshz(x,y,z)
title('meshz(x,y,z)')
subplot(3,2,4)
surf(x,y,z)
title('surf(x,y,z)')
subplot(3,2,5)
surfc(x,y,z)
title('surfc(x,y,z)')
subplot(3,2,6)
surfl(x,y,z)
title('surfl(x,y,z)')
(四)waterfall函数,用法及图形效果与meshz函数相似,只是它的网格线是在x轴方向出现,具有瀑布效果。
close all;
clear;clc;
x0=0:400:2800
y0=0:400:2400
z0=[1430 1450 1470 1320 1280 1200 1080 940;1450 1480 1500 1550 1510 1430 1300 1200;1460 1500 1550 1600 1550 1600 1600 1600;1370 1500 1200 1100 1550 1600 1550 1380;1270 1500 1200 1100 1350 1450 1200 1150;1230 1390 1500 1500 1400 900 1100 1060;1180 1320 1450 1420 1400 1300 700 900]
x=0:10:2800
y=0:10:2400
z=interp2(x0,y0',z0,x,y','spline')
waterfall(x,y,z)
title('waterfall(x,y,z)')
(五)等高线图分二维和三维两种形式,分别使用函数contour和contour3绘制。
close all;
clear;clc;
x0=0:400:2800
y0=0:400:2400
z0=[1430 1450 1470 1320 1280 1200 1080 940;1450 1480 1500 1550 1510 1430 1300 1200;1460 1500 1550 1600 1550 1600 1600 1600;1370 1500 1200 1100 1550 1600 1550 1380;1270 1500 1200 1100 1350 1450 1200 1150;1230 1390 1500 1500 1400 900 1100 1060;1180 1320 1450 1420 1400 1300 700 900]
x=0:10:2800
y=0:10:2400
z=interp2(x0,y0',z0,x,y','spline')
contour3(x,y,z)
title('contour3(x,y,z)')