scipy.interpolate.insert

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

将结插入到B样条曲线中。

在给定B样条表示的结点和系数的情况下,创建插入结点的新B样条 m 时间点上的时间 x 。这是FITPACK的FORTRAN例程INSERT的包装。

参数
X(U)array_like

插入新结的一维点。如果 tck 是从 splprep ,则应给出参数值u。

tck :A BSpline 实例或元组一个

如果是元组,则它应该是包含节点向量、B样条系数和样条曲线阶数的元组(t,c,k)。

m整型,可选

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

per整型,可选

如果非零,则认为输入样条线是周期性的。

退货
B样条实例或元组

一种新的具有结点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 是元组,否则将构造并返回BSpline对象。

注意事项

基于来自 [1][2].

不建议直接操作tck-tuple。在新代码中,更喜欢使用 BSpline 对象。

参考文献

1

将新节点插入b样条曲线>,“计算机辅助设计”,第12页,第199-201页,1980。

2

P.Dierckx,“用样条拟合曲线和曲面,数值分析专著”,牛津大学出版社,1993。

示例

您可以将节点插入到B样条曲线中。

>>> from scipy.interpolate import splrep, insert
>>> 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.])