如何解释scipy.interpolate.splrep的结果呢?

问题描述 投票:1回答:1

我需要适合于在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评估结果 - 我不需要这个。我需要花键的唯一参数。

python scipy spline
1个回答
1
投票

这是一个有点棘手解释。

笔记

splev的样条及其衍生物的评价。维度数目N必须小于11. c阵列中系数的数目是k+1小于节的数目,len(t)。这与splrep,其零焊盘系数的阵列,以具有相同的长度作为结的阵列对比度。这些额外的系数由评估程序,splevBSpline忽略。

由于这些周围设置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样条的规定的顺序控制点。

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