FIRとIIRの選択
概要
ディジタル・フィルタには、
インパルス応答【用語】離散時間の場合、通常
x(n)=1, n=0
x(n)=0, n≠0
の信号を「インパルス」といい、インパルスを入力した時のフィルタ出力を「インパルス応答」といいます。
が有限の長さで終わる FIR (Finite Impulse Response) と、インパルス応答が無限に続く IIR (Infinite Impulse Response) があります。
図1 : FIR の例
図2 : IIR の例
フィルタを設計する時、FIR にするか IIR にするかは大事な「分かれ道」で、 選択を誤ると仕様を満たせなかったり、満たせても高コストになってしまうことが少なからずあります。
FIR と IIR、どちらがいいか微妙な場合もありますが、ここでは「この場合は FIR が適している」「この場合は IIR が適している」と、はっきり言えるケースを挙げます。
図3 : FIR/IIR の適・不適
FIR が適しているケース
位相歪が許されない場合
リアルタイム動作で、多少の遅延は許されるが「位相歪【用語】位相歪は周波数によって遅延量が違うために生じる歪で、位相歪を持つフィルタを通ると、波形の全体的な「形」が時間方向に崩れてしまいます。」が全く許されない場合は、FIR 以外に選択肢はありません。
FIR を使うと直線位相 (リニア・フェーズ) 特性を持ち、全周波数で群遅延一定のフィルタを作ることができます。
絶対的な安定性が求められる場合
フィルタ係数が時間と共に変化する「時変フィルタ」の場合、IIR では発振/発散する危険性があります。
FIR は (フィルタ係数が有限なら) 絶対に安定ですので、適応フィルタなど時変フィルタの場合は FIR タイプの方が安心です。
マルチレートで使用する場合
マルチレートのアップ/ダウン・サンプリングに使うフィルタには、 必要ないサンプルの計算を省略する「ポリフェーズ分解」というテクニックを使えるため、 アップ/ダウン比率が大きい場合は FIR の方が高速になることが多いです。
IIR が適しているケース
高速性が必要な場合, 演算量を抑えたい場合
IIR は極と零点を組み合わせてフィルタを実現するため自由度が高く、零点だけ*で特性を実現せねばならない FIR に比べて、遥かに少ないメモリと演算量で所望特性を実現できることが多いです。
【参考】FIR に極は無い?
このため、高速性が必要な場合や演算量を抑えたい場合は、IIR での実現を考えた方がよいでしょう。
FIR はインパルス応答全体が入るだけの係数メモリと遅延メモリを必要とし、 演算量もインパルス応答の長さ(サンプル数)に比例しますので、 インパルス応答が長いと IIR に比べて不利になります。
ただし IIR の設計実装は FIR より難しく、安定性判別やノイズ(S/N)の推定には、それなりの知識を必要とします。
急峻な周波数特性が必要な場合
インパルス応答の長さは周波数特性の滑らかさで決まります。
例えば急峻な LPF は、振幅特性のカットオフ周波数付近に尖った角(かど)があり、 滑らかでないためインパルス応答が長くなってしまいます。
図4 : 尖った所は「滑らか」とはいえない
FIR の演算量はインパルス応答の長さに比例するため、インパルス応答が長いと演算量が膨大となり、リアルタイム動作させるには必要以上に高速/高価な計算デバイス(DSPなど)を使わねばならなくなります。 このような場合は、極と零点を組み合わせて鋭く尖った特性を作り出せる IIR を使うほうがよいでしょう。
非常に低い周波数を制御する場合
サンプリング周波数に対して非常に低い周波数の特性を指定されている場合は IIR の方が圧倒的に有利です。
これは盲点だと思うのですが、急峻な周波数特性が必要な場合 で述べた振幅特性の「急峻さ」は、リニア周波数/リニア振幅でプロットした時の「急峻さ」です。
このため低い周波数帯域で急峻な特性を要求されると、思った以上にインパルス応答が長くなり、FIR ではメモリ量/演算量ともに苦しくなってしまいます。
中高域でも Q が高い場合は 急峻な周波数特性が必要な場合 に該当しますので、IIR が有利です。
マルチレートにできる場合は FIR でも可能ですが、回路はかなり大掛かりになり、設計も手間が掛かります。
サンプリング周波数に対して極端に低い周波数の特性を指定される場合は、係数誤差、演算誤差の影響が大きくなりますので、本当に IIR で大丈夫か確認を要します。
迷ったら…
特性的にもコスト的にも FIR と IIR で大差ない場合は、FIR にしておくことをお勧め致します。
IIR は理論も実装も FIR よりずっと面倒ですから、どちらでもできるなら、簡単に作れて「後腐れ」のない FIR の方が良いと思います。