非单调样条拟合

Non-monotonic spline fitting

我已经使用 2 个 2D 拟合完成了 3D 路径的样条插值。使用插值条件以及 2 次可微分的要求,我得到了插值 3D 路径所需的方程式。 但是我开始意识到,我忽略了一个事实,即由于障碍物路径不是单调的,因此无法计算拟合样条。

如果没有单调的数据集,我找不到任何关于样条拟合的东西。有没有办法接受这个事实? (我发现,这些点必须满足(Schoenberg-Whitney)条件,这对我来说基本上看起来像单调性,可以通过最小二乘法唯一拟合)。

对采用或不同算法有什么建议吗?到目前为止,我唯一能找到的是: heremite,这需要端点处的导数,这对我的目的来说并不理想。我会喜欢像 "regular" 样条曲线(具有连续性条件的三阶多项式)这样简单的东西。

我还找到了 this question,它只说明了一些关于厄米多项式的内容(我想避免)。

最后这用于控制算法,需要隐式定义曲线(非参数化)。例如 y - p(x) = 0。对我来说不可能的是: p(t)=y, x(t) 其中 t 是参数。如果可以消除参数,产生隐式表示,就可以了。

您可以通过简单地将点到点的累积距离作为独立(单调)参数来为任何系列的 3D 点生成单调性。将其视为连接所有点的分段线性路径的长度 p ...

编辑: ...喜欢(伪代码):

p[0] = 0;
p[i] = p[i-1] + sqrt((x[i]-x[i-1])^2 + (y[i]-y[i-1])^2 + (z[i]-z[i-1])^2)

获得此参数后,您可以分别对三个维度(x、y 和 z)进行三个样条曲线拟合。这样您的 3D 曲线拟合就可以处理任何可以想到的点系列。使用此路径 p 进行样条插值也会使它更多 "physical" 因为靠近在一起的点将被这样处理。

为简单起见 - 特别是如果您的数据点或多或少地间隔相等 - 您可以简单地使用每个点的序数(如 0、1、2、3 ...)作为独立的单调递增参数.

由于路径不是单调的,因此不存在描述它们的(单射)函数! 这很容易想到,如果考虑一条路径,你可以向前、向后和再次向前。如果没有参数表示(例如时间),路径就不会是唯一的。 换句话说:如果 y=sin(x),现在 y = 0 的路径在哪个位置?无限解当然是 x=k*pi,但这里很明显,这不是唯一的。