0

I have a bspline created with scipy.interpolate.splrep with points (x_0,y_0) to (x_n,y_n). Usual story. But I would like to add a data point (x_n+1,y_n+1) and appropriate knot without recomputing the entire spline. Can anyone think of a way of doing this elegantly?

I could always take the knot list returned by splrep, and add on the last knot of a smaller spline created with (x_n-2, y_n-2) to (x_n+1,y_n+1) but that seems less efficient than it could be.

4

1 回答 1

0

简短的回答:没有。

样条构造是一个全局过程,所以如果你添加一个数据点,你真的需要重新计算整个样条。其中涉及求解 N×N 线性系统等。

如果您要按顺序添加许多结,则可能可以构建一个过程,在该过程中,您在 step 上使用 colocation 矩阵的分解n来计算 step 上的内容n+1。您需要仔细检查此过程的稳定性。和splrep朋友在这里没有给你任何帮助,所以你需要自己写这个。(如果这样做,您可能会发现检查 的来源很有帮助interpolate.CubicSpline)。

但在开始之前,请考虑使用本地插值器。

如果您只想添加一个给定数据的,那么有scipy.interpolate.insert.

于 2016-05-31T19:11:26.217 回答