将B样条写成分段立方

时间:2014-04-23 05:27:42

标签: python numpy scipy regression spline

我正在使用Scipy的SmoothBivariateSpline类在双变量数据上创建一个三次B样条。我现在需要为此样条曲线编写分段多项式表达式。

我的数学背景不是很强,所以我无法编写自己的算法来将SmoothBivariateSpline的t,c,k输出转换为多项式表示。如果这是可行的,您能否提供有关如何处理此问题的指示?我注意到Scipy有interpolate.ppform,但我找不到任何文档 - 这是否相关?

我正在考虑的一种方法是将样条曲线的域划分为每个结的区域(总共(n-1)^2个区域,其中n是结的数量),然后执行立方回归每个区域中样条曲线上的许多点,以便计算每个区域的数据的三次回归。这是一种有效的方法吗?

前一种方法似乎更严格,所以我更喜欢使用那种方法,但后者也是可以接受的。

1 个答案:

答案 0 :(得分:4)

B样条可以有效地转换为分段多项式。

这可以在Scipy 0.14.0(将在几个月内发布)中轻松完成,其中scipy.interpolate.PPoly.from_spline

从样条t, c, k本身计算分段多项式的算法非常简单,因此在此期间您可以编写自己的函数来计算多项式系数: https://github.com/scipy/scipy/blob/master/scipy/interpolate/interpolate.py#L938