scipy.interpolate.

make_splprep#

scipy.interpolate.make_splprep(x, *, w=None, u=None, ub=None, ue=None, k=3, s=0, t=None, nest=None)[源代码]#

找到参数化 N 维曲线的平滑 B 样条表示。

给定 N 个 1 维数组的列表 x,这些数组表示由 u 参数化的 N 维空间中的曲线,找到一个平滑的逼近样条曲线 g(u)

参数:
xarray_like,形状 (m, ndim)

表示 ndim 维曲线的采样数据点。 典型的用法是 1 维数组的列表,每个数组的长度为 m

warray_like,形状 (m,),可选

严格为正的 1 维权重数组。 这些权重用于计算加权最小二乘样条拟合。 如果 x 值中的误差的标准差由向量 d 给出,则 w 应为 1/d。 默认为 np.ones(m)

uarray_like,可选

参数形式的曲线的参数值数组。 如果未给出,则这些值将根据以下公式自动计算

v[0] = 0
v[i] = v[i-1] + distance(x[i], x[i-1])
u[i] = v[i] / v[-1]
ub, uefloat, 可选

参数间隔的端点。默认为 u[0]u[-1]

kint, 可选

样条的次数。建议使用三次样条,k=3。应避免使用偶数 k 值,尤其是在 s 值较小的情况下。默认为 k=3

sfloat, 可选

平滑条件。平滑量是通过满足以下条件确定的

sum((w * (g(u) - x))**2) <= s,

其中 g(u)x 的平滑近似。 用户可以使用 s 来控制拟合的紧密性和平滑性之间的权衡。 较大的 s 表示更多的平滑,而较小的 s 值表示较少的平滑。 s 的推荐值取决于权重 w。 如果权重表示 x 的标准差的倒数,则应在 (m - sqrt(2*m), m + sqrt(2*m)) 范围内找到一个合适的 s 值,其中 mxw 中的数据点数。

tarray_like, 可选

样条节点。如果为 None(默认值),则将自动构造节点。必须至少有 2*k + 2 个节点,最多有 m + k + 1 个节点。

nestint, 可选

节点向量的目标长度。 应该在 2*(k + 1)(次数为 k 的样条的最小节点数)和 m + k + 1(插值样条的节点数)之间。 此例程返回的实际节点数可能略大于 nest。 默认为 None(无限制,最多添加 m + k + 1 个节点)。

返回:
splBSpline 实例

对于 s=0spl(u) == x。对于非零值的 sspl 表示 x 的平滑近似,通常节点更少。

undarray

参数的值

另请参见

generate_knots

在幕后用于生成节点

make_splrep

此例程 1D 函数的类似物

make_interp_spline

构造插值样条 (s = 0)

make_lsq_spline

构造给定节点向量的最小二乘样条

splprep

此例程的 FITPACK 类似物

说明

给定 \(D\) 维中的一组 \(m\) 个数据点,\(\vec{x}_j\),其中 \(j=1, ..., m\)\(\vec{x}_j = (x_{j; 1}, ..., x_{j; D})\),此例程构造参数化样条曲线 \(g_a(u)\),其中 \(a=1, ..., D\),以最小化 k 次导数在内部节点 (\(u_b < t_i < u_e\)) 处的跳跃之和,\(D_{i; a}\),其中

\[D_{i; a} = g_a^{(k)}(t_i + 0) - g_a^{(k)}(t_i - 0)\]

具体来说,该例程构造样条函数 \(g(u)\),该函数最小化

\[\sum_i \sum_{a=1}^D | D_{i; a} |^2 \to \mathrm{min}\]

前提是

\[\sum_{j=1}^m \sum_{a=1}^D (w_j \times (g_a(u_j) - x_{j; a}))^2 \leqslant s\]

其中 \(u_j\) 是与数据点 \((x_{j; 1}, ..., x_{j; D})\) 对应的参数值,\(s > 0\) 是输入参数。

换句话说,我们平衡了最大化平滑度(以导数的跳跃来衡量,第一个标准)以及 \(g(u_j)\) 与数据 \(x_j\) 的偏差(第二个标准)。

请注意,第二个标准中的求和是对所有数据点进行的,而第一个标准中的求和是对内部样条节点(即那些 ub < t[i] < ue)进行的。样条节点通常是数据的子集,有关详细信息,请参见 generate_knots

在版本 1.15.0 中添加。

参考文献

[1]

P. Dierckx,“使用周期性和参数样条平滑数据的算法,计算机图形和图像处理”,20 (1982) 171-184。

[2]

P. Dierckx,“使用样条的曲线和曲面拟合”,数值分析专著,牛津大学出版社,1993 年。