【发布时间】:2010-12-13 19:21:17
【问题描述】:
我想计算一组角度的加权平均值。
在this Question,有一个如何计算平均值的答案 如this page所示。
现在我想弄清楚如何计算加权平均值。 即每个角度都有一个权重(权重之和为1)
0.25, 0 度 0.5、20度 0.25、90度
加权平均值(如果我没记错的话)应该是 32 度。
【问题讨论】:
我想计算一组角度的加权平均值。
在this Question,有一个如何计算平均值的答案 如this page所示。
现在我想弄清楚如何计算加权平均值。 即每个角度都有一个权重(权重之和为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
它似乎工作正常。我必须考虑好的测试数据。
【讨论】:
根据您的应用程序,问题有不同的答案。如上所述,您可能需要标准化您的值,并且您可能需要有符号角度,或者您可能不希望这样做。除非您知道角度生成函数是什么,否则可能没有唯一的答案。
这对我来说是一个足够的问题(在几何中工作)我编写了自己的 Angle 类。
【讨论】: