4-3. ディジタルフィルタ入門

ここでは、基本的なディジタルフィルタの例として、1次のローパスフィルタと ハイパスフィルタ、および2次のバンドパスフィルタとバンドエリミネーション フィルタを実現するDSPプログラムを作成し、周波数特性を調べてみましょう。


【実習 4-3-1】<1次ローパス(低域通過)フィルタ>

まず、最も簡単な1次のローパスフィルタの特性を調べてみましょう。 このフィルタは、図に示すように現在時刻x(n)の値と一つ前の値x(n-1)を 単純に足し合わせて出力するもので、実習 4-1-1で行った2点平均と全く 同じ処理をしています。

  1. エディタでサンプルプログラム[lpf1] を開いて、コンパイル、実行してください。これは、実習 4-1-1で使って もらったプログラムです。
  2. 1次ローパスフィルタの周波数特性を調べてみましょう。
    SGから正弦波を入力して、周波数を変化させて出力信号の大きさの変化を 調べてください。横軸を周波数、縦軸を入出力電圧比として、周波数特性を グラフ用紙にプロットしてください。周波数範囲は10 Hzから24 kHz(サンプリング 周波数48 kHzの1/2)程度に してください。 縦軸は出力電圧(V2)/入力電圧(V1)を デシベル表示(20log10 V2/V1)で 表してください。 カットオフ周波数(最大値の−3dBとなる周波数)は何Hzになるでしょうか。


【実習 4-3-2】<1次ハイパス(高域通過)フィルタ>

1次ローパスフィルタと同じ構成で、一つ前の値x(n-1)の係数を−1にすると、 1次ハイパスフィルタとなります。このフィルタでは、実習 4-1-2で行った差分と 全く同じ処理をしています。

  1. 実習 4-1-2で行ったようにサンプルプログラムを修正して、1次ハイパスフィルタの プログラムを作成し、コンパイル、実行してください。
  2. SGから正弦波を入力して、実習 4-3-1と同様に入出力間の周波数特性を 調べてみましょう。カットオフ周波数はいくつになるでしょうか。


【実習 4-3-3】<2次バンドパス(帯域通過)フィルタ>

1次ローパスフィルタと1次ハイパスフィルタを図のように組み合わせる (縦続接続する)と、2次バンドパスフィルタが実現できます。

ここでは、最初にローパスフィルタにより取り出される低周波成分と、 次にハイパスフィルタにより取り出される高周波成分が、いくらか オーバーラップしていることを利用し、そのオーバーラップの周波数成分のみを 取り出せるようにしています。

ここで各々の信号の流れをよく見ると、上の構成は次のように簡略化する ことができます。

  1. 上の実習で使ったプログラムを元にして、2次バンドパスフィルタの DSPプログラムを作成してみましょう。今度は、2つ前までの 入力値を貯めておく必要があります。
  2. SGから正弦波を入力して、上と同様に入出力間の周波数特性を 調べてみましょう。この場合、カットオフ周波数はどうなるでしょうか。


【実習 4-3-4】<2次バンドエリミネーション(ノッチ)フィルタ>

更にフィルタの処理を増やしてみましょう。図のような2次のフィルタを 構成して、一つ前の入力データx(n-1)の係数を -2cos(2πf0Ts)に選ぶと、 f0の 周波数付近だけを通さない(消去する)ことのできるフィルタが実現できます。 これを2次のバンドエリミネーションフィルタ(ノッチフィルタ)と呼びます。 ただしTsはサンプリング周期(=1/サンプリング周波数)です。

  1. 上のプログラムを修正して、2次のバンドエリミネーションフィルタを 作成してください。消去したい周波数f0は適当に選んでください (ただしナイキスト周波数以下)。(サンプルプログラムは [こちら] にありますが、最初は見せない方がいいでしょう。)
  2. 上と同様に、フィルタの周波数特性を調べてみましょう。