※数据插值和应用样例分析

数据插值可以根据有限个点的取值情况,合理估算出附近其它点的取值,从而节约大量的实验和测试资源,节省大量的人力物力和财力。
从数学上讲,数据插值是一种函数逼近的方法。
interp1()

一维插值函数

例:
Y1=interp1(X,Y,X1,method)
根据X、Y的值,计算函数在X1处的值,其中,X、Y是两个等长的已知向量,分别表示采样点和采样值,X1是一个向量或标量,表示要插值的点。

method函数:

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

为什么不用更高阶的多项式?

多项式并非越高越好,次数越高,越容易产生震荡而偏离原函数,这种现象称为龙格(Runge)现象。

函数插值的简单使用范例:

我用y=x^2来作为示范

>> x=-2:1:2;
>> y=[4,1,0,1,4];
>> x1=-2:0.01:2;
>> y1=interp1(x,y,x1,'spline');
>> plot(x1,y1)

我们先给定了x和y的五个相对应的函数值,然后用数据插值函数得到步长为0.01的很多不同的x对应的y值
效果图:
在这里插入图片描述
作为对比,如果不进行插值,图像 plot(x,y)是这样的:
在这里插入图片描述
所以插值函数确实很神奇,也在数据分析中及其有用,这也是我做这个博客的目的。
tips:x,y必须是取值一一对应的,否则会返回

错误使用 griddedInterpolant
网格矢量未定义与给定值匹配的点网格。
四种method函数的比较
先看一个实例:
在这里插入图片描述

>> x=[0,3,5,7,9,11,12,13,14,15];
>> y=[0,1.2,1.7,2.0,2.1,1.8,1.2,1.0,1.6];
>> x1=0:0.1:1.5;
>> y1=interp1(x,y,x1,'spline');
错误使用 griddedInterpolant
网格矢量未定义与给定值匹配的点网格。

出错 interp1 (line 161)
        F = griddedInterpolant(X,V,method);
 
>> y=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.0,1.6];
>> y1=interp1(x,y,x1,'spline');
>> plot(x1,y1);
>>  x1=0:0.1:15;
>> y1=interp1(x,y,x1,'spline');
>>  plot(x1,y1);
>> 

在这里插入图片描述

机动车刹车距离问题

在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章