我想计算一组角度的加权平均值。
现在我试图弄清楚如何计算加权平均值。也就是说,对于每个角度都有一个权重(权重总和为 1)
0.25、0 度 0.5、20 度 0.25、90 度
加权平均值(如果我没记错的话)应该是 32 度。
好的,我的尝试是将值与权重相乘:
def circular_mean(weights, angles):
x = y = 0.
for angle, weight in zip(angles, weights):
x += math.cos(math.radians(angle)) * weight
y += math.sin(math.radians(angle)) * weight
mean = math.degrees(math.atan2(y, x))
return mean
它似乎工作正常。我必须考虑好的测试数据。
根据您的应用程序,问题有不同的答案。如上所述,您可能需要标准化您的值,并且您可能需要有符号角度,或者您可能不希望这样做。除非您知道角度生成函数是什么,否则可能没有唯一的答案。
这对我来说是一个足够的问题(在几何中工作)我编写了自己的角度类。