scipy.interpolate.BSpline.
插入结点#
- BSpline.insert_knot(x, m=1)[源代码][源代码]#
在 x 处插入一个重数为 m 的新节点。
给定B样条表示的节点和系数,在点`x`处插入`m`次节点,创建一个新的B样条。
- 参数:
- x浮动
新节点的位置
- mint, 可选
插入给定节点(其重数)的次数。默认值为1。
- 返回:
- splBSpline 对象
插入新节点后的新 BSpline 对象。
注释
在周期性样条的情况下(
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.])