插值

来源:互联网 发布:数据新闻是什么 编辑:程序博客网 时间:2024/06/02 12:10
离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值
       与拟合不同的是,它要求曲线通过所有的已知数据。

python中:scipy的interpolate模块提供了许多插值运算的函数

1、B样条曲线插值:

一维数据的插值运算通过interp1d()完成:
interp1d(x,y,kind = 'linear', ... )

参数x和y是一系列已知的数据点,kind是插值类型,有以下候选值:
  • 'zero'、'nearest':阶梯插值,相当于0阶B样条曲线。
  • 'slinear'、'linear':线性插值,用一条直线连接所有的取样点,相当于1阶B样条曲线,其中'slinear'使用扩展库中的相关函数进行计算,'linear'使用python编写的函数进行运算,它们的结果一样。
  •  'quadratic'、'cubic':2阶和3阶B样条曲线,更高阶的曲线可以直接使用整数值指定。
  •   interp1d 对象可以计算x的取值范围之内任意点的函数值。它可以像函数一样直接调用,像numpy的ufunc函数一样能对数组中的每个元素进行计算,并返回一个新的数组。

本例中:决定插值曲线的数据点一共有11个,插值之后的曲线数据点有101个

问题该类要求其参数x是一个递增序列,只能在x的取值范围之内进行内插计算

2、外推和Spline拟合

UnivariateSpline类的插值运算比inter1d更高,它支持外推运算:
UnivariateSpline(x,y, w= None, bbox = [None,None], k = 3, s= None)

  • x,y是保存数据点的x-y坐标的数组,其中x必须是递增序列。
  • w是为每个数据点指定的权重值。
  • k为样条曲线的阶数
  • s是平滑参数,它使得最终生成的样条曲线满足条件,即当s>0时,样条曲线并不一定通过各个数据点。为了让曲线通过所有数据点,必须将s参数设置为0.

3、二维插值
使用inter2d()可以进行二维插值运算:
interp2d(x,y,z,kind = 'linear',...)




0 0