【问题标题】:Weighted average of angles角度的加权平均值
【发布时间】:2010-12-13 19:21:17
【问题描述】:

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

this Question,有一个如何计算平均值的答案 如this page所示。

现在我想弄清楚如何计算加权平均值。 即每个角度都有一个权重(权重之和为1)

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

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

【问题讨论】:

    标签: python algorithm mean


    【解决方案1】:

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

    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
    

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

    【讨论】:

    • 你必须检查 (x,y) = (0,0),在这种情况下平均方向没有定义
    • +1:这实际上是向量和,其中向量长度是权重。恕我直言,这对于定义不明确的问题最有意义。否则,您是否希望 weight=.5, A=359.99 的角度约为 180?
    【解决方案2】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-19
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多