移動平均とFIRデジタル・フィルタ

 
ここんところ土・日も学校行ってたし,明日は久しぶりに休もう……
と決心したら,ついつい夜遅くまで起きてしまう.
 
まあ,厳密には・・友人の卒論の手伝いをしてたらこんな時間になったわけだが.
 
さてさて,そんなわけで,ちょっくら日記を書く時間があるから,書こうかと思う.
と言っても,そんなに面白いネタがあるわけでもないし,
かと言って,自分の研究について詳しく語るのは恥ずかしいので,
自分の研究とはほとんど関係ない話を1つ.
 
だいぶ前にも話をしたけど,移動平均とFIRデジタル・フィルタについての話.
 
移動平均法ってのは,よく知られている方法だろう.
一般には,移動平均を使う理由としては,波形を平滑化してトレンドを見るため,
あるいは,波形からトレンドを除去することを目的として,移動平均を取る場合もある.
(厳密には,2つ目のやつは減算処理してるわけだから移動平均とは違うんだろうが)
 
で,移動平均をなぜやるかって言われると,波形を平滑化して雰囲気を掴むためであり,
じゃあ,例えば,なんで5点で移動平均やるの?って言われると,
なんとなくであったり,そうしたら分かりやすかったら・・という漠然としがちな気がする.
 
実際に,移動平均=雰囲気を見るツールっていう話をよく聞くので,
そういう認識でいる人はけっこう多いんじゃないだろうか.
 
ただ,FIRフィルタをいろいろ勉強していると,
移動平均=トレンドを見るためのツールっていう認識ではなくなるはず.
 
まず,直感的に,
 
積分⇔加算(移動平均フィルタ;(x[k]+x[k+1])/2)⇔ローパス
微分⇔減算(移動差分フィルタ;(x[k]-x[k+1])/2)⇔ハイパス
 
ってのはすぐ分かるし,
 
一つ離れた隣り合う値の差分を取る→バンドパス・フィルタ(Band Pass Filter;BPF)
一つ離れた隣り合う値の和を取る→バンド・エリミネート・フィルタ(BEF;Band Eliminate Filter,ノッチ・フィルタ;Notch Filter)
 
ってのも何となく分かるだろう.
これは,別に何の不思議もなく,当たり前の話なわけで.
 
その1例を以下に示すと,
例えば,
 
・ サンプリング:250 [Hz]
・ 通過域のエッジ周波数:50, 100 [Hz]
・ 阻止域のエッジ周波数:30, 120 [Hz]
であるバタワース特性の3次のFIRフィルタを設計したとしよう.
こいつのゲイン特性は以下のようになる.
 
 

 
諸事情により,サンプリングレートを250 [Hz]にしているため切れているが,
まあ,次数が低いため非常にゆったりとしているものの,
上記の仕様でフィルタが設計されていることが分かる.
 
このフィルタの伝達関数を求め,ブロック線図を書くと以下のようになる.
 

これは,まさに移動平均(特に重み付きの移動平均(荷重移動平均))と等価である.
つまり,上述した特性を持つFIRフィルタは以下の差分方程式で表せる.
 
y[n] = -0.39・x[n] + 0.36・x[n-1] + 0.36・x[n-2] – 0.39・x[n-3]          – (1)
ちなみに,時系列データx[n]として,
SIN(2*PI()*5*B2)+SIN(2*PI()*20*B2)+SIN(2*PI()*50*B2)+SIN(2*PI()*80*B2)+SIN(2*PI()*100*B2)
+SIN(2*PI()*120*B2)+SIN(2*PI()*150*B2)+SIN(2*PI()*180*B2)+SIN(2*PI()*200*B2)+SIN(2*PI()*220*B2)+SIN(2*PI()*250*B2)
っていう混合信号を作ってやる.
そして,それに式(1)を適用した結果のパワースペクトルが以下になる.
 
 

 
このように,FIRデジタル・フィルタと移動平均は広義においては同じものである.
まあ,厳密に言えば,FIRフィルタ⊇移動平均な関係にあると言えるのだろうか.
 
移動平均が闇雲に使われて,けっきょく何を導出してるのかよく分からん…・・・
けど,トレンドは何となくつかめるし……まあ,良いや……ってなってないか..
 
というわけで,FIRフィルタを差分方程式で表したものが移動平均(重み付き移動平均,荷重移動平均)であり,
移動平均=トレンド分析ツールっていうよりは,もっと対象となるものの周波数特性を意識して,
どういう差分方程式を設計すればより良い結果が得られるのか・・と考えるべきじゃないのかな.
 
と,ちょっと思ったわけなのでした.
 

カテゴリー: 信号処理 パーマリンク