当前位置:文档之家› 二维插值

二维插值


返回
用MATLAB作散点数据的插值计算
z=griddata(x0,y0,z0,x,y,’method’)
被插值点 的函数值
插值节点 被插值点
注意:x0,y0,z0均为向量,长度相等。 Method可取 ‘nearest’,’linear’,’cubic’,’v4’; ‘linear’是缺省值。
上一页 下一页 主 页
1500
上一页 下一页 主 页
2000 X
2500
上一页 下一页 主 页
返回
上一页 下一页 主 页
范例2:船在该海域会搁浅吗?
在某海域测得一些点(x,y)处的水深z由下表给出, 船的吃水深度为5英尺,在矩形区域(75,200)* (-50,150)里的哪些地方船要避免进入。
x 129 140 103.5 88 185.5 195 105
上一页 下一页 主 页
引例1:如何绘制山区地貌图
上一页 下一页 主 页
Z
2000
1500
1000
500
0 0
1000 2000 3000 4000 5000 6000 0 X
上一页 下一页 主 页
5000 4000 3000 2000 1000 Y
引例1:如何绘制山区地貌图
y





••

••
假设:海底平滑 1.作出测量点的分布图; 2.求出矩形区域(75,200)*(-50,150)的 细分网格节点之横、纵坐标向量; 3.利用MATLAB中的散点插值函数求网格节点 的水深; 4.作出海底曲面图形和等高线图; 5.作出水深小于5的海域范围。
上一页 下一页 主 页
1.作出测量点的分布图
clear; x=[129 140 103.5 88 185.5 195 105.5 157.5 107.5 77 81 162 162 117.5]; y=[7.5 141.5 23 147 22.5 137.5 85.5…
再用
计算插值,即
上一页 下一页 主 页
返回
二维插值方法
网格节点插值法:
最邻近插值;
分片线性插值;
双线性插值;
双三次插值。
散点数据插值法:
修正Shephard法
返回
上一页 下一页 主 页
1.最邻近插值
y•
(x1•, y2) (x2,•y2)





••
(x1, y1) (x2, y1)


•实验目的
[1] 了解二维插值的基本原理,了解三 种网格节点数据的插值方法的基本思想; [2] 掌握用MATLAB计算二维插值的方法, 并对结果作初步分析; [3] 通过实例学习如何用插值方法解决 实际问题。
上一页 下一页 主 页
二维插值主要内容
引例1,引例2
二维插值的基本原理
上一页 下一页 主 页
返回
3.双线性插值
y

(x1•, y2)

(x2, y2)


• (x1•, y1) (x2•, y1) •




••
x
双线性插值是一片一片的空间二次曲面构成。 插值函数的形式如下:
f (x, y) (ax b)(cy d)
上一页 下一页 主 页
返回
用MATLAB作插值计算
z4
8
686
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
z9
9
88
94
9
上一页 下一页 主 页
引例2:船在该海域会搁浅吗?
y

••












上一页 下一页 主 页
x
返回
插值的基本原理

第一种(网格节点)
上一页 下一页 主 页
用MATLAB作二维插值小结
2. 散点数据二维插值: 已有程序griddata ,e01sef 和e01sff
维 已知 mn个节点
插 (xi, xj, zij) ( i=1, 2, …,m; j=1, 2, …, n )
值 的
其中xi, yj互不相同,不妨设
提 a=x1<x2<…<xm=b
法 c=y1<y2<…<yn=d
求任一插值点(x*, y*) ( ≠(xi, yj) )处的插值Z*
上一页 下一页 主 页
end figure(5) meshc(px,py,pf),rotate3d
图2到4: 利用网格 节点的x,y坐标向量 px,py及其对应的z 坐标矩阵pf,作出网 格线图和填充曲面图, 水深5英尺处海底曲 面的等高线
上一页 下一页 主 页
150
100
50
0
-50 80
100
120
140
160
180
范例1:绘制山区地貌图
要在某山区方圆大约27平方公里范围内 修建一条公路,从山脚出发经过一个居民区, 再到达一个矿区。横向纵向分别每隔400米测 量一次,得到一些地点的高程:(平面区域 0<=x<=5600,0<=y<=4800),首先需作出该山 区的地貌图和等高线图。
上一页 下一页 主 页
范例1:绘制山区地貌图
500 0 0
2000
4000
4500 4000 3500 3000 2500 2000 1500 1000
500 0 0
2000
4000
上一页 下一页 主 页
Y Y
4200 4000 3800 3600 3400 3200 3000 2800 2600
1500
2000 X
2500
4200 4000 3800 3600 3400 3200 3000 2800 2600
x
注意:最邻近插值一般不连续。具有连续性的最简 单的插值是分片线性插值。
上一页 下一页 主 页
返回
2.分片线性插值
y
(xi, yj+1) (xi+1, yj+1)



••

(xi,•yj) (xi+1•, yj)





••
x
上一页 下一页 主 页
2.分片线性插值
四个插值点(矩形的四个顶点)处的函
-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]; plot(x,y,'+'); pause
上一页 下一页 主 页
150
100
50
0
-50
-100 60
80
100
120
140
160
180
200
网格节点的插值计算; 散点数据的插值计算; 用MATLAB作插值计算小结
上一页 下一页 主 页
返回
网格节点数据的插值
例:测得平板表面3*5网格点处的温度
分别为:
x
82 81 80 82 84 • • • • •
79 63 61 65 81 • • • • •
84 84 82 85 86 • • • • •
di=1:.1:3;di=di'; wi=1:.1:5;
加密数据点
zlin=interp2(width,depth,temps,…
wi,di,'linear');
figure(2);
mesh(wi,di,zlin);
xlabel('Width of Plate'), ylabel('Depth of Plate') zlabel('Degrees Celsius'), axis('ij'),grid, pause; zlin=interp2(width,depth,temps,wi,di,…
注意:x0,y0为向量,但z0是矩阵,其 列数等于x0的长度,行数等于y0的长度。
上一页 下一页 主 页
width=1:5; depth=1:3;
M文件 wenduqm.m
temps=[82 81 80 82 84;79 63 61…
65 81;84 84 82 85 86];
mesh(width,depth,temps);pause



••
x
上一页 下一页 主 页
引例2:船在该海域会搁浅吗?
在某海域测得一些点(x,y)处的水深z由下表给 出,船的吃水深度为5英尺,在矩形区域(75,200) *(-50,150)里的哪些地方船要避免进入。
x 129 140 103.5 88 185.5 195 105
y 7.5 141.5 23 147 22.5 137.5 85.5
分别用最近邻点插值、线性插 值和三次插值加密数据点,并分别 作出这三组数据点的网格图。
注意观察双线性插值方法和双三 次插值方法的插值效果的差异。
上一页 下一页 主 页
上一页 下一页 主 页
上一页 下一页 主 页
上一页 下一页 主 页
4500 4000 3500 3000 2500 2000 1500 1000
'cubic'); figure(3); mesh(wi,di,zlin) xlabel('Width of Plate'), ylabel('Depth of Plate') zlabel('Degrees Celsius'), axis('ij'),grid
相关主题