scipy.interpolate.

insert#

scipy.interpolate.insert(x, tck, m=1, per=0)[源代码]#

将节点插入 B 样条。

遗留

此函数被认为是遗留函数,将不再接收更新。 虽然我们目前没有计划删除它,但我们建议新代码改用更现代的替代方案。 具体而言,我们建议构造一个 BSpline 对象并使用其 insert_knot 方法。

给定 B 样条表示的节点和系数,创建一个新的 B 样条,在点 x 处插入节点 m 次。 这是对 FITPACK 的 FORTRAN 例程 insert 的封装。

参数:
x (u)浮点数

要插入新节点的节点值。 如果 tck 是从 splprep 返回的,则应给出参数值 u。

tckBSpline 实例或一个元组

如果为元组,则期望是一个包含节点向量、B 样条系数和样条次数的元组 (t,c,k)。

m整数,可选

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

per整数,可选

如果非零,则将输入样条视为周期性的。

返回:
BSpline 实例或一个元组

一个新的 B 样条,具有节点 t、系数 c 和次数 k。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 是一个元组,则返回一个元组,否则构造并返回一个 BSpline 对象。

另请参阅

BSpline.insert_knot

注释

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

不建议直接操作 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.])