新規記事投稿
フォロー記事投稿
記事のキャンセル
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 フィルタのような櫛型の振幅特性は見られず、信号遅延も少ないのだが、位相歪
があって、信号波形が崩れたりするというアナログフィルタの特性も、しっかりと引き継が
れるというわけか。
なぁ~るへそ。