【发布时间】:2021-09-01 10:09:24
【问题描述】:
我正在构建一个脊椎,它可以很好地插入我拥有的一些数据,并且我想将其存储在数据库中。我认为这很简单,因为我可以只取结和系数,然后用它们创建一个新的样条线。然而,这大错特错。这是一个最小(非)工作示例。
import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate
xs = np.linspace(0,2,101)
ys = xs*np.cos(2*np.pi*xs)
knotNumber = 9
knots = np.linspace(0,2,knotNumber)[1:-1]
spline = interpolate.LSQUnivariateSpline(xs,ys,knots,k=3)
re_spline = interpolate.BSpline(spline.get_knots(),spline.get_coeffs(),3)
sp_ys = spline(xs)
re_ys = re_spline(xs)
plt.plot(xs, ys, '-', color='black');
plt.plot(xs, sp_ys, '-', color='blue');
plt.plot(xs, re_ys, '-', color='red');
结果如下图:
如您所见,LSQUnivariateSpline 蓝色曲线完全覆盖了黑色。来自我创建的样条曲线的红色曲线似乎完全不相关。
我在这里有什么明显的遗漏吗?如何重建样条曲线?
【问题讨论】: