2009-02-25 167 views
6

二维数据的曲线拟合问题众所周知(LOWESS等),但给定一组3D数据点时,如何拟合3D曲线(例如平滑/回归样条曲线)到这个数据?我试图找到一个曲线,拟合矢量X,Y,Z提供的数据,这些数据与已知的关系无关。基本上,我有一个3D点云,需要找到一个3D趋势线。曲线拟合3D数据集

更多:我道歉的歧义。我尝试了几种方法(我还没有尝试修改线性拟合),并且随机NN看起来效果最好。即,我随机从点云中挑选一个点,找到它的邻居(在任意球体内)的质心,重复。连接质心以形成光滑样条被证明是困难的,但获得的质心是可以通过的。为了说明问题,数据不是时间序列,我正在寻找一个最能描述点云Ie的光滑样条,如果我要在由任何2个变量形成的平面上投影这个3D样条,投影样条(到2D上)将是投影点云(在2D上)的平滑拟合。

IMG:我已经包含一张图片。红点表示从前述方法获得的质心。

3D Point Cloud and Local Centroids http://img510.imageshack.us/img510/2495/40670529.jpg

+3

图像丢失 – 2013-10-06 22:54:02

回答

1

这取决于你的意思是什么。如果你有一组点f(x,y) - > z,并且你想找到一个能够击中它们的函数,你可以只做一个样条。

如果你有一个已知的函数,并且你想调整参数来最小化RMS误差,只要考虑x,ya复合对象p(例如,就好像它是一个复数或2个矢量)并且使用一个模拟在f(p) - > z上的第二种情况。

如果您可以更具体地了解您要完成的任务,那么我可以更具体地提出建议。

- MarkusQ

所以给出的编辑问题的陈述,我建议如下:

  • 如果它是一个时间序列我(你使用术语“趋势线”的暗示)把它看作三个参数函数(x(t),y(t),z(t)),并对它们中的每一个进行2d拟合。
  • 或者(但仍然假设一个有序的序列),你可能想要找到一个线性拟合(通过云心),然后添加到某种(可能是极性)的函数基于垂直投影从线的点。
  • 如果它不是一个时间序列(隐含在短语“无已知关系”和“点云”中),你必须定义你想要适合他们的“曲线”。你想要一条线吗?表面/歧管?你希望它是一个或两个变量的函数,还是独立于它们(比如凸包)。它是否必须流畅,程度有限,还是......?

真的,这个问题仍然是过于开放结束。

0

我会尝试使用Spacefilling曲线启发式。例如,按照空间填充曲线访问的顺序对点进行排序。你的问题的一个解决方案将是通过顺序点的样条曲线。为了获得更短和更平滑的曲线(但是从点到曲线的RMS距离更大),可以强制样条线仅经过每第k个点。如果在选择每个第k个点后,您可以改进曲线,通过它们寻找更短的哈密顿路径(如旅行推销员问题,但是对于开放路径)。您还可以调整样条线以减小RMS距离。在计算RMS距离时,我会使用空间填充曲线顺序来指示样条的哪一部分可能最接近给定点。