我正在尝试根据 SensorManager 获得的传感器数据构建加权平均值。我的问题是,方位角、俯仰角和侧倾角都有一个最大值,当我正好在这一点上时,这些值会从 0 到 359 或向后交换。我的平均值目前只是所有值的加法和除以值的数量。
假设我得到的值是:1, 359, 350, 10 在这种情况下,我希望平均值为 0。如何更改方程式才能获得此功能?
我是否必须检查到 0/360 的“最近”距离并使用该值而不是实际值?
如果我的值在 180 左右,这也会带来一些麻烦:
160, 200 -> 平均值必须是 180,但根据我最近距离的想法,应该是 160,因为 200 + 160 = 360。
我该如何解决这个问题?
编辑:这是我从 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