Matalab插值详解和源码

您所在的位置:网站首页 matlab最临近插值 Matalab插值详解和源码

Matalab插值详解和源码

2024-06-06 00:13| 来源: 网络整理| 查看: 265

 转载:Matalab插值详解和源码 - 知乎 (zhihu.com)

插值法

插值法又称“内插法”,是利用函数f (x)在某区间中已知的若干点的函数值,作出适当的特定函数,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方法称为插值法。如果这特定函数是多项式,就称它为插值多项式。常见分段线性插值法和样条差值,样条插值误差更小。

1 线性插值法

线性插值法是指使用连接两个已知量的直线来确定在这两个已知量之间的一个未知量的值的方法。 假设我们已知坐标(x0,y0)与(x1,y1),要得到[x0,x1]区间内某一位置x在直线上的y值。根据图中所示,我们得到两点式直线方程:

假设方程两边的值为α,则:

则:y = y0 + α(y1 − y0)(即已知x就可得a值 然后再得y值。

实际上,即使x不在x0到x1之间并且α也不是介于0到1之间,这个公式也是成立的。在这种情况下,这种方法叫作线性外插—参见外插值。

已知y求x的过程与以上过程相同。

2 样条插值法

常用三次样条插值法,具体概念比较复杂,可以自行百度。

3 拉格朗日差值法

略。

MATLAB中的使用-interp1函数: MATLAB中的插值函数为interp1,其调用格式为: yi=interp1(x,y,xi,'method') 其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量, 'method'表示采用的插值方法,MATLAB提供的插值方法有几种: 'nearest'是最邻近插值, 'linear'线性插值; 'spline'三次样条插值; 'pchip'立方插值.缺省时表示线性插值 注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。 x = 0:2*pi; y = sin(x); xx = 0:0.5:2*pi; % interp1对sin函数进行分段线性插值,调用interp1的时候,默认的是分段线性插值 y1 = interp1(x,y,xx,'linear'); subplot(2,2,1); plot(x,y,'o',xx,y1,'r') title('分段线性插值') % 临近插值 y2 = interp1(x,y,xx,'nearest'); subplot(2,2,2); plot(x,y,'o',xx,y2,'r'); title('临近插值') %球面线性插值 y3 = interp1(x,y,xx,'spline'); subplot(2,2,3); plot(x,y,'o',xx,y3,'r') title('球面插值') %三次多项式插值法 y4 = interp1(x,y,xx,'pchip'); subplot(2,2,4); plot(x,y,'o',xx,y4,'r'); title('三次多项式插值')

例:环境温度

例如:在一 天24小时内,从零点开始每间隔2小时测得的环境温度数据分别为 12,9,9,1,0,18 ,24,28,27,25,20,18,15,13, 推测中午1点(即13点)时的温度. x = 0:2:24; y = [12 9 9 10 18 24 28 27 25 20 18 15 13]; a = 13; y1 = interp1(x,y,a,'spline') % 结果为: 27.8725 % 若要得到一天24小时的温度曲线,则: xi = 0:1/3600:24; % 插值点可以是向量,则返回的也就是对应的向量 yi = interp1(x,y,xi, 'spline'); plot(x,y,'o' ,xi,yi);

一天24小时温度曲线

语法形式说明y=interp1(x,Y,xi)由已知点集(x,Y)插值计算xi上的函数值y=interp1(Y,xi)相当于x=1:length(Y)的interp(x,Y,xi)y=interp1(x,Y,xi,method)用指定插值方法计算插值点xi上的函数值y=interp1(x,Y,xi,method,’pp’)用指定方法插值,但返回结果为分段多项式 Method方法描述‘nearest’最邻近插值:插值点处函数值与插值点最邻近的已知点函数值相等‘liner’分段线性插值:插值点处函数值由连接其最邻近的两侧点的线性函数预测。Matlab中interp1的默认方法。‘spline’样条插值:默认为三次样条插值。可用spline函数替代即y=spline(x0,y0,x)‘pchip’三次Hermite多项式插值,可用pchip函数替代‘cubic’同’pchip’,三次Hermite多项式插值

Csape函数 csape函数的用法如下: pp = csape(x,y,conds,valconds) 其中(x,y)为数据向量,conds表示变界类型, valconds表示边界值。 边界类型(conds)可为: 'complete',给定边界 一阶导数. 'not-a-knot',非扭结条件,不用给边界值. 'periodic', 周期性边界条件,不用给边界值. 'second',给定边界二阶导数. 'variational',自然样条(边界二阶导数为0) 边界类型(valconds)可为: 'complete',给定边界 一阶导数. 'not-a-knot',非扭结条件,不用给边界值. 'periodic', 周期性边界条件,不用给边界值. 'second',给定边界二阶导数. 'variational',自然样条(边界二阶导数为0)

例:机床加工

待加工零件的外形根据工艺要求由一组数据(x,y)给出,用程控铣床加工时每一刀只能沿x方向和y方向走非常小的一步,这就需要从已知数据得到加工所要求的步长很小的(x,y)坐标。

依据下表给出的(x,y)数据求x坐标每改变0.1时的y坐标。试完成加工所需数据,画出曲线,并求出x=0处的曲线斜率和13



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3