角度の平均・分散
角度は周期があるのでよくよく考えると平均や分散を出すのがむずかしい。いろいろやりかたがあるみたいだけど「単位ベクトル合算法」で計算してみる。
#!/usr/bin/env python
import numpy as np
deg = np.array([80, 170, 175, 200, 265, 345])
rad = deg * np.pi / 180
# ベクトル化 (計算が楽になるので複素数に)
cmp = np.cos(rad) + np.sin(rad)*1j
# 平均をとる
mean_complex = np.mean(cmp)
# このときの複素数の角度が平均角度
avg = np.angle(mean_complex)
# 絶対値(ベクトル長)小さいほどばらつきは大きい ( [0, 1] )
var = 1 - np.absolute(mean_complex)
print(avg * 180 / np.pi + 360) #=> 190.65
print(var) #=> 0.68 平均角度は分散も考えないと意味がないことがある。90°と270°の平均は↑の計算で180°になるが、ベクトル長さが0なので、平均として妥当な角度は存在してない。
ref
関連エントリー
- MeArm っぽいロボットアームの制御 MeArm のパクりっぽいやつ(設計はオープンだからパクりとはいわない気はする)を AliExpress で買ってみました。https://...
- SPI TFT 液晶 (ST7735など) で色がおかしいときに試すこと RGB BGR の設定は正しいか 0xdddddd がグレーで表示されるか? されない場合 GBRG / GRBG の可能性あり ドライバが...
- Stable Diffusion で prompt 情報を画像に保存しておく PNG にはメタデータを保存するチャンクがある。Python からも簡単に読み書き可能なので、ここに prompt を保存しておくと、あとか...
- NanoVNA の時間領域測定 (TDR/TDT) ローパスモードのDC外挿 DC外挿してないけどなんで? どのぐらい誤差がでる? DC外挿とは? VNA で負の周波数まで拡張して時間領域変換する場合、DC値も計算対象...
- Stable Diffusion 日記 #8 どのベクトルのせいかわからんけど蝶はなんかキモくなる。イラスト的デフォルメをせず蛾っぽく胴が太く描かれることが多い。 urban city ...