2009-02-25 308 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距離時,我會使用空間填充曲線順序來指示樣條的哪一部分可能最接近給定點。