MATLAB之 数据插值(附实例+代码)

数据插值

数据插值可以根据有限个点的取值状况,合理估算出附近其他点的取值,从而节约大量的实验和测试资源,节省大量的人力、物力和财力。

引例-零件加工问题

MATLAB之 数据插值(附实例+代码)_第1张图片

>> 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)

数据插值的计算机制

数据插值是一种函数逼近的方法。

一维插值

Y1=interp1(X,Y,X1,method)

二维插值

interp2():二维插值函数。
调用格式:
Z1=interp2(X,Y,Z,X1,Y1,method)
其中,X、Y是两个向量,表示两个参数的采样点, Z是采样点对应的函数值。X1、 Y1是两个标量或向量,表示要插值的点。

数据插值的实现方法

method用于指定插值方法,常用的取值有以下四种:

  1. linear: 线性插值,默认方法。将与插值点靠近的两个数据点用直线 连接,然后在直线上选取对应插值点的数据。
  2. nearest :最近点插值。选择最近样本点的值作为插值数据。
  3. pchip:分段3次埃尔米特插值。采用分段三次多项式,除满足插值条件,还需满足在若干节点处相邻段插值函数的一-阶导数相等,使得曲线光滑的同时,还具有保形性。
  4. spline: 3次样条插值。每个分段内构造一个三次多项式, 使其插值函数除满足插值条件外,还要求在各节点处具有连续的一阶和二阶导数。

机动车刹车距离问题

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

设速度为v,停车视距为d,反应距离为d1,制动距离为d2,安全距离为d3,反应时间为a,则d=d1+d2+d3 。
其中,d1=av, d2为v的函数,d3已知。

编程思路:
  1. 建立速度和停车视距向量。
  2. 以1为单位,对采样区间内所有速度进行插值,计算出相应的停车视距。
  3. 求出停车视距120所对应的速度。
  4. 绘图展示。
如何根据停车视距120找到对应的速度?
  1. 令代表停车视距的向量di减去120,再取绝对值,得到一个新的向量x。
  2. 将x按升序排列,并记录最小元素的序号,该序号即为停车视距120所对应的速度数据在向量vi中的序号。
  3. 根据序号取得速度数据。
>> 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:150;
>> di=interp1(v,d,vi,'spline');
>> x=abs(di-120);
>> [y,i]=sort(x);
>> vi(i(1))

ans =

    36
>> plot(vi,di,vi(i(1)),di(i(1)),'rp')

MATLAB之 数据插值(附实例+代码)_第2张图片

你可能感兴趣的:(数学建模)