Curve fitting 非单调样条拟合

Curve fitting 非单调样条拟合,curve-fitting,data-fitting,Curve Fitting,Data Fitting,我已经使用2个2D拟合对3D路径进行了样条插值。使用插值条件以及2次可微的要求,我得到了插值3D路径所需的方程。 然而,我意识到,我忽略了一个事实,即由于障碍物,路径不是单调的,因此拟合的样条曲线无法计算 如果没有单调的数据集,我找不到关于样条拟合的任何东西。有没有办法接受这个事实? (我发现,这些点必须满足(勋伯格-惠特尼)条件,这在我看来基本上是单调的,通过最小二乘法唯一地拟合) 对采用或不同算法有什么建议吗?到目前为止,我唯一能找到的是: ,这需要端点处的导数,这对于我来说并不理想。我喜欢

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

如果没有单调的数据集,我找不到关于样条拟合的任何东西。有没有办法接受这个事实? (我发现,这些点必须满足(勋伯格-惠特尼)条件,这在我看来基本上是单调的,通过最小二乘法唯一地拟合)

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

我还发现,它只说明了一些关于厄米多项式的东西(我喜欢避免)


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

只需将点到点的累积距离作为独立(单调)参数,就可以为任何一系列3D点生成单调性。把它想象成一条连接所有点的分段线性路径的长度

编辑:。。。类似于(伪代码):

拥有此参数后,可以分别对三维(x、y和z)进行三次样条曲线拟合。这样,3D曲线拟合可以处理任何可能的点序列。将此路径
p
用于样条曲线插值也将使其更“物理”,因为靠近的点将被视为物理点


为简单起见-尤其是如果数据点的间距大致相等-可以简单地使用每个点的序号(如0、1、2、3…)作为独立的单调递增参数

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

谢谢,抱歉。我忘了提到,我需要一个没有参数的隐式表示。那么,你需要把x作为独立参数吗?据我所知,你的问题的隐式解不可能存在于x值的非单调序列中。您希望能够查找任意给定x的y和z值。在一系列非单调的点中,查找“函数”p(x)将得到不止一个结果。一个真正的函数对于一个给定的独立参数总是只返回一个定义的值。哇,我还没想到呢。然而,可能存在f(x,y)=0的形式,它不容易映射回p(x)=y(z的情况类似)。或者我假设了一些不可能的东西,因为这些东西之间应该总是有一些非线性映射,如果其中任何一个存在的话?如果没有,请将此作为解决方案发布,我将接受。然后我必须重新考虑路径参数的数值消去……我刚刚澄清了我关于路径参数的帖子。关于基于x的查找函数的意图:我相信您将不得不接受path参数作为“尽可能物理化”的基本参数。
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)