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()
../../_images/scipy-interpolate-BSpline-basis_element-1.png