点の集合を考えると、どのように私は、その形状の長軸に近づけるのですか?

StackOverflow https://stackoverflow.com/questions/560068

質問

ユーザーが描いた「形」を考えると、私は彼らのすべてが同様の大きさと向きを持っているので、それを「正常化」したいと思います。私たちが持っていることは点の集合です。私は、バウンディングボックスや円を使用してサイズを概算することができますが、方向は少しトリッキーです。

それを行うための正しい方法は、私が思うに、href="http://en.wikipedia.org/wiki/Ellipse" rel="nofollow noreferrer"> majoraxis のそのの楕円をバウンディング。あなたは固有ベクトルの<のhref = "HTTPの計算する必要があることを行うには:// en.wikipedia.org/wiki/Covariance_matrix」のrel = "nofollowをnoreferrer">共分散行列を。私はいくつかの良い、十分な推定を探していますので、その可能性が行うことは、私の必要性のためにあまりにも複雑になります。 MIN、MAX、および20個のランダムな点を選ぶことは、いくつかのスターターである可能性があります。これを近似する簡単な方法はありますか?

編集: 私は繰り返し、近似固有ベクトルに電源方式を発見しました。 Wikipediaの記事に。 これまでのところ私は<のhref = "https://stackoverflow.com/questions/560068/given-a-set-of-points-how-do-i-approximate-the-major-axis-of-its-を好きています形状/ 560128#560128" >デビッドの答えでます。

役に立ちましたか?

解決

あなたはそれが複雑ではありませんので、いくつかの簡単な式で行うことができます2x2の行列の固有ベクトルを計算することと思います。擬似コードでます:

// sums are over all points
b = -(sum(x * x) - sum(y * y)) / (2 * sum(x * y))
evec1_x = b + sqrt(b ** 2 + 1)
evec1_y = 1
evec2_x = b - sqrt(b ** 2 + 1)
evec2_y = 1

あなたも、あなたがポイントの選択したサブセットがフルセットの代表であろうと予想される場合のみ、ポイントのいくつかは、推定値を得るために合計することによってこれを行うことができます。

編集:I、すなわち、すべてのx、yの最初の(eed3si9n)からの平均減算、xおよびyはゼロ平均に変換されなければならないと思います。

他のヒント

ここでは、ポイントで線形回帰を実施し、得られる直線の傾きを使用した場合どのように考えたのは...ですか?そうでない場合はすべてのポイント、それらの少なくともサンプルます。

R ^ 2値はまた、あなたの一般的な形状についての情報を与えるだろう。 0に近いほど、形状がより円形/均一(円/平方)。 1に近いほど、より伸ばした形状である(楕円/矩形)。

この問題の究極の解決策が実行されている PCA
私はあなたがを参照するために、私はちょっといいな実装を見つけることがしたい...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top