【发布时间】:2021-02-22 18:48:44
【问题描述】:
在 Scipy 中是否有更有效的方法来生成类似于 b-spline 函数示例中给出的递归代码的 b-spline 基函数:
def B(x, k, i, t):
if k == 0:
return 1.0 if t[i] <= x < t[i+1] else 0.0
if t[i+k] == t[i]:
c1 = 0.0
else:
c1 = (x - t[i])/(t[i+k] - t[i]) * B(x, k-1, i, t)
if t[i+k+1] == t[i+1]:
c2 = 0.0
else:
c2 = (t[i+k+1] - x)/(t[i+k+1] - t[i+1]) * B(x, k-1, i+1, t)
return c1 + c2
我尝试使用scipy.interpolate.BSpline.basis_element,但无法生成与函数“B”相同的结果。
【问题讨论】: