可能的重复:
如何计算一组循环数据的平均值? https://stackoverflow.com/questions/491738/how-do-you-calculate-the-average-of-a-set-of-angles
我有两个角度,a=20 度和 b=350 度。这两个角度的平均值是 185 度。然而,如果我们考虑最大角度为 360 度并允许环绕,则可以看出 5 度是更接近的平均值。
在计算平均值时,我很难想出一个好的公式来处理这种情况。有人有任何提示吗?
还是我在这里搬起石头砸自己的脚?这在数学中被认为是“不好的做法”吗?
如果你看一下角圈,你会发现有 2 个相对的“角度”对应于你的“平均值”。
所以185°和5°都是正确的。
但你提到了更接近平均数。所以在这种情况下,你可以选择更近的角度。
通常,角度的“平均值”涉及逆时针方向。如果你交换两个角度(或者如果你使用顺时针方向),“平均值”是不一样的。
例如,与a=20°
and b=350°
,您正在寻找后面的角度a
和之前b
逆时针方向, 185°
就是答案。如果你正在寻找之前的角度a
之后b
逆时针方向(或之后a
和之前b
逆时针方向),5°
就是答案。
的答案是这个帖子 https://stackoverflow.com/questions/491738/how-do-you-calculate-the-average-of-a-set-of-angles是正确的做法。
所以解决方案的伪代码是
if (a+180)mod 360 == b then
return (a+b)/2 mod 360 and ((a+b)/2 mod 360) + 180 (they are both the solution, so you may choose one depending if you prefer counterclockwise or clockwise direction)
else
return arctan( (sin(a)+sin(b)) / (cos(a)+cos(b) )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)