新規記事投稿 フォロー記事投稿 記事のキャンセル
From: Akitaka HOSOMI <hosomi@ga2.so-net.ne.jp>
Subject: デジタルフィルタ( IIR 篇 )
Date: 1998/08/28 06:26:48

夜中、だいぶ涼しくなってきたので、IIR フィルタのプログラムを書いてしまわにゃ、ね。

# これを、そろそろ片付けておかないと、先方へ義理を欠くことにもなりかねん。


 FIR フィルタのところでも少し触れたが、IIR フィルタは、インパルス応答が無限に
続くフィルタだ。これをプログラムで実現するには、入力信号のみならず、以前のフィ
ルタ出力信号も使って、現在の出力値を求める( つまり、帰還させて計算するわけだ )。
これで、無限に応答させているのと等価な計算になる。


構成自体は、FIR フィルタ同様、ワリと簡単なので、プログラムへの実装は、然程、難
しくない。


手続き的に FIR フィルタと大きく異なるのは、フィルタの設計が、いろいろと面倒だと
いう点だ。

おおまかには、こんな↓感じ。

 1. 仕様に基づいて、必要なフィルタの次数を求める。

 2. アナログフィルタとして、基準 LPF の伝達関数を設計する。

 3. 予め、カットオフ周波数を s-z 変換用に補正しておく( これをプリワーピングという )。

 4. 周波数変換で、所望のフィルタ種別( LPF , HPF , BPF , BEF )の伝達関数を求める。

 5. 求めたアナログフィルタの伝達関数を、双 1 次 s-z 変換で、離散で扱える伝達関数に
    変換する。


# このやり方以外にも、いろいろな設計方法があるそうだが、どれも面倒じゃ〜〜。

#  3. のプリワーピングが必要なのは、双 1 次 s-z 変換が非線型写像だからだ。

# どのフィルタ( LPF , HPF , BPF , BEF )でも、z 平面へ写像できるので、結構、便利な
# 変換操作なんだけどね。



 IIR フィルタは、FIR フィルタに比べて次数が少なくて済むので、実行速度が速い反面、
原理的に演算精度に影響されやすい( 以前の出力値なんかを繰り返し使うんだもんなぁ、
そのうえ、伝達関数が有理式で与えられるので、極なんかの問題もあるし ... )。

そんなこんなで、演算精度を確保するために、一旦、低次のフィルタに分解し、それらを
直列や並列の構成に組み直して、必要な特性を得たりもするのさ。

# 今時の PC は、64 bit の浮動小数だから、実際は、そこまでしなくても良いのではなか
# ろうか?


バターワースや、チェビシェフ、逆チェビシェフ、楕円フィルタ( 連立チェビシェフ )なん
かの、アナログ回路でよくお目にかかるフィルタが、この IIR フィルタで書ける。

まぁ、FIR フィルタのような櫛型の振幅特性は見られず、信号遅延も少ないのだが、位相歪
があって、信号波形が崩れたりするというアナログフィルタの特性も、しっかりと引き継が
れるというわけか。

なぁ〜るへそ。