コラム35 EXCELでIIRフィルタを実行する

 ここで使用したEXCELのf-responseシートを開きます。下図のようにD列にBiquadの係数があります。上からa0, a1, a2, b1, b2になります。これら係数に対する周波数特性をこのシートで計算します。

      f-responseシート

 このシートの右の方に振幅特性があります(下図、求め方はここLPF(Low Pass Filter, 低域通過フィルタ)であることが分かります。カットオフ周波数は1kHzになります。

             LPFの特性。カットオフは1kHz

 振幅特性の下に位相特性があります(下図、求め方はここ)。LPFの場合はこのように徐々に位相が遅れていくのが分かります。

             位相は0〜πへと
遅れていく

●サイン波の入出力を計算するシート

 隣のシート
io-sinwaveを見てみましょう。A列(index)に0〜2047、B列(Time)はそれをサンプリング周波数(44100、READMEのB4セル)で割ったものです。C列(x[n])は下図の式で示すようなサイン波になります(*1)

(*1)この例では1kHz(READMEのB5セルが1000)のサイン波になる。すなわち44100/1000サンプルで一回転(2π)する。

 D列は係数ですが、これらはf-responseシートのD列から転写されます。したがってもし係数を変える際はこのシートではなくf-responseシートの方を変更してください。

      隣のシートを見てみる

●フィルタ演算は遅延→乗算→累積

 
E列以降はこのブロック図のような演算を行います。E列は入力x[n]に係数a0を
乗算します(下図)。そしてF列x[n-1]は、x[n]を1サンプル遅延したものです。

       C列にD2セルを乗算したものがE列

●a0, a1, a2を各列に掛ける

 F列にa1を掛けたものがG列になります(下図)。F列をさらに1サンプル遅延させたものがH列、それにa2を掛けたものがI列になります。

      このブロック図を実践している

●b1, b2は反転して乗算

 J列以降はこのブロック図のフィードバック側の計算です。N列がBiquadの出力y[n]、それを1サンプル遅延したものがJ列y[n-1]、それを2サンプル遅延したものがL列y[n-2]になります(*2)。
 それらに係数をかけたものがK、M列ですが、下図のように符号を反転させていることに注意しましょう(*3)。

(*2)遅延器の初期値はすべて0になっています。
(*3)フィードバック側係数の符号に関してはここ参照。

       このブロック図と合っているか確認

次のページへ

目次へ戻る