4-4. ディジタルフィルタの応用

ここでは、前章の基本的なディジタルフィルタの応用として、 少し高度なディジタルフィルタを設計、作成してみましょう。


4-4-1. FIRフィルタの設計

前節の1次および2次の基本的ディジタルフィルタでは、カットオフ周波数や、 通過帯域幅は固定であり、変化させることはできませんでした。さらに、低域 通過特性や高域通過特性はかなりなだらかなもので、カットオフ周波数付近に おける理想的な急峻な減衰を得られませんでした。

カットオフ周波数を変化させたり、その付近でより急峻な減衰特性を 得るためには、より高次のディジタルフィルタを用いなければなりません。 ここでは、フーリエ級数近似法を用いた、最も簡単なFIRフィルタの 設計法を紹介します。

フーリエ級数近似法

まず、実現したいディジタルフィルタの周波数特性を与えます。例えば、 カットオフ周波数がfcで与えられる、理想ローパスフィルタを 考えてみます。これを逆フーリエ級数展開すると、時間軸(n)で表される 時系列信号が得られます。 逆フーリエ級数展開は、4-2節で述べたフーリエ級数展開における周波数と 時間の関係を逆にしたもので、周波数軸上で与えられる任意関数を、 無限個の「周波数軸上の正弦波」の和で表すものです。その結果、各正弦波の 振幅は時間軸でマイナス無限大からプラス無限大まで続く離散的な係数列として 得られます。この時系列信号そのものが、与えられた周波数 特性を実現するFIRフィルタの係数(a0aN)となります。

このような係数を持つFIRフィルタを実際に有限の次数で構成する場合には、 a(n)の大きいところだけを残して、途中で係数を打ち切る必要が あります。 すると、その影響で、対応するフィルタの周波数特性には、通過域および阻止域 両方にリップル(さざ波のような形)が生じてしまいます。

このようなリップルを抑えるために、例えば窓関数が用いられます。 真ん中で大きく、端では次第に小さくなる窓関数をa(n)に 乗算すると、フィルタの周波数特性におけるリップルをある程度抑えて 変化を滑らかにすることができます。

【実習 4-4-1】<FIRフィルタの設計>

  1. フーリエ級数近似法を用いて、FIRフィルタを設計してみましょう。 ここでは、CQ出版社のホームページ(http://www.cqpub.co.jp)で公開されて いるフリーソフト「ディジタル・フィルタ設計プログラム」を利用します。 プログラムの使用方法を参照して、 フィルタの係数a0aNを求めてください。 このとき、フィルタタイプや、カットオフ周波数などは、適当に決めてください。
  2. 図を参考にして、設計したFIRフィルタを実現するDSPプログラムを作成 して実行してみましょう。

  3. SGから正弦波を入力して、フィルタの周波数特性を調べてみましょう。
  4. マイクによる音声や、CDからの音楽を入力して、聴こえ方の違いを 調べてみましょう。
  5. フィルタタイプや、カットオフ周波数をいろいろと変えてみて、DSP プログラムを作成、実行してみてください。


4-4-2. ディジタルフィルタの応用例

【実習 4-4-2】<ディレイ(遅延)>

今までにも何度か出てきた信号を遅らせるディレイ機能は、入力信号に 任意個数の遅延をかけることで実現されています。この場合、遅らせたい サンプル数分の過去の値を保存しておく必要があります。

  1. 図を元にして、入力信号を指定したサンプル個数の分だけ遅らせて 出力するDSPプログラムを作成してください。
  2. マイクで声を入力して、信号の遅延を確かめてみましょう。


【実習 4-4-3】<櫛形(コム)フィルタ>

図のように、現在の入力からN個前の入力(N個の遅延をかけたもの)を 引き算すると、実習 4-3-4で述べたバンドエリミネーションフィルタのように、 ある周波数の付近だけを減衰させるフィルタを実現することができます。 ただしこの場合は、サンプリング周波数の1/Nの周波数毎に減衰させる周波数が 周期的に現れます。これを、櫛のような周波数特性を持つという意味で、 櫛型(コム)フィルタと呼びます。

  1. 櫛形フィルタのDSPプログラムを作成してください。
  2. 周波数特性を測定してみましょう。


【実習 4-4-4】<エコー>

カラオケなどで使用される、音にエコーをかけるフィルタです。 図のように、出力をN個遅らせたものを係数倍(b<1)して入力と足し合わせる ことで、入力された信号が徐々に弱くなりながら繰り返し出力に現れる (エコーがかかる)ようになります。 どの程度の時間長までエコーがかかるかは、係数bにより決まります。 これは出力が入力に戻るIIRフィルタの一種となっています。

  1. エコーを実現するためのDSPプログラムを作成してください。
  2. マイクで音声を入力して、スピーカで出力を聞いてみましょう。