如何利用MATLAB进行数据插值?

前言

本文是科学计算与MATLAB语言课程的第5章第3、4小结的学习笔记,通过查阅本文,可以轻松掌握利用MATLAB进行数据插值。 E n j o y   y o u r   r e a d i n g ! Enjoy\ your\ reading! Enjoy your reading!
欢迎大家👍,收藏⭐,转发🚀,
如有问题、建议请您在评论区留言💬。

1 引例-零件加工问题

在飞机制造中,机翼的加工是一项关键技术。由于机翼尺寸很大,通常在图纸中只能标出一些关键点的数据。下表给出了某型飞机机翼的下缘轮廓线数据,求x每改变0.1时y的值。

x035791112131415
y01.21.72.02.12.01.81.21.01.6
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];
x1=0:0.1:15;
y1=interp1(x,y,x1,'spline');
plot(x1,y1)

fig1

2 数据插值的计算机制

从数学上来说,数据插值是一种函数逼近的方法。

x x x x 1   x 2   . . . x k . . . x n x_1 \ x_2 \ ...x_k...x_n x1 x2 ...xk...xn
y y y y 1   y 2   . . . y k . . . y n y_1\ y_2\ ...y_k...y_n y1 y2 ...yk...yn

y = f ( x ) y=f(x) y=f(x)
它的实质就是用一个近似函数 ϕ ( x ) \phi(x) ϕ(x)来逼近未知函数 f ( x ) f(x) f(x),然后利用这个近似函数 ϕ ( x ) \phi(x) ϕ(x)进行插值。

3 数据插值的实现方法

数据插值的实现方法
在MATLAB中,一维插值函数为interp1(),其调用格式为:
Y1=interp1(X,Y,X1,method)
该语句将根据X、Y的值,计算函数在X1处的值。其中,X、Y是两个等长的已知向量,分别表示采样点和采样值。X1是一个向量或标量,表示要插值的点。
method参数用于指定插值方法,常用的取值有以下四种:
(1)linear:线性插值,默认方法。将与插值点靠近的两个数据点用直线连接,然后在直线上选取对应插值点的数据。
(2)nearest:最近点插值。选择最近样本点的值作为插值数据。
(3)pchip:分段3次埃尔米特插值。采用分段三次多项式,除满足插值条件,还需满足在若干节点处相邻段插值函数的一阶导数相等,使得曲线光滑的同时,还具有保形性。
(4)spline:3次样条插值。每个分段内构造一个三次多项式,使其插值函数除满足插值条件外,还要求在各节点处具有连续的一阶和二阶导数。

思考:为什么这两种插值方法都用3次多项式而不用更高次的?
这里就要提一下龙格现象了,龙格(Runge)发现多项式插值并非次数越高越精确!
四种方法的比较:

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]; 
x1=0:0.1:15; 
y1=interp1(x,y,x1,'spline'); %3次样条插值
subplot(2,2,1)
plot(x1,y1)
legend('3次样条插值')
hold on
y2=interp1(x,y,x1,'linear'); %线性插值
subplot(2,2,2)
plot(x1,y2,'r')
legend('线性插值')
y3=interp1(x,y,x1,'pchip'); %分段3次埃尔米特插值
subplot(2,2,3)
plot(x1,y3,'g')
legend('分段3次埃尔米特插值')
y4=interp1(x,y,x1,'nearest'); %最近点插值
subplot(2,2,4)
plot(x1,y4,'b')
legend('最近点插值')

fig2
线性插值和最近点插值方法比较简单。其中线性插值方法的计算量与样本点n无关。n越大,误差越小。
3次埃尔米特插值和3次样条插值都能保证曲线的光滑性。相比较而言,3次埃尔米特插值具有保形性;而3次样条插值要求其二阶导数也连续,所以插值函数的性态更好。
二维插值函数:
MATLAB中的二维插值函数为interp2(),其调用格式为:
Z1=interp2(X,Y,Z,X1,Y1,method)
其中,X、Y是两个向量,表示两个参数的采样点,Z是采样点对应的函数值。X1、Y1是两个标量或向量,表示要插值的点。

3 应用案例1-粮储仓的通风控制问题

在某粮情自动测控系统中,根据粮温、粮湿计算平衡点湿度,与大气湿度进行比较,再根据通风模拟情况决定是否自动进行通风。已测得平衡点湿度与粮温、粮湿关系的部分数据如下表,请推算相应范围内温度每变化1度、湿度每变化1个点的平衡点湿度。

平衡点湿度与粮温、粮湿度关系表
(第一列:粮温,第一行:粮湿,其余:平衡点湿度)
粮温\粮湿2030405060708090
08.910.3211.312.513.915.317.821.3
58.710.81112.113.214.816.5520.8
108.39.6510.881213.214.616.420.5
158.19.410.711.913.114.516.220.3
208.19.210.81213.214.816.920.9
x=20:10:90;
y=(0:5:20)';
z=[8.9,10.32,11.3,12.5,13.9,15.3,17.8,21.3;8.7,10.8,11,12.1,13.2,14.8,16.55,20.8;8.3,9.65,10.88,12,13.2,14.6,16.4,20.5;8.1,9.4,10.7,11.9,13.1,14.5,16.2,20.3;8.1,9.2,10.8,12,13.2,14.8,16.9,20.9];
xi=20:90;
yi=(0:20)';
zi=interp2(x,y,z,xi,yi,'spline');
surf(xi,yi,zi)

fig3

4 应用案例2-机动车刹车距离问题

在车辆行驶中,从驾驶员看到障碍物开始,到作出判断而采取制动措施停车所需的最短距离叫停车视距。停车视距由三部分组成:一是驾驶员反应时间内行驶的距离(即反应距离);二是开始制动到车辆完全停止所行驶的距离(即制动距离);三是车辆停止时与障碍物应该保持的安全距离。其中,制动距离主要与行驶速度和路面类型有关。根据测试,某型车辆在潮湿天气于沥青路面行驶时,其行车速度(单位:km/h)与制动距离(单位:m)的关系如下表所示。

速度2030405060708090100110120130140150
制动距离3.157.0812.5919.6828.3438.5750.463.7578.7195.22113.29132.93154.12176.87

假设驾驶员的反应时间为10s,安全距离为10m。请问:
①根据某驾驶员的实际视力和视觉习惯,其驾驶时的有效视距为120m,则其在该路面行车时,时速最高不能超过多少(结果取整)?
②若以表中数据为参考,设计一条最高时速为125km/h的高速公路,则设计人员应该保证驾驶者在公路上任一点的可视距离为多少米?

设速度为 v v v,停车视距为 d d d,反应距离为 d 1 d_1 d1,制动距离为 d 2 d_2 d2,安全距离为 d 3 d_3 d3,反应时间为 a s a_s as,则
d = d 1 + d 2 + d 3 d=d_1+d_2+d_3 d=d1+d2+d3其中, d 1 = a s v d_1=a_sv d1=asv d 2 d_2 d2为v的函数, d 3 d_3 d3已知。
第一问:根据某驾驶员的实际视力和视觉习惯,其驾驶时的有效视距为120m,则其在该路面行车时,时速最高不能超过多少(结果取整)?
已知反应时间为10s,安全距离为10m,可采用解方程方法:
10 v + d 2 + 10 = 120 10v+d_2+10=120 10v+d2+10=120存在的问题是, d 2 d_2 d2 v v v的函数,但是函数关系未知,方程不可解。
下面考虑数据插值方法,以表格中的数据为样本,进行数据插值,计算出与120m的停车视距所对应的速度指标。
编程思路:
第一步:建立速度和停车视距向量。
第二步:以1为单位,对采样区间内所有速度进行插值,计算出相应的停车视距。
第三步:求出停车视距120所对应的速度。
第四步:绘图展示。
如何根据停车视距120找到对应的速度?
第一步:令代表停车视距的向量di减去120,再取绝对值,得到一个新的向量x。
第二步:将x按升序排列,并记录最小元素的序号,该序号即为停车视距120所对应的速度数据在向量vi中的序号。
第三步:根据序号取得速度数据。

v=20:10:150;
vs=v.*(1000/3600);
d1=10.*vs;
d2=[3.15,7.08,12.59,19.68,28.34,38.57,50.4,63.75,78.71,95.22,113.29,132.93,154.12,176.87];
d3=10;
d=d1+d2+d3;
vi=20:1:150;
di=interp1(v,d,vi,'spline');
x=abs(di-120);
[y,i]=sort(x);
vi(i(1))
plot(vi,di,vi(i(1)),di(i(1)),'rp')

fig4
停车视距的增长随着车速增加呈非线性增长。速度越快,要求视线越远。
第二问:设计一条最高时速为125km/h的高速公路,则设计人员应该保证驾驶者在公路上任一点的可视距离为多少米?

>>j=find(vi==125);
>>di(j)
>>ans=
 480.14
>>plot(vi,di,125,480.14,'rp')

5 应用案例3-沙盘制作问题

某地面部队分成红蓝两方在指定的陌生区域(平面区域[0,2000]*[0,2000]内,单位:m)进行作战演习。在演习过程中,红方侦查单位已经测得一些地点的高程如下表所示。

y/x020040060080010001200140016001800
02000200020011992195419381972199519991999
2002000200220061908153313811728195919982000
40020002005204319219778971310193020032000
6001997197820092463237414451931220920502003
8001992189215661971276821112653261021212007
10001991187515111556222119862660260121192007
12001996195017972057284927982608230320522003
14001999199920792685339033842781216520162000
16002000200220432271266826682277204920032000
18002000200020042027206720672027200420002000

①根据表中数据,制作军事沙盘。
②在演习范围内,占领最大高地的一方将获得居高临下的优势。请问红方应第一时间抢占哪块区域。

解题思路:
第一问:用二维插值估算数据,以方便制作军事沙盘。
第二问:在插值的基础上,绘制等高线图,找到最大高地。

x=0:200:1800;
y=x';
z=[2000,2000,2001,1992,1954,1938,1972,1995,1999,1999;
2000,2002,2006,1908,1533,1381,1728,1959,1998,2000;
2000,2005,2043,1921,977,897,1310,1930,2003,2000;
1997,1978,2009,2463,2374,1445,1931,2209,2050,2003;
1992,1892,1566,1971,2768,2111,2653,2610,2121,2007;
1991,1875,1511,1556,2221,1986,2660,2601,2119,2007;
1996,1950,1797,2057,2849,2798,2608,2303,2052,2003;
1999,1999,2079,2685,3390,3384,2781,2165,2016,2000;
2000,2002,2043,2271,2668,2668,2277,2049,2003,2000;
2000,2000,2004,2027,2067,2067,2027,2004,2000,2000];
surf(x,y,z);
x1=0:100:1800;
y1=x1';
z1=interp2(x,y,z,x1,y1,'spline');
surf(x1,y1,z1);
x2=0:50:1800;
y2=x2';
z2=interp2(x1,y1,z1,x2,y2,'spline');
surf(x2,y2,z2);
contour(x2,y2,z2,12)

fig5
从图中可以看出最大高地的位置。

总结

这篇文章是否对您有帮助呢?最后
欢迎大家👍 收藏⭐ 转发🚀,
如有问题、建议请您在评论区留言💬。

  • 54
    点赞
  • 281
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MATLAB是一种功能强大的计算软件,它可以用于许多领域的数据处理和分析,包括气候数据插值。气候数据插值是指通过已有的气候数据,推算出未观测地区的气候数据。下面我将简要介绍MATLAB在气候数据插值方面的应用。 首先,MATLAB提供了一系列函数和工具箱,用于插值方法的实现。例如,interp1函数可以进行一维插值,interp2函数可以进行二维插值。此外,MATLAB还提供了更高级的插值函数,如griddata函数可以进行多维数据插值。这些函数可以根据已有气候数据的空间或时间分布来推算出未观测区域的气候数据。 其次,MATLAB还提供了各种插值方法的算法实现,例如最邻近插值、线性插值、样条插值等。用户可以根据自己的需求选择合适的插值方法来处理气候数据MATLAB还支持对插值过程进行优化和调节,以提高数据插值的准确性和精度。 此外,MATLAB还可以与其他数据处理和分析工具相结合,例如地理信息系统(GIS)工具箱和统计工具箱,进一步加强对气候数据插值分析。用户可以利用这些工具对插值结果进行空间分析、趋势分析、异常检测等,从而更全面地理解气候数据的变化和分布规律。 综上所述,MATLAB在气候数据插值方面具有广泛的应用。它提供了丰富的函数和工具箱,支持各种插值方法的实现和优化。通过利用MATLAB的这些功能,研究人员和气象工作者可以更好地进行气候数据插值分析,以揭示气候变化的规律和趋势,为气候预测和资源管理提供有力的依据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值