4-3. ディジタルフィルタ入門
ここでは、基本的なディジタルフィルタの例として、1次のローパスフィルタと
ハイパスフィルタ、および2次のバンドパスフィルタとバンドエリミネーション
フィルタを実現するDSPプログラムを作成し、周波数特性を調べてみましょう。
【実習 4-3-1】<1次ローパス(低域通過)フィルタ>
まず、最も簡単な1次のローパスフィルタの特性を調べてみましょう。
このフィルタは、図に示すように現在時刻x(n)の値と一つ前の値x(n-1)を
単純に足し合わせて出力するもので、実習 4-1-1で行った2点平均と全く
同じ処理をしています。

-
エディタでサンプルプログラム[lpf1]
を開いて、コンパイル、実行してください。これは、実習 4-1-1で使って
もらったプログラムです。
-
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で行った差分と
全く同じ処理をしています。

-
実習 4-1-2で行ったようにサンプルプログラムを修正して、1次ハイパスフィルタの
プログラムを作成し、コンパイル、実行してください。
-
SGから正弦波を入力して、実習 4-3-1と同様に入出力間の周波数特性を
調べてみましょう。カットオフ周波数はいくつになるでしょうか。
【実習 4-3-3】<2次バンドパス(帯域通過)フィルタ>
1次ローパスフィルタと1次ハイパスフィルタを図のように組み合わせる
(縦続接続する)と、2次バンドパスフィルタが実現できます。

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

-
上の実習で使ったプログラムを元にして、2次バンドパスフィルタの
DSPプログラムを作成してみましょう。今度は、2つ前までの
入力値を貯めておく必要があります。
-
SGから正弦波を入力して、上と同様に入出力間の周波数特性を
調べてみましょう。この場合、カットオフ周波数はどうなるでしょうか。
【実習 4-3-4】<2次バンドエリミネーション(ノッチ)フィルタ>
更にフィルタの処理を増やしてみましょう。図のような2次のフィルタを
構成して、一つ前の入力データx(n-1)の係数を
-2cos(2πf0Ts)に選ぶと、
f0の
周波数付近だけを通さない(消去する)ことのできるフィルタが実現できます。
これを2次のバンドエリミネーションフィルタ(ノッチフィルタ)と呼びます。
ただしTsはサンプリング周期(=1/サンプリング周波数)です。

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