Tweet


* 移動平均法 [#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 秒となる.

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS