Matlab 曲线拟合平面上未排序的点

Matlab 曲线拟合平面上未排序的点,matlab,image-processing,curve-fitting,spline,best-fit-curve,Matlab,Image Processing,Curve Fitting,Spline,Best Fit Curve,问题:如果平面上的点不是单值的,如何将曲线拟合到这些点 对于所示的示例,如何将曲线(如黑色曲线)拟合到嘈杂的蓝色数据?它类似于样条曲线平滑,但我不知道数据的顺序 最好使用Matlab,但伪代码也可以。或者一个指向这个问题的正确术语的指针就好了 谢谢您必须进行多个分段拟合或样条曲线拟合。不要期望任何算法能够一次性完成所有任务。可能至少有三条曲线:第一条曲线到达交叉点、环路,然后从交叉点向前返回。编辑:nvm误解了这个问题。无论如何,我会把这个答案留在这里 也许可以先找到点的位置,然后在平面上拟合

问题:如果平面上的点不是单值的,如何将曲线拟合到这些点

对于所示的示例,如何将曲线(如黑色曲线)拟合到嘈杂的蓝色数据?它类似于样条曲线平滑,但我不知道数据的顺序

最好使用Matlab,但伪代码也可以。或者一个指向这个问题的正确术语的指针就好了


谢谢

您必须进行多个分段拟合或样条曲线拟合。不要期望任何算法能够一次性完成所有任务。可能至少有三条曲线:第一条曲线到达交叉点、环路,然后从交叉点向前返回。

编辑:nvm误解了这个问题。无论如何,我会把这个答案留在这里

也许可以先找到点的位置,然后在平面上拟合凸包


您的数据看起来像一个二维的
(x,y)
,作为一些基本参数
t
的函数。因此,如果您能为它们提供一个合理的模型,则可以对
x(t)
y(t)
进行拟合。您的数据似乎描述了一个问题。

如果您没有订单,这个问题真的很难解决。在一些(x(t),y(t))上做最小二乘很容易——假设你知道t的顺序


您可能需要某种搜索算法。遗传算法也可以。

您可以尝试推断点的顺序,然后应用样条线程序。当然,曲线与自身相交的地方存在着模糊性

也许最简单的方法是计算Delaunay三角剖分(nlogn时间),从中可以近似计算通过点的欧几里德最小距离哈密顿循环。你仍然需要弄清楚“终点”在哪里。从排序中,您可以应用样条线技术。有关参考资料,请参阅Reinelt关于TSP启发式的论文,1992年,或维基百科的EMST


hth,

对于使用B样条曲线的分段近似,可以使用软件包。它可以在自动和半手动模式下工作。

我不是这方面的专家,但我发现,在谈论曲线重建时,这似乎符合你的问题。仍然在阅读论文,很难理解它们,因此我还不能提供解决方案。

虽然显示的数据确实有一条基本曲线(玫瑰函数),但这只是因为绘制曲线很容易。我需要将曲线拟合到任意数据。为了进行任何有用的曲线拟合,您必须了解一些关于底层数据的信息。从上面的例子来看,没有特别的理由(对于一个简单的算法)选择在十字路口笔直行驶,而不是做两个急转弯。你可以将任何曲线拟合到任何一组点上,这只是一个“适合度”的问题。你需要一个启发式方法来选择你要使用的曲线,然后任何标准的误差最小化程序都会将曲线拟合到这些点上。我认为如果你包括一个正则化项(比如最小化曲率),它会在交点处解决模糊性。你希望得到什么结果?这是一个单一的方程式吗?还是样条曲线?或者别的什么?最好是一个方程(或者更确切地说:两个x=f(t)y=f(t)),尽管分段方程也可以。