目录
【一维插值】interp1 1
yi = interp1(x,y,xi,method) 1
例 1 1
例2 2
【二维插值】interp2 4
ZI = interp2(X,Y,Z,XI,YI,method) 4
插值方式比较示例 4
例3 8
例4 9
【三角测量和分散数据插值】13
【数据拟合】17
例5 17
例6 18
【一维插值】interp1
yi = interp1(x,y,xi,method)
例1
在 1-12 的11 小时内,每隔1 小时测量一次温度,测得的温度依次为 :5,8,9,15,25,29,31,
30,22,25,27,24。试估计每隔1/10 小时的温度值。
建立M 文件temp.m
hours=1:12;
temps=[5 8 9 15 25 29 31 30 22 25 27 24];
h=1:0.1:12;
t=interp1(hours,temps,h,'spline');
plot(hours,temps,'kp',h,t,'b') ;
35
30
25
20
15
10
5
0 2 4 6 8 10 12
例2
已知飞机下轮廓线上数据如下,求x 每改变0.1 时的y 值。
X 0 3 5 7 9 11 12 13 14 15
Y 0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6
建立M 文件plane.m
x0=[0 3 5 7 9 11 12 13 14 15 ];
y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 ];
x=0:0.1:15;
y1=interp1(x0,y0,x,'nearest ');
y2=interp1(x0,y0,x);
y3=interp1(x0,y0,x,'spline');
plot(x0,y0,'kp',x,y1,'r')
2.5
2
1.5
1
0.5
0
0 5 10 15
plot(x0,y0,'kp',x,y2,'r')
2.5
2
1.5
1
0.5
0
0 5 10 15
plot(x0,y0,'kp',x,y3,'r')
2.5
2
1.5
1
0.5
0
0 5 10 15
【二维插值】interp2
ZI = interp2(X,Y,Z,XI,YI,method)
插值方式比较示例
用较大间隔产生peaks 函数数据点
[x,y] = meshgrid(-3:1:3);
z = peaks(x,y);
surf(x,y,z)
6
4
2
0
-2
-4
-6
4
2 4