平均角度

Mir*_* J. 4 .net

我在这里看了一些解决方案,但没有提供我需要的东西,所以:

我需要平均一个角度数组(0到359.9,没有负数)(A1 + A2 + A3 + An)/ n

问题是当你得到一个数组{1,359,2,358}时,如果使用上面的公式,平均值是180,但实际上它应该是0.

有什么想法吗?

Mar*_*som 16

添加每个角度的单位矢量,并将结果矢量转换回角度.如果结果向量的长度为零,则输入相互抵消,结果不确定.

单位矢量的长度为1,其x和y长度由角度的余弦和正弦给出.因此,您可以按照以下伪代码对示例进行平均:

x = cos(radians(1)) + cos(radians(359)) + cos(radians(2)) + cos(radians(358));
y = sin(radians(1)) + sin(radians(359)) + sin(radians(2)) + sin(radians(358));
angle = degrees(atan2(y, x));
Run Code Online (Sandbox Code Playgroud)