移動平均法 †先日,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軸は正規化してある). ここで注目するのが,振幅特性が最初に x 軸に交わるところ,つまり上のグラフでは x = 1 の点である. この点より低い周波数に所望信号が,高い点に雑音が分布していれば,うまく信号のみを取り出せそうだ. 実はこの点は移動平均の周期と同じ周期の信号の周波数になる. 図にするとこんな感じ. サイン波のちょうど1周期分が移動平均の枠に収まり,上下が足し合わさってキャンセルされている. というわけで,この周波数に注目して移動平均長 N を設定すればいいだろう. 遅延 †入力サンプル列を目視で監視していたとして,突発的に値が上昇した場合,それが雑音によるものなのか信号によるものなのかは「しばらく様子を見」ないとわからない. しばらく様子を見ることにより,遅延が発生することになる 移動平均法でも同様に遅延が発生する. 遅延の発生量は移動平均長の半分であることが知られている. 数値例 †
とした場合,上のグラフの x = 1 に相当する周波数は 8000/800 = 10 Hz となる. また,移動平均に伴う信号の遅延は 1/10 / 2 = 0.05 秒となる. |