6

一連の角度の加重平均を計算したい。

この質問には、このページに示されているように平均を計算する方法の答えがあります。

現在、加重平均を計算する方法を理解しようとしています。つまり、角度ごとに重みがあります (重みの合計は 1 になります)。

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

加重平均は (間違いがなければ) 32 度である必要があります。

4

2 に答える 2

6

OK, my attemp was to just multiply the values with the weights:

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

It SEEMS to work correct. I have to think of good test data.

于 2009-11-06T11:52:31.073 に答える
1

アプリケーションに応じて、質問の答えは異なります。上で述べたように、値を正規化する必要があり、署名された角度が必要な場合や、そうしたくない場合があります。角度生成関数が何であるかを知らない限り、一意の答えはないかもしれません。

これは私にとっては十分な問題でした (幾何学の仕事をしています) 私は独自の Angle クラスを書きました。

于 2009-11-06T12:24:12.267 に答える