A03 FIRフィルタ その1

室長:ではFIRフィルタの解説ということで話を進めるぞ。

助手:お願いします。

室長:詳しいことはWiki参照ということで。

助手:いいかげんにしてください。

室長:実はFIRフィルタは掛け算と足し算だけで出来ているのだ。たとえば係数(coefficient)が4つ(tap数4)のフィルタを考えるぞ。

助手:係数とかtap数とかなんですか?

室長:出力1つについて掛け算する個数がtap数で、その掛ける値が係数なのだ。それが足し算されて出力となる。実際の例を示した方がわかりやすいじゃろ。 例えば係数が 0.5 -0.5 0 0.002 の4つだとする。この係数こそがフィルタなのだ。 10 20 30 40 50 60 70 80 という8つのデータにこのフィルタで計算すると

10×0.5=5
20×0.5+10x(-0.5)=5
30×0.5+20x(-0.5)+10*0=5
40×0.5+30x(-0.5)+20×0+10×0.002=5.02
50×0.5+40x(-0.5)+30×0+20×0.002=5.04
60×0.5+50x(-0.5)+40×0+30×0.002=5.06
70×0.5+60x(-0.5)+50×0+40×0.002=5.08
80×0.5+70x(-0.5)+60×0+50×0.002=5.1
80x(-0.5)+70×0+60×0.002=-39.88
80×0+70×0.002=0.14
80×0.002=0.16

このように計算されるのじゃ。

助手:へー…. 単純な掛け算と足し算が沢山あるだけですね。でもこれだとものすごい計算量になりませんか? tap数8192のフィルタで96kのモノラル音声データを処理するだけで786432000回の積和計算が必要になりますね。3wayマルチアンプなら6ch必要だから6倍して4718592000回になりますよ。

室長:心配ないぞ。FFTを使ってフィルタ畳み込みを高速化する方法を使えば計算量を劇的に減らすことが出きるのじゃ。CPUがATOMのマシンでもっと長いフィルタを計算する事も可能じゃ。

助手:安心しました。でこの計算がどんな意味を持つんですか?

室長:理論的な意味は別サイトを見てもらうことにして、まずは音を聞いてみようではないか。

助手:理論や計算なしでいきなり音を聞くんですか?

室長:そのほうが面白いだろう。理論や計算を示しているサイトはほかにいくらでもあるからな。そういうわけで次回はパソコンにソフトをインストールして実際に音を出してみるぞ。

2012年12月07日