2011-03-04 6 views
5

可能性の重複を見つける方法:私は1から360に至るまで、ベアリングのセットを持っている場合は
How do you calculate the average of a set of angles?ベアリングのセットの平均に

を、どのように私は見つけることができます平均?通常、平均を見つけるために、それらをすべて追加し、項目の数で除算します。ここでの問題は、[1、359]、2つのベアリングの場合には、実際には360でなければならない180の結果になるということです。

答えて

7

ノルム= 1のベクトルとしてアングルを表し、合計を平均します。

x1 = {cos(a),sin(a)} 

x2 = {cos(b),sin(b)} 

(x1+x2)/2 = {(cos(a)+cos(b))/2,(sin(a)+sin(b))/2} 

平均する角度が

atan2((sin(a)+sin(b)) /(cos(a)+cos(b))) 

分母がゼロに近いときだけ可能オーバーフローを制御するための注意であることを意味します。

enter image description here

0

だから、あなたは何をしたい二つの軸受の真ん中です - あなたは{90、270}を持っている場合は何が起こりますか?希望の答えは0か180か?これは考慮すべきことです..また、3つのベアリングの真ん中は何ですか?あなたができる

一つのことがある:

  • はあなたのセットの最初の2個のベアリングを取る
  • はどちらの方向にも両者の違いをワークアウト(すなわち、[1、359]は2度を与えるだろう一方向、358)
  • 希望の角度を2つのうちの最も真ん中のものにしたい場合は、それをあなたの違いとして取って、反時計回りのペアのほとんど(つまり359)
  • これを新しいベアリングとして使用し、次のセット(3番目のセット)をもう1つのビーアとして使用しますリング、繰り返し、すべてが「中」になるまで繰り返します。

私の頭の上から外れると、これは公正ではないと思われますが、一方向に偏っている可能性があります(つまり、設定の後の値を優先します)。

1

あなたは「平均」を定義するために何をしようとしているのかはっきりしていません...円の方向については、平均の明確な明確な概念はありません。

1つの解釈は、2つのベアリングの間の距離がそれらの間の最小角度として定義される最小二乗の意味で、提供された値のセットに最も近い値であるxです。この平均を計算するコードは次のとおりです。

In[2]:= CircDist[a_, b_] := 180 - Mod[180 + a - b, 360] 

In[6]:= Average[bearings_] := 
x /. NMinimize[ 
    Sum[CircDist[x, bearings[[i]]]^2, {i, 1, Length[bearings]}], 
    x][[2]] 

In[10]:= Average[{1, 359}] 

Out[10]= -3.61294*10^-15 
+0

+1または、BTW、平均(ハーモニック、幾何学、算術など)のその他の定義。どのように使用するかによって異なります。 –