2013-04-02 66 views
1

作爲圖中的點,'X'可以映射兩個「Y」值,'Y'可以映射兩個「X」值。如何用下圖設置的點擬合曲線

當擬合這些點的曲線,它應該保證的一階導數和

二階導數可以計算出來。


fig http://www.baidupcs.com/thumbnail/fbdd467ca3dce4e05e55b209bf6cc6dd?fid=3154234395-250528-2669431106&time=1364974850&sign=FDTA-DCb740ccc5511e5e8fedcff06b081203-2skix2HZJ0DXlkEgRMUWxxsBeQQ%3D&expires=8h&size=c850_u580&quality=100

編輯:兩個弗洛里斯和煎餅給了一個正確的答案,謝謝你的兩個。

+0

您也可以在這裏看到圖:https://skydrive.live.com/redir?resid=6878FDE2E655535!150&authkey=!AIKOYRVv1Pm-Z7c – tenos

+0

您需要一個「樣條擬合」 - 如果您有樣條工具箱,那就是簡單。如果你不這樣做,你需要閱讀「C中的數字食譜」並自己做一些編碼。 – Floris

+0

我在matlab中使用過樣條工具箱。但是對於圖中設置的點來說,它不起作用。 matlab中的「樣條擬合」的條件是這些點的'X'值不能相同。 @Floris – tenos

回答

1

與其嵌合「Y」爲「x」的功能,則需要分別適合:

  • 「X」如在「t」
  • 的函數「Y」作爲的函數的't'

其中't'是樣條(或其他曲線擬合,例如多項式)的固有座標。

我在圖片中假設你知道點的順序 - 它不僅僅是未分類點的混亂?因此,首先,您可以計算每個連續點之間的距離,並使用累積距離作爲't'參數。然後將樣條曲線擬合爲作爲t的函數的'x'和'y'座標。

+0

謝謝你的回答! – tenos

1

在你的點簇中間選擇一個點 - 可能是重心。畫出一條從這個「原點」到第一個點的虛線。到點r=sqrt((x-x0)^2+(y-y0)^2);的距離和角度theta=atan2((y-y0),(x-x0));。針對所有點計算rtheta;如果theta包裝,添加2 * pi使其連續。現在,您可以擬合theta的函數r。最後,你可以對許多θ值進行插值並計算相應的x=r*cos(theta);y=r*sin(theta);

應該這樣做。

+0

明白了,謝謝! – tenos