2012-06-11 31 views
9

它只是一個基本的問題。我正在擬合使用polyfit來分散點。 我有一些情況下,我的散點有相同的X值和polyfit不能適合它的一條線。必須有一些能夠處理這種情況的東西。畢竟,它只是一條線。使用polyfit的垂直線適合

我可以嘗試交換X和Y,然後冷卻一條線。任何更簡單的方法,因爲我有很多散點集合,並且需要一個通用方法來檢查行。

主要目標是找到合適的線條並放下非線性特徵。

+0

那麼爲了答覆,當x值太少時交換X和Y就可以。 – Naresh

回答

6

首先,這是由於您正在使用的擬合方法。在做polyfit時,您使用最小二乘法的距離爲Y

http://www.une.edu.au/WebStat/unit_materials/c4_descriptive_statistics/image23.gif

顯然,它不會垂直線工作。順便說一句,即使你有東西接近垂直線,你可能會得到數值不穩定的結果。

有2個解決方案:

  1. 交換x和y,如你所說,如果你知道行幾乎是垂直的。之後,計算逆線性函數。
  2. 使用來自線垂直距離最小二乘,代替垂直(參見下圖)(在here說明)

http://mathworld.wolfram.com/images/eps-gif/LeastSquaresOffsets_1000.gif

+0

嗯。把它放在matlab中的代碼中。將發佈一次,我有一些工作。 – Naresh

+0

非常好的解決方案:) – feelfree

+0

是否有任何進一步的解決方案已經可用,基於垂直距離線的Matlab polyfit? –

2

Polyfit使用線性普通最小二乘近似,不會允許重複的橫座標,因爲產生的Vandermonde矩陣將排名不足。我會建議試圖找到更具統計性質的東西。 如果你想研究Andreys方法通常由名進入總最小二乘或正交距離迴歸http://en.wikipedia.org/wiki/Total_least_squares

我會試探性也提出了檢測的可能性,當你有同步的x值,然後繞原點數據,擬合線條,然後轉換線條。我不能說這會有多糟糕,只有你可以根據你的準確性要求來決定它是否是一個選項。

+0

感謝您的評論。我知道。我需要一個解決方案。我需要那種「更具統計性質的東西」。任何建議? – Naresh