2012-06-11 12 views
9

ちょっと基本的な質問です。私はpolyfitを使用して散布するポイントにフィッティングします。 私のスキャッタポイントのX値が同じで、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

hmm。それをmatlabのコードに入れます。私は一度作品を持って投稿します。 – Naresh

+0

非常に良い解決策:) – feelfree

+0

これ以上の解決策はありますか?Matlab polyfitは、直線からの垂直距離に基づいていますか?コメントをいただきありがとうございます。 –

2

関数polyfitは線形通常最小二乗近似を使用しないであろう得られたバンデルモンド行列が階数が不足するため、横軸を反復できるようにする。もっと統計的な性質のものを見つけることをお勧めします。 あなたはAndreys方法を研究したい場合、それは通常の名前で行く、私は暫定的にも、その後の起源についてのあなたのデータを回転させ、あなたは同時xの値を持つときを検出する可能性を前方に置く最小二乗または直交距離の回帰http://en.wikipedia.org/wiki/Total_least_squares

を合計しますラインをフィッティングし、ラインを元に戻します。私は、これがいかに悪いとあなたの精度要件に基づいてオプションだったかどうかを決定することができたかどうかを言うことができませんでした。

+0

そんなこと知ってる。私は解決策が必要です。私はそれが「より統計的性質のもの」を必要としています。なにか提案を? – Naresh

関連する問題