scipy.interpolate.BSpline.
basis_element#
- classmethod BSpline.basis_element(t, extrapolate=True)[source]#
返回 B-spline 基底元素
B(x | t[0], ..., t[k+1])
。- 參數:
- tndarray,形狀 (k+2,)
內部節點
- extrapolatebool 或 ‘periodic’,選擇性
是否外插超出基礎區間
t[0] .. t[k+1]
,或返回 nans。如果為 ‘periodic’,則使用週期性外插。預設為 True。
- 返回:
- basis_elementcallable
一個可呼叫物件,代表結點向量 t 的 B-spline 基底元素。
筆記
B-spline 的次數 k 是從 t 的長度推斷出來的,為
len(t)-2
。結點向量是通過在內部節點 t 的前面和後面附加k+1
個元素來建構的。範例
建構一個三次 B-spline
>>> import numpy as np >>> from scipy.interpolate import BSpline >>> b = BSpline.basis_element([0, 1, 2, 3, 4]) >>> k = b.k >>> b.t[k:-k] array([ 0., 1., 2., 3., 4.]) >>> k 3
在
[0, 1, 1, 2]
上建構一個二次 B-spline,並與其顯式形式進行比較>>> t = [0, 1, 1, 2] >>> b = BSpline.basis_element(t) >>> def f(x): ... return np.where(x < 1, x*x, (2. - x)**2)
>>> import matplotlib.pyplot as plt >>> fig, ax = plt.subplots() >>> x = np.linspace(0, 2, 51) >>> ax.plot(x, b(x), 'g', lw=3) >>> ax.plot(x, f(x), 'r', lw=8, alpha=0.4) >>> ax.grid(True) >>> plt.show()