回答:
あなたの質問への答え-文字通りに取られた場合-が「いいえ」であると私は言うでしょう、単にFIRフィルターをIIRフィルターに変換する一般的な方法はありません。
この問題に取り組む1つの方法は、FIRフィルターのインパルス応答を調べ、時間領域法(プロニー法など)を使用してIIRフィルターでそのインパルス応答を近似することであるというRBJに同意します。
周波数応答から始める場合、IIRフィルターを設計するための多くの方法があります。約25年前に発行されましたが、Chen and Parksによる方法は、設計問題に取り組むためのより良い方法の1つであると私は信じています。IIRフィルタの周波数領域の設計のための別の非常に簡単な方法は、本書に記述されている方程式誤差法であり、デジタルフィルタの設計公園バラスによります。この回答で説明しました。
位相応答が重要である場合、周波数領域でIIRフィルターを設計するときに直面する問題の1つは、目的の位相応答の正確な選択です。目的の位相の全体的な形状が与えられた場合でも、1つの自由度、つまり遅延があります。たとえば、必要なフェーズが、そして望ましい大きさは 次に、目的の周波数応答を次のように選択できます
どこ 不明な遅延パラメータです。もちろん、あなたはが指定されている場合は、追加の(正または負の)遅延で変更しないでください。しかし、実際には平均遅延が常に重要であるとは限らず、さらに重要なのは、近似は、特定のフィルター次数の方が他のものよりもはるかに優れています。だから遅延 は追加の設計パラメータになる可能性があり、最適に、または少なくとも合理的に選択する必要があります。
大きさと位相応答が規定されたデジタルフィルターの設計に関する論文を書きました。1つの章では、IIRフィルターの周波数領域の設計について扱います。この方法を使用して、通過帯域内の位相がほぼ線形のIIRフィルターを設計したり、他の任意の望ましい位相(および振幅)応答を近似したりできます。フィルターは安定していることが保証されているだけでなく、最大極半径を指定することもできます。つまり、特定の安定余裕を定義できます。この方法は、IEEE Transactions on Signal Processingに掲載された論文にも記載されています。
Matt Lの答えはDSPの観点からは最高です。
あなたが求めていることも行うかもしれない制御文献からの技術の完全な配列が存在します。これは、FIRフィルターを明示的にIIRに変換するものではありませんが、他の制約が適用されない限り、通常、手法はIIRソリューションを見つけます。
いくつかの手法は次のとおりです。
IIRのインパルス応答を特定のインパルス応答に一致させようとしている場合、それは数学的に定義されています(FIRは定義と同じくらい良いと思います)、常にPronyメソッドが最初だと思っていました問題を突き刺します。
IIRの周波数応答を特定の周波数応答に一致させようとしている場合、それは数学的に定義されています(FIRの周波数応答は他のどの定義よりも優れていると思います)。最近、グレッグバーチンのFDLSが最適です。Richard Lyons(あなたの質問にコメントした)は、グレッグがその方法を説明する章を置いたモノグラフを発表しました。Matt Lもこの問題について調査し、発表しています。
ええ、あなたは正確な同等物を必要としませんでしたが、悲しみなしではありませんでしたので
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')
エコーオフ