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)float

要插入新節點的節點值。如果 tck 是從 splprep 返回的,則應給定參數值 u。

tckBSpline 實例或元組

如果是元組,則預期為包含節點向量、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 是元組,則返回元組,否則會建構並返回 BSpline 物件。

註解

基於 [1][2] 的演算法。

不建議直接操作 tck 元組。在新程式碼中,建議使用 BSpline 物件,特別是 BSpline.insert_knot 方法。

參考文獻

[1]

W. Boehm, “Inserting new knots into b-spline curves.”, Computer Aided Design, 12, p.199-201, 1980.

[2]

P. Dierckx, “Curve and surface fitting with splines, 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.])