scipy.interpolate.BSpline.

插入结点#

BSpline.insert_knot(x, m=1)[源代码][源代码]#

x 处插入一个重数为 m 的新节点。

给定B样条表示的节点和系数,在点`x`处插入`m`次节点,创建一个新的B样条。

参数:
x浮动

新节点的位置

mint, 可选

插入给定节点(其重数)的次数。默认值为1。

返回:
splBSpline 对象

插入新节点后的新 BSpline 对象。

注释

基于 [1][2] 中的算法。

在周期性样条的情况下(self.extrapolate == "periodic"),必须至少有 k 个内部节点 t(j) 满足 t(k+1)<t(j)<=x 或至少有 k 个内部节点 t(j) 满足 x<=t(j)<t(n-k)

此例程在功能上等同于 scipy.interpolate.insert

Added in version 1.13.

参考文献

[1]

W. Boehm, “Inserting new knots into b-spline curves.”, Computer Aided Design, 12, p.199-201, 1980. DOI:10.1016/0010-4485(80)90154-2.

[2]

P. Dierckx, “Curve and surface fitting with splines, Monographs on Numerical Analysis”, Oxford University Press, 1993.

示例

你可以在B样条中插入节点:

>>> import numpy as np
>>> from scipy.interpolate import BSpline, make_interp_spline
>>> x = np.linspace(0, 10, 5)
>>> y = np.sin(x)
>>> spl = make_interp_spline(x, y, k=3)
>>> spl.t
array([ 0.,  0.,  0.,  0.,  5., 10., 10., 10., 10.])

插入一个结点

>>> spl_1 = spl.insert_knot(3)
>>> spl_1.t
array([ 0.,  0.,  0.,  0.,  3.,  5., 10., 10., 10., 10.])

插入一个多重节点

>>> spl_2 = spl.insert_knot(8, m=3)
>>> spl_2.t
array([ 0.,  0.,  0.,  0.,  5.,  8.,  8.,  8., 10., 10., 10., 10.])