我需要适合于在x-y平面所限定的1D线由第三次多项式样条。多项式的衍生物必须在关节处相等。预期输出是3阶多项式,可以通过起点(花键结)和它们的多项式系数定义的列表。
我想通SciPy的的splrep功能将是非常理想的。但是我无法理解函数的结果。例如,下面的代码产生这些结果:
x = np.linspace(0, 10, 100)
y = np.sin(x)
sp1 = scipy.interpolate.splrep(x, y, k = 3, t = [2, 6])
结果(“结”,并从SP1“系数”阵列):
knots: [ 0., 0., 0., 0., 2., 6., 10., 10., 10., 10.]
coefficients: [-0.32946251, 1.55647594, 0.19883333, -2.08984459, 2.79531098,
-1.14372454, 0. , 0. , 0. , 0. ]
从文档和我的数学理解我想到的是,底层代码配合上分3样条曲线:一个从0到2,一个2-6,一个来自6〜10这些是什么花键则方程?为什么我只有6个系数?我不应该有12个(3 * 4)?
注:我知道,有功能,如splev评估结果 - 我不需要这个。我需要花键的唯一参数。
这是一个有点棘手解释。
笔记
见
splev
的样条及其衍生物的评价。维度数目N必须小于11.c
阵列中系数的数目是k+1
小于节的数目,len(t)
。这与splrep
,其零焊盘系数的阵列,以具有相同的长度作为结的阵列对比度。这些额外的系数由评估程序,splev
和BSpline
忽略。
由于这些周围设置FITPACK的子程序splev样条插补功能包的,你必须明白系数意味着有。在子程序的文档:
c t : array,length n, which contains the position of the knots.
c n : integer, giving the total number of knots of s(x).
c c : array,length n, which contains the b-spline coefficients.
反观全圆scipy
。它阐明了B样条formula同时,也表明它是如何使用的系数,以及他们预期的长度。
为了确保你给正确的输入,它始终是重要的这关联到BSplines的数学定义,以确定如何可以节,你需要的B样条的规定的顺序控制点。