6

我想计算一组角度的加权平均值。

这个问题中,有一个如何计算平均值的答案,如本页所示。

现在我试图弄清楚如何计算加权平均值。也就是说,对于每个角度都有一个权重(权重总和为 1)

0.25、0 度 0.5、20 度 0.25、90 度

加权平均值(如果我没记错的话)应该是 32 度。

4

2 回答 2

6

好的,我的尝试是将值与权重相乘:

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

似乎工作正常。我必须考虑好的测试数据。

于 2009-11-06T11:52:31.073 回答
1

根据您的应用程序,问题有不同的答案。如上所述,您可能需要标准化您的值,并且您可能需要有符号角度,或者您可能不希望这样做。除非您知道角度生成函数是什么,否则可能没有唯一的答案。

这对我来说是一个足够的问题(在几何中工作)我编写了自己的角度类。

于 2009-11-06T12:24:12.267 回答