FIRを同等のIIRに変換する


8

変換する方法があるFIRIIR最も類似した行動をフィルタしますか?


3
「最も類似した行動」というフレーズは、この質問への回答を困難にします。「最も類似した行動」があなたにとって何を意味するか説明できますか
Richard Lyons、

1
質問は一般的なものでなければなりません。FIR変換のモジュールを保存する方法および/またはモジュールよりも位相を保存する方法
Andrea

回答:


7

あなたの質問への答え-文字通りに取られた場合-が「いいえ」であると私は言うでしょう、単にFIRフィルターをIIRフィルターに変換する一般的な方法はありません。

この問題に取り組む1つの方法は、FIRフィルターのインパルス応答を調べ、時間領域法(プロニー法など)を使用してIIRフィルターでそのインパルス応答を近似することであるというRBJに同意します。

周波数応答から始める場合、IIRフィルターを設計するための多くの方法があります。約25年前に発行されましたが、Chen and Parksによる方法は、設計問題に取り組むためのより良い方法の1つである私は信じています。IIRフィルタの周波数領域の設計のための別の非常に簡単な方法は、本書に記述されている方程式誤差法であり、デジタルフィルタの設計公園バラスによります。この回答で説明しました。

位相応答が重要である場合、周波数領域でIIRフィルターを設計するときに直面する問題の1つは、目的の位相応答の正確な選択です。目的の位相の全体的な形状が与えられた場合でも、1つの自由度、つまり遅延があります。たとえば、必要なフェーズがϕD(ω)、そして望ましい大きさは MD(ω) 次に、目的の周波数応答を次のように選択できます

(1)HD(ω)=MD(ω)ej(ϕ(ω)ωτ)

どこ τ不明な遅延パラメータです。もちろん、あなたはϕD(ω)が指定されている場合は、追加の(正または負の)遅延で変更しないでください。しかし、実際には平均遅延が常に重要であるとは限らず、さらに重要なのは、τ近似は、特定のフィルター次数の方が他のものよりもはるかに優れています。だから遅延τ は追加の設計パラメータになる可能性があり、最適に、または少なくとも合理的に選択する必要があります。

大きさと位相応答が規定されたデジタルフィルターの設計に関する論文を書きました。1つの章では、IIRフィルターの周波数領域の設計について扱います。この方法を使用して、通過帯域内の位相がほぼ線形のIIRフィルターを設計したり、他の任意の望ましい位相(および振幅)応答を近似したりできます。フィルターは安定していることが保証されているだけでなく、最大極半径を指定することもできます。つまり、特定の安定余裕を定義できます。この方法は、IEEE Transactions on Signal Processingに掲載された論文にも記載されています。


3

Matt Lの答えはDSPの観点からは最高です。

あなたが求めていることも行うかもしれない制御文献からの技術の完全な配列が存在します。これは、FIRフィルターを明示的にIIRに変換するものではありませんが、他の制約が適用されない限り、通常、手法はIIRソリューションを見つけます。

いくつかの手法は次のとおりです。


2

IIRフィルターによって特定の任意の周波数応答(特定のFIRフィルターで記述されたものなど)を近似できる(正確には一致しない)可能性があるさらに別の方法は、微分進化です。微分進化は一種の遺伝的アルゴリズムであり、この用途のために、極と零点のセットを繰り返し選択して適応させ、計算された差の誤差を最小化しようとします。このトピックに関するIEEEの論文がいくつかあり、Rick Lyonsの本の1つ(「Streamlining DSP」)の章もあるようです。


2

IIRのインパルス応答を特定のインパルス応答に一致させようとしている場合、それは数学的に定義されています(FIRは定義と同じくらい良いと思います)、常にPronyメソッドが最初だと思っていました問題を突き刺します。

IIRの周波数応答を特定の周波数応答に一致させようとしている場合、それは数学的に定義されています(FIRの周波数応答は他のどの定義よりも優れていると思います)。最近、グレッグバーチンのFDLS最適です。Richard Lyons(あなたの質問にコメントした)は、グレッグがその方法を説明する章を置いたモノグラフを発表しました。Matt Lもこの問題について調査し、発表しています。


その特定のリンクのコードは、私の元のバージョンから私以外の誰かによって変更されています。SEを介して個人の電子メールメッセージを受信する方法がわかれば、オリジナルは個人的に入手できます。
Greg Berchin、2015年

1

ええ、あなたは正確な同等物を必要としませんでしたが、悲しみなしではありませんでしたので

FIRフィルターは多項式と同等です

パデ近似を導出することができます。

必ずしも安定しているとは限らず、スケーリングに非常に敏感であり、結果はスリリングではありません。

https://en.wikipedia.org/wiki/Pad%C3%A9_approximant

FIRの例としてハニングウィンドウを使用し、シンボリックツールボックスのPadeルーチンを使用する(ほとんどの人が持っていないが、gnu Maximaは持っている)

私が追求していない私のもう1つのアイデアは、疑似ランダムMAプロセスを生成してから、ARMA推定器を使用して有理伝達関数を回復することです。

p = poly2sym(sym(round(100 * hanning(16))))%スケーリングされたハニング

p = 3 * x ^ 15 + 13 * x ^ 14 + 28 * x ^ 13 + 45 * x ^ 12 + 64 * x ^ 11 + 80 * x ^ 10 + 93 * x ^ 9 + 99 * x ^ 8 + 99 * x ^ 7 + 93 * x ^ 6 + 80 * x ^ 5 + 64 * x ^ 4 + 45 * x ^ 3 + 28 * x ^ 2 + 13 * x + 3

h = pade(p、 'Order'、[3 3])

h =-(2534 * x ^ 3 + 11071 * x ^ 2 + 10368 * x + 2961)/(-2213 * x ^ 3 + 1964 * x ^ 2 + 821 * x-987)

[n、d] = numden(h)

n =-2534 * x ^ 3-11071 * x ^ 2-10368 * x-2961

d =-2213 * x ^ 3 + 1964 * x ^ 2 + 821 * x-987

num = sym2poly(n)

num = -2534 -11071 -10368 -2961

den = sym2poly(d)

デン= -2213 1964 821 -987

fir = sym2poly(p);

rn = roots(数値)

rn = -3.2067 + 0.0000i

-0.5812 + 0.1633i

-0.5812-0.1633i

rd = roots(den)

rd = -0.6679 + 0.0000i

0.7777 + 0.2510i

0.7777-0.2510i

num = num / sum(abs(num)); %正規化係数

den = den / sum(abs(den));

fir = fir / sum(abs(fir));

[h、z] = freqz(num、den、1024);

figure(1)plot(z、log10(abs(h))); ylabel( 'dB')figure(2)[h、z] = freqz(fir、1,1024); plot(z、log10(abs(h))); ylabel( 'dB')

エコーオフ

パデレスポンス

ハミング応答


0

ウィンドウ化されたインパルス応答、長さLのhが低次(Lに対して)のiirフィルターによって「適切にモデル化」できる場合、後者を使用してFIRフィルターを元の長さを超えて外挿できると推測するのは魅力的です。

prony(時間領域)とinvfreqz(周波数領域)を使用することの実際的な長所と短所は何ですか?

-k

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.