デジタルフィルター設計の基本原則(IIR / FIR)


14

オーディオエンジンなどの設計には確かな経験がありますが、デジタルフィルター設計の分野、特にIIRフィルターとFIRフィルターはかなり新しい分野です。言い換えれば、フィルターを設計し、それらの差分方程式を導き出す方法について、できる限り多くのことを学ぼうとしています。私は基礎から始めているので、私が言ったように、私が学ぼうとしているので、我慢してください。

ここに私の質問があります:

特定のカットオフ(たとえば300 Hz)のローパスフィルターを設計したいとします。伝達関数を数学的に導出し、特定の差分方程式を導出して、直接フォームIおよび直接フォームII(または現時点ではDF-1のみ)でフィルターを実装する最良の方法は何でしょうか?

私は伝達関数と、それらがウェブ上のいくつかの優れた材料からの差分方程式にどのように関係するかについてある程度理解していますが、残念ながらその一部は事前の知識をかなり前提としているため、私の探求に役立つよりも混乱しています。ですから、ドットをつなげるのに役立つ、より段階的な例が必要だと思います。

したがって、基本的には、カットオフ周波数の選択から差分方程式の導出までのプロセスの内訳に関するヘルプを探しています。

どんな助けも大歓迎です。私は多くの概念に精通しています-インパルス応答、DFT、その背後にある数学、さらに助けが必要なのは、フィルターの伝達関数を設計するためのz変換と極/零点の概念ですカットオフ周波数はどうですか。最終的に差分方程式を導き出すためにこれらすべてを実行します。

私は例から最もよく学ぶ傾向があるので、私はここで尋ねると思った。助けてくれる時間を見つけてくれた人に感謝します。


2
多くのフィルター設計方法があります。開始するためのいくつかの用語を次に示します。ウィンドウ設計法、最小二乗フィルター設計、および等リップルフィルター設計(通常はParks-McClellanアルゴリズムを使用)。これらは主にFIRフィルター設計に限定されています。IIRフィルターを設計する一般的な方法の1つは、アナログプロトタイプ(バターワースフィルターなど)を対応するデジタルフィルター近似にマッピングすることです。これは、たとえば双線形変換またはインパルス不変法を使用して実行できます。
ジェイソンR

回答:


18

デジタルフィルターの設計は非常に大規模で成熟したトピックであり、質問で述べたように、多くの資料が用意されています。ここで試してみたいのは、始めて、既存の資料をよりアクセスしやすくすることです。ここでは係数と信号の量子化を考慮しないため、デジタルフィルターの代わりに、実際には離散時間フィルターについて説明する必要があります。FIRフィルターとIIRフィルターについてはすでに知っていますし、DF IやIIなどのフィルター構造も知っています。それにもかかわらず、いくつかの基本から始めましょう。

非再帰的線形時不変(LTI)フィルターは、次の差分方程式で記述できます。

(1)yn=h0バツn+h1バツn1++hN1バツnN+1=k=0N1hkバツnk

ここで、は出力シーケンス、x n は入力シーケンス、nは時間インデックス、h kはフィルター係数、Nはフィルター長(タップ数)です。入力信号がインパルス、つまりx n = δ n )の場合、y n = h nであるため、フィルタータップh kはフィルターのインパルス応答でもあります。ynバツnnhkNhkバツn=δnyn=hn(フィルタのメモリがゼロで初期化されている場合)。式(1)は、線形時不変有限インパルス応答(FIR)システムを記述しています。(1)の右側の和は畳み込み和です。つまり、出力信号は、入力信号をインパルス応答で畳み込むことによって得られます。これは常に当てはまりますが、IIRフィルターの場合、インパルス応答が無限に長いため、つまり無限に多くの係数h kがあるため、畳み込み和を明示的に計算できませんhk。FIRフィルターの重要な利点の1つは、フィルターが常に安定していることです。つまり、入力シーケンスが制限されている場合、出力シーケンスは常に制限されます。もう1つの利点は、FIRフィルターは常に正確な線形位相で実現できることです。つまり、純粋な遅延以外に位相歪みを追加しません。さらに、後で見るように、設計の問題は通常簡単です。

再帰的LTIフィルターは、次の差分方程式で記述されます。

(2)yn=b0バツn+b1バツn1++bMバツnMa1yn1aNynN

bkakak これは、IIRフィルタが不安定になる可能性があるためです。つまり、入力シーケンスが制限されている場合でも、出力シーケンスが制限されない可能性があります。

フィルターは、時間(サンプル)ドメインまたは周波数ドメイン、あるいはその両方の仕様に従って設計できます。質問でカットオフ周波数について言及しているので、周波数ドメインの仕様にもっと興味があると思います。この場合、FIRおよびIIRシステムの周波数応答を確認する必要があります。システムの周波数応答は、インパルス応答が存在すると仮定した場合のインパルス応答のフーリエ変換です(安定したシステムの場合)。FIRフィルターの周波数応答は次のとおりです。

(3)Hejθ=k=0N1hkejkθ

θ

θ=2πffs

ffs

(4)Hejθ=k=0Mbkejθ1+k=1Nakejθ

ak=0k=1N

ここで、フィルターの設計方法を簡単に見てみましょう。FIRフィルターの場合、目的の周波数応答の逆フーリエ変換を実行して、フィルター係数に直接対応するフィルターのインパルス応答を取得できます。有限長のインパルス応答で目的の応答を近似するため、取得したインパルス応答に滑らかなウィンドウを適用して、ギブズ現象による実際の周波数応答の振動を最小限に抑える必要があります。この方法は、周波数サンプリング法と呼ばれます。

理想的なローパスフィルター、ハイパスフィルター、バンドパスフィルター、またはバンドストップフィルター(および他のいくつか)のような単純な標準フィルターの場合、理想的な望ましい応答の逆フーリエ変換を行うことで正確なインパルス応答を分析的に計算することもできます:

hk=12πππHejθejkθdθ

この積分は、理想的な周波数選択フィルターの場合のように、区分的に一定の所望の応答を簡単に評価できます。これにより、無限に長く非因果的なインパルス応答が得られます。これは、有限で因果的にするためにウィンドウ化およびシフトする必要があります。この方法は、ウィンドウデザインとして知られています。

もちろん、他にも多くのFIRフィルターの設計方法があります。1つの重要な数値的手法は、有名なParks-McClellan交換アルゴリズムで、一定の通過帯域と遮断帯域のリップルをもつ最適なフィルターを設計します。これは数値近似法であり、MatlabやOctaveなど、多くのソフトウェア実装が利用可能です。

ssz

もちろん、あなたが持っている仕様の種類に応じて、もっと多くの興味深く有用な方法がありますが、これがあなたを開始し、あなたが出会うどんな資料でもより理解できるようになることを願っています。いくつかの基本的なフィルター設計法(およびそれ以上)を網羅した非常に優れた(そして無料の)本は、Orfanidisによる信号処理の紹介です。いくつかの設計例を見つけることができます。もう1つの素晴らしい古典的な本は、Parks and BurrusによるDigital Filter Designです。


うわー、マット、詳細で思慮深い答えをどうもありがとう。私はきっとそれを掘り下げ、あなたの時間を本当に感謝します。ありがとう!
ビット単位

ウェーブレットフィルター設計のための良い教科書はありますか?このようなトピックについて興味があります:dsp.stackexchange.com/questions/29090/…。ありがとう!
LCFactorization
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.