SensorManager で取得したセンサー データから加重平均を作成しようとしています。私の問題は、ベアリング、ピッチ、ロールに最大値があり、ちょうどこの時点にいるときに、値が 0 から 359 に、または逆に入れ替わることです。私の平均は、現時点では単にすべての値を加算し、値の数で 1 除算したものです。
値を取得するとしましょう: 1, 359, 350, 10 この場合、平均を 0 にしたいのですが、この機能を得るために方程式をどのように変更する必要がありますか?
0/360 までの「最も近い」距離を確認し、実際の値の代わりにこの値を使用する必要がありますか?
値が 180 前後の場合、これも問題になります。
160, 200 -> 平均は 180 でなければなりませんが、私の最近距離のアイデアでは、200 + 160 = 360 であるため、160 になります。
どうすればこれを解決できますか?
編集: これは、SensorManager から取得した値です。
- 0 <= 方位角 <360
- 180<=ピッチ<=180
- 90<=ロール<=90
Edit2: 申し訳ありませんが、加重平均を使用していることを忘れていました:
double sum = 0;
for int i = 0; i < max; i++
sum += value[i] * (i / (triangular_number(max))
return sum