具有给定结数的适合样条,但不包含结位置

问题描述 投票:0回答:2

给定一组2D点,我想用给定的内部结数使最佳样条曲线适合此数据。

我已经看到我们可以使用scipy的LSQUnivariateSpline指定结的数量和位置,但是它不允许我们only指定结的数量。

UnivariateSpline文档中,似乎暗示它们具有一种以给定数量的节数拟合样条曲线的方法,因为有关平滑因子s的文档说明(强调我):

用于选择节数的正平滑系数。 编号的结数将增加,直到满足平滑条件为止...

因此,尽管我可以以某种向后的方式进行处理并搜索平滑因子,直到产生具有所需节数的样条为止,但从计算效率的角度来看,这似乎是一种相当荒谬的方法。正在执行两个额外的搜索步骤,以相互抵消并获得直接在开始时就已经计算出的结果。

我进行了搜索,但是没有找到直接以给定数量的结数访问此样条插值的函数。我不确定是否错过了一些简单的东西,或者是否隐藏在某个位置的更深处和/或在API中不可用。

注意:不需要scipy解决方案,任何python库或手工制作的python代码都可以(我在这里使用scipy只是因为我在python中所有有关样条插值的搜索都落在了我身上。]

python scipy spline
2个回答
0
投票

Scipy没有具有固定结数的平滑样条。您可以提供结,也可以通过平滑条件旋钮让FITPACK选择它。


0
投票

不幸的是,看起来UnivariateSpline constructor将计算工作传递给了函数dfitpack.curf0,即dfitpack.curf0

因此,尽管文档指出可以通过调整结数来满足平滑要求,但是在python API中给定了许多结数的情况下,无法直接访问适合样条的函数。

鉴于此,如果希望避免使用环形交叉搜索方法,则可能需要寻找另一个库或自己编写算法。但是,在许多情况下,可以通过调整平滑参数来简单地对所需的节数进行二进制搜索。

© www.soinside.com 2019 - 2024. All rights reserved.