scipy.interpolate.BSpline.
insert_knot#
- BSpline.insert_knot(x, m=1)[source]#
在 x 位置插入一个新的结点,其重数为 m。
给定 B 样条表示的结点和系数,创建一个新的 B 样条,在点 x 处插入 m 次结点。
- 参数:
- xfloat
新结点的位置
- 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
.在版本 1.13 中添加。
参考文献
[1]W. Boehm,“将新结点插入 B 样条曲线”,计算机辅助设计,12,p.199-201,1980。 DOI:10.1016/0010-4485(80)90154-2.
[2]P. Dierckx,“曲线和曲面拟合”,数值分析专著,牛津大学出版社,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.])