案例1 高点和高程
在一丘陵地带测量高程,x和y方向每隔100m测一个点,得到高程如下表所列,试插值一曲面,确定合适的模型,并由此测到最高点和相应的高程。
x0/z0\y0 | 100 | 200 | 300 | 400 | 500 |
100 | 636 | 697 | 624 | 478 | 450 |
200 | 698 | 712 | 630 | 478 | 420 |
300 | 680 | 674 | 598 | 412 | 400 |
400 | 662 | 626 | 552 | 334 | 310 |
【符号设置】
- x0,y0,z0 插值节点的三个维度,取值如上表;
- x,y,z 待插节点三个维度,x,y以10m为间距;
- Xmax,Ymax 表示最高点;
- Zmax 表示最高点高程;
- spline 默认插值方法:三次样条插值
【建立模型】
设地貌函数为z=S(x,y),z为任意点(x,y)处高程,插值要求
【模型求解】
x0=100:100:400;
y0=100:100:500;
z0=[636 697 624 478 450;698 712 630 478 420;
680 674 598 412 400;662 626 552 334 310];
pp=csape({x0,y0},z0);
x=100:10:400;y=100:10:500;
z=fnval(pp,{x,y});
zmax=max(max(z));
[dx,dy]=find(z==zmax);
[x(dx),y(dy),zmax]
[X,Y]=meshgrid(x,y);
Z=z';
mesh(X,Y,Z);
180.0000 170.0000 720.6252
案例2 海底曲面图的绘制
在某海域测得一些点(x,y)处的深度z由下表给出,在适当的矩形区域内绘制海底曲面的图形。
X | 129 | 140 | 103.5 | 88 | 185.5 | 195 | 105 |
Y | 7.5 | 141.5 | 23 | 147 | 22.5 | 137.5 | 85.5 |
z | 4 | 8 | 6 | 8 | 6 | 8 | 8 |
X | 157.5 | 107.5 | 77 | 81 | 162 | 162 | 117.5 |
Y | -6.5 | -81 | 3 | 56.5 | -66.5 | 84 | -33.5 |
z | 9 | 9 | 8 | 8 | 9 | 4 | 9 |
【模型计算】
x=[129,140,103.5,88,185.5,195,105,157.5,107.5,77,81,162,162,117.5];
y=[7.5,141.5,23,147,22.5,137.5,85.5,-6.5,-81,3,56.5,-66.5,84,-33.5];
z=-[4,8,6,8,6,8,8,9,9,8,8,9,4,9];
xmm=minmax(x);
ymm=minmax(y);
X=xmm(1):5:xmm(2);
Y=ymm(1):5:ymm(2);
Z=griddata(x,y,z,X,Y','cubic');
subplot(1,2,1), plot(x,y,'*')
subplot(1,2,2), mesh(X,Y,Z)