带有 Scipy 的 B 样条曲线:我可以在不完全重新计算的情况下添加一个数据点吗?



我用scipy.interpolate.splrep创建了一个bspline,点(x_0,y_0)到(x_n,y_n)。通常的故事。但我想添加一个数据点 (x_n+1,y_n+1) 和适当的节点,而无需重新计算整个样条。谁能想到一种优雅的方法?

我总是可以采用 sprep 返回的节点列表,并将用 (x_n-2, y_n-2) 创建的较小样条的最后一个节点添加到 (x_n+1,y_n+1),但这似乎效率较低。

简短回答:不。

条构造是一个全局过程,因此如果添加数据点,则确实需要重新计算整个样条曲线。这涉及求解 N×N 线性系统等。

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

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

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

.

相关内容

  • 没有找到相关文章

最新更新