- 追加された行はこの色です。
- 削除された行はこの色です。
* 移動平均法 [#h5df2233]
先日,Twitterでノイズ除去の話が出たので,移動平均法について簡単にまとめてみる.
** 定義 [#c4c9f02b]
欲しい信号の変化が比較的ゆっくりで,除去したい信号(雑音)の変化が激しい場合,過去のサンプリング列の N 個の平均を取り,雑音を除去するのが''移動平均法''と呼ばれる方法である.式で書くと
y(n) = ( x(n) + x(n-1) + x(n-2) + ... x(n-N+1) ) / N
となる.
** 設計パラメータ [#z0c39b7b]
移動平均法の場合は要するに
何サンプル分の平均値を取ればいいのか
>何サンプル分の平均値を取ればいいのか
ということになる.
つまり,上の式の N を決定することに他ならない.
** 周波数特性 [#adec766c]
実は移動平均法もレッキとしたディジタルフィルタの一種である.
移動平均法の周波数特性(ある周波数の信号を入力した場合にどれだけが出力に伝わるか)は,フーリエ変換の理論から数式の形で導くことができ,
y(f) = sinc(f) = sin(f)/f, ただし sinc(0) = 1
であることが知られている.
の形になることが知られている.
グラフに書くとこんな感じになる.
グラフに書くとこんな感じになる(x軸は正規化してある).
#ref(movave_lin.png,center)
ここで注目するのが,振幅特性が最初に x 軸に交わるところ,つまり上のグラフでは x = 1 の点である.
この点より低い周波数に所望信号が,高い点に雑音が分布していれば,うまく信号のみを取り出せそうだ.
実はこの点は移動平均の周期と同じ周期の信号の周波数になる.
図にするとこんな感じ.
#ref(nullpoint.png,center,50%)
サイン波のちょうど1周期分が移動平均の枠に収まり,上下が足し合わさってキャンセルされている.
というわけで,この周波数に注目して移動平均長 N を設定すればいいだろう.
** 遅延 [#s1d7dbf4]
入力サンプル列を目視で監視していたとして,突発的に値が上昇した場合,それが雑音によるものなのか信号によるものなのかは「しばらく様子を見」ないとわからない.
しばらく様子を見ることにより,遅延が発生することになる
移動平均法でも同様に遅延が発生する.
遅延の発生量は移動平均長の半分であることが知られている.
** 数値例 [#u21382c8]
:サンプリング周波数|8000 Hz
:移動平均サンプル数|800
とした場合,上のグラフの x = 1 に相当する周波数は 8000/800 = 10 Hz となる.
また,移動平均に伴う信号の遅延は 1/10 / 2 = 0.05 秒となる.