scipy.interpolate.
insert#
- scipy.interpolate.insert(x, tck, m=1, per=0)[source]#
在B样条中插入节。
旧版
此函数被视为旧版,将不再接收更新。虽然我们目前没有计划将其移除,但我们建议新代码改用更现代的替代方案。具体来说,我们建议构建一个
BSpline
对象,并使用其insert_knot
方法。给定B样条表示的节和系数,创建一个新的B样条,其中在点 x 处插入节 m 次。这是对FITPACK的FORTRAN例程insert的封装。
- 参数:
- x (u)float
要插入新节的节值。如果 tck 是从
splprep
返回的,则应给出参数值 u。- tck一个
BSpline
实例或一个元组 如果是元组,则应为包含节向量、B样条系数和样条次数的元组 (t,c,k)。
- mint, 可选
插入给定节的次数(其重数)。默认为1。
- perint, 可选
如果非零,则输入样条被视为周期性。
- 返回:
- 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 对象。
另请参阅
注释
不建议直接操作tck元组。在新代码中,建议使用
BSpline
对象,特别是BSpline.insert_knot
方法。参考文献
[1]W. Boehm, "插入新节到b样条曲线中。", Computer Aided Design, 12, p.199-201, 1980。
[2]P. Dierckx, "用样条进行曲线和曲面拟合, Monographs on Numerical Analysis", Oxford University Press, 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.])