Tweet

移動平均法

先日,Twitterでノイズ除去の話が出たので,移動平均法について簡単にまとめてみる.

定義

欲しい信号の変化が比較的ゆっくりで,除去したい信号(雑音)の変化が激しい場合,過去のサンプリング列の N 個の平均を取り,雑音を除去するのが移動平均法と呼ばれる方法である.式で書くと

y(n) = ( x(n) + x(n-1) + x(n-2) + ... x(n-N+1) ) / N

となる.

設計パラメータ

移動平均法の場合は要するに

何サンプル分の平均値を取ればいいのか

つまり,上の式の N を決定することに他ならない.

周波数特性

実は移動平均法もレッキとしたディジタルフィルタの一種である.

移動平均法の周波数特性(ある周波数の信号を入力した場合にどれだけが出力に伝わるか)は,フーリエ変換の理論から数式の形で導くことができ,

y(f) = sinc(f) = sin(f)/f, ただし sinc(0) = 1

の形になることが知られている.

グラフに書くとこんな感じになる(x軸は正規化してある).

movave_lin.png

ここで注目するのが,振幅特性が最初に x 軸に交わるところ,つまり上のグラフでは x = 1 の点である. この点より低い周波数に所望信号が,高い点に雑音が分布していれば,うまく信号のみを取り出せそうだ.

実はこの点は移動平均の周期と同じ周期の信号の周波数になる. 図にするとこんな感じ.

nullpoint.png

サイン波のちょうど1周期分が移動平均の枠に収まり,上下が足し合わさってキャンセルされている.

というわけで,この周波数に注目して移動平均長 N を設定すればいいだろう.

遅延

入力サンプル列を目視で監視していたとして,突発的に値が上昇した場合,それが雑音によるものなのか信号によるものなのかは「しばらく様子を見」ないとわからない. しばらく様子を見ることにより,遅延が発生することになる

移動平均法でも同様に遅延が発生する. 遅延の発生量は移動平均長の半分であることが知られている.

数値例

サンプリング周波数
8000 Hz
移動平均サンプル数
800

とした場合,上のグラフの x = 1 に相当する周波数は 8000/800 = 10 Hz となる.

また,移動平均に伴う信号の遅延は 1/10 / 2 = 0.05 秒となる.


添付ファイル: filenullpoint.png 353件 [詳細] filemovave_lin.png 338件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-03-25 (木) 19:49:26 (3493d)