scipy.interpolate.
insert#
- scipy.interpolate.insert(x, tck, m=1, per=0)[source]#
插入 B 样条线中的结点。
给定 B 样条线表示的结点和系数,在点 x 处插入一个结点 m 次,创建一个新的 B 样条线。这是用于 FITPACK 的 FORTRAN 程序 insert 的包装器。
- 参数:
- x (u)float
要插入新结点的结点值。如果 tck 是从
splprep
返回的,则应该提供参数值 u。- tck一个
BSpline
实例或一个元组 如果为元组,则它应该是包含结点向量、B 样条线系数和样条线次数的元组 (t,c,k)。
- mint,可选
插入给定结点(它的重数)的次数。默认值为 1。
- perint,可选
如果不为零,则输入样条线被认为是周期性的。
- 返回值:
- BSpline 实例或一个元组
具有结点 t、系数 c 和度 k 的新的 B 样条。
t(k+1) <= x <= t(n-k)
,其中 k 是样条的度。在周期样条 (per != 0
) 的情况下,必须至少有 k 个内部结点 t(j) 满足t(k+1)<t(j)<=x
或至少有 k 个内部结点 t(j) 满足x<=t(j)<t(n-k)
。仅在输入参数 tck 是一个元组时才返回元组,否则会构造 B 样条对象并返回。
另请参见
注释
不建议直接操作 tck 元组。在新代码中,最好使用
BSpline
对象,特别是BSpline.insert_knot
方法。参考
[1]W. Boehm,“在 b 样条曲线中插入新结点”。计算机辅助设计,12, 第 199-201 页,1980 年。
[2]P. Dierckx,“使用样条曲线和曲面拟合,数值分析专论”,牛津大学出版社,1993 年。
示例
您可以在 B 样条中插入结点。
>>> from scipy.interpolate import splrep, insert >>> import numpy as np >>> x = np.linspace(0, 10, 5) >>> y = np.sin(x) >>> tck = splrep(x, y) >>> tck[0] array([ 0., 0., 0., 0., 5., 10., 10., 10., 10.])
已插入一个结点
>>> tck_inserted = insert(3, tck) >>> tck_inserted[0] array([ 0., 0., 0., 0., 3., 5., 10., 10., 10., 10.])
已插入一些结点
>>> tck_inserted2 = insert(8, tck, m=3) >>> tck_inserted2[0] array([ 0., 0., 0., 0., 5., 8., 8., 8., 10., 10., 10., 10.])