Ihr Satz "ähnlichstes Verhalten" macht es schwierig, diese Frage zu beantworten. Können Sie beschreiben, was "ähnlichstes Verhalten" für Sie bedeutet?
Richard Lyons
1
Die Frage sollte allgemein sein. Ein Weg, das Modul der FIR-Transformation zu erhalten und / oder die Phase besser zu erhalten als das Modul
Andrea
Antworten:
7
Ich würde sagen, dass die Antwort auf Ihre Frage - wörtlich genommen - "Nein" lautet. Es gibt keine allgemeine Möglichkeit, einen FIR-Filter einfach in einen IIR-Filter umzuwandeln.
Ich stimme RBJ zu, dass eine Möglichkeit, das Problem anzugehen, darin besteht, die Impulsantwort des FIR-Filters zu untersuchen und eine Zeitbereichsmethode (wie die Prony-Methode) zu verwenden, um diese Impulsantwort durch einen IIR-Filter zu approximieren.
Wenn Sie vom Frequenzgang ausgehen, haben Sie viele Methoden zum Entwerfen von IIR-Filtern. Obwohl es vor ungefähr 25 Jahren veröffentlicht wurde, glaube ich, dass die Methode von Chen und Parks immer noch eine der besseren Möglichkeiten ist, um das Designproblem anzugehen. Eine weitere sehr einfache Methode für das Frequenzbereichsdesign von IIR-Filtern ist die Gleichungsfehlermethode, die im Buch Digital Filter Design von Parks and Burrus beschrieben ist. Ich habe es in dieser Antwort erklärt .
Wenn die Phasenantwort für Sie von Bedeutung ist, besteht ein Problem beim Entwerfen von IIR-Filtern im Frequenzbereich in der genauen Auswahl der gewünschten Phasenantwort. Wenn die Gesamtform der gewünschten Phase angegeben ist, haben Sie immer noch einen Freiheitsgrad, nämlich die Verzögerung. Wenn beispielsweise die gewünschte Phase ist und die gewünschte Größe ist, kann Ihr gewünschter Frequenzgang als gewählt werdenM D ( ω )ϕD.( ω )M.D.(ω )
H.D.( ω ) = M.D.( ω ) ej ( ϕ ( ω ) - ω τ)(1)
Dabei ist ein unbekannter Verzögerungsparameter. Natürlich können Sie sagen, dass wenn ist, Sie es nicht mit einer zusätzlichen (positiven oder negativen) Verzögerung ändern möchten. Es stellt sich jedoch heraus, dass in der Praxis die durchschnittliche Verzögerung nicht immer wichtig ist und - was noch wichtiger ist - für bestimmte Werte von Ihre Annäherung für eine bestimmte Filterreihenfolge viel besser ist als für andere. Die Verzögerung kann also zu einem zusätzlichen Entwurfsparameter werden und sollte optimal oder zumindest vernünftig gewählt werden.ϕ D ( ω ) τ ττϕD.( ω )ττ
Ich habe eine Arbeit über das Design digitaler Filter mit vorgeschriebenen Größen- und Phasenantworten geschrieben. Ein Kapitel befasst sich mit dem Frequenzbereichsdesign von IIR-Filtern. Dieses Verfahren kann verwendet werden, um IIR-Filter mit ungefähr linearer Phase in den Durchlassbändern zu entwerfen oder um jede andere gewünschte Phasen- (und Größen-) Antwort zu approximieren. Die Filter sind nicht nur garantiert stabil, sondern Sie können auch einen maximalen Polradius vorschreiben, dh Sie können einen bestimmten Stabilitätsspielraum definieren. Sie finden diese Methode auch in einem Artikel, der in den IEEE-Transaktionen zur Signalverarbeitung veröffentlicht wurde.
Die Antwort von Matt L ist aus DSP-Sicht die beste.
Es gibt eine ganze Reihe von Techniken aus der Kontrollliteratur, die möglicherweise auch das tun, was Sie verlangen. Während dies nicht explizit einen FIR-Filter in einen IIR verwandelt, finden die Techniken im Allgemeinen eine IIR-Lösung, sofern keine anderen Einschränkungen angewendet werden.
Eine weitere Methode, die in der Lage sein könnte, einen bestimmten willkürlichen Frequenzgang (wie er von einem bestimmten FIR-Filter beschrieben wird) durch ein IIR-Filter zu approximieren (nicht genau zu erreichen), ist Differential Evolution. Differential Evolution ist eine Art genetischer Algorithmus, der für diese Verwendung iterativ einen Satz von Polen und Nullen auswählt und anpasst, um einen berechneten Differenzfehler zu minimieren. Es scheint einige IEEE-Artikel zu diesem Thema sowie ein Kapitel in einem von Rick Lyons Büchern ("Streamlining DSP") zu geben.
Wenn Sie versuchen, die Impulsantwort des IIR an eine bestimmte Impulsantwort anzupassen, obwohl diese mathematisch definiert ist (ich denke, die FIR ist so gut wie jede andere Definition), habe ich immer gedacht, dass die Prony-Methode die erste war Stich auf das Problem.
Wenn Sie versuchen, den Frequenzgang des IIR an einen bestimmten Frequenzgang anzupassen, der jedoch mathematisch definiert ist (ich denke, der Frequenzgang der FIR ist so gut wie jede andere Definition), habe ich kürzlich gedacht, dass Greg Berchin FDLS könnte der richtige Weg sein. Richard Lyons (der Ihre Frage kommentierte) veröffentlichte eine Monographie, in der Greg ein Kapitel hatte, in dem die Methode beschrieben wurde. Matt L hat das Problem ebenfalls recherchiert und veröffentlicht.
Der Code unter diesem bestimmten Link wurde von einer anderen Person als mir gegenüber meiner Originalversion geändert. Das Original ist bei mir persönlich erhältlich, wenn ich jemals herausfinden kann, wie ich persönliche E-Mail-Nachrichten über SE erhalten kann.
Greg Berchin
1
Nun ja, da Sie kein genaues Äquivalent benötigten, aber nicht ohne Trauer
Ein FIR-Filter entspricht einem Polynom
Man kann eine Pade-Näherung ableiten.
Es muss nicht unbedingt stabil sein, es reagiert sehr empfindlich auf Skalierungen und das Ergebnis ist nicht aufregend.
Verwenden eines Hanning-Fensters als FIR-Beispiel und der Pade-Routine in der symbolischen Toolbox (die die meisten Leute nicht haben, aber Gnu Maxima)
Meine andere Idee, die ich nicht verfolgt habe, wäre, einen pseudozufälligen MA-Prozess zu generieren und dann einen ARMA-Schätzer zu verwenden, um die rationale Übertragungsfunktion wiederherzustellen.
Es ist verlockend zu spekulieren, dass, wenn eine Fensterantwortimpulsantwort h der Länge L durch ein Filter niedriger Ordnung (relativ zu L) "gut modelliert" werden kann, das letztere verwendet werden kann, um das FIR-Filter über seine ursprüngliche Länge hinaus zu extrapolieren.
Was sind die praktischen Vor- und Nachteile der Verwendung von Prony (Zeitbereich) gegenüber der Verwendung von Invfreqz (Frequenzbereich)?
Antworten:
Ich würde sagen, dass die Antwort auf Ihre Frage - wörtlich genommen - "Nein" lautet. Es gibt keine allgemeine Möglichkeit, einen FIR-Filter einfach in einen IIR-Filter umzuwandeln.
Ich stimme RBJ zu, dass eine Möglichkeit, das Problem anzugehen, darin besteht, die Impulsantwort des FIR-Filters zu untersuchen und eine Zeitbereichsmethode (wie die Prony-Methode) zu verwenden, um diese Impulsantwort durch einen IIR-Filter zu approximieren.
Wenn Sie vom Frequenzgang ausgehen, haben Sie viele Methoden zum Entwerfen von IIR-Filtern. Obwohl es vor ungefähr 25 Jahren veröffentlicht wurde, glaube ich, dass die Methode von Chen und Parks immer noch eine der besseren Möglichkeiten ist, um das Designproblem anzugehen. Eine weitere sehr einfache Methode für das Frequenzbereichsdesign von IIR-Filtern ist die Gleichungsfehlermethode, die im Buch Digital Filter Design von Parks and Burrus beschrieben ist. Ich habe es in dieser Antwort erklärt .
Wenn die Phasenantwort für Sie von Bedeutung ist, besteht ein Problem beim Entwerfen von IIR-Filtern im Frequenzbereich in der genauen Auswahl der gewünschten Phasenantwort. Wenn die Gesamtform der gewünschten Phase angegeben ist, haben Sie immer noch einen Freiheitsgrad, nämlich die Verzögerung. Wenn beispielsweise die gewünschte Phase ist und die gewünschte Größe ist, kann Ihr gewünschter Frequenzgang als gewählt werdenM D ( ω )ϕD.( ω ) M.D.(ω )
Dabei ist ein unbekannter Verzögerungsparameter. Natürlich können Sie sagen, dass wenn ist, Sie es nicht mit einer zusätzlichen (positiven oder negativen) Verzögerung ändern möchten. Es stellt sich jedoch heraus, dass in der Praxis die durchschnittliche Verzögerung nicht immer wichtig ist und - was noch wichtiger ist - für bestimmte Werte von Ihre Annäherung für eine bestimmte Filterreihenfolge viel besser ist als für andere. Die Verzögerung kann also zu einem zusätzlichen Entwurfsparameter werden und sollte optimal oder zumindest vernünftig gewählt werden.ϕ D ( ω ) τ ττ ϕD.( ω ) τ τ
Ich habe eine Arbeit über das Design digitaler Filter mit vorgeschriebenen Größen- und Phasenantworten geschrieben. Ein Kapitel befasst sich mit dem Frequenzbereichsdesign von IIR-Filtern. Dieses Verfahren kann verwendet werden, um IIR-Filter mit ungefähr linearer Phase in den Durchlassbändern zu entwerfen oder um jede andere gewünschte Phasen- (und Größen-) Antwort zu approximieren. Die Filter sind nicht nur garantiert stabil, sondern Sie können auch einen maximalen Polradius vorschreiben, dh Sie können einen bestimmten Stabilitätsspielraum definieren. Sie finden diese Methode auch in einem Artikel, der in den IEEE-Transaktionen zur Signalverarbeitung veröffentlicht wurde.
quelle
Die Antwort von Matt L ist aus DSP-Sicht die beste.
Es gibt eine ganze Reihe von Techniken aus der Kontrollliteratur, die möglicherweise auch das tun, was Sie verlangen. Während dies nicht explizit einen FIR-Filter in einen IIR verwandelt, finden die Techniken im Allgemeinen eine IIR-Lösung, sofern keine anderen Einschränkungen angewendet werden.
Einige der Techniken sind:
Balanced Truncation ist in der Tat ein Ansatz zur Hauptkomponentenanalyse zur Reduzierung der Reihenfolge eines Filters. Es gibt eine Matlab-Implementierung in der Robust Control Toolbox.
Optimale Hankel-Norm Die Approximation verwendet die unendliche Hankel-Norm, um ein System hoher Ordnung mit einem System niedrigerer Ordnung zu approximieren. Es gibt eine Matlab-Implementierung in der Robust Control Toolbox.
quelle
Eine weitere Methode, die in der Lage sein könnte, einen bestimmten willkürlichen Frequenzgang (wie er von einem bestimmten FIR-Filter beschrieben wird) durch ein IIR-Filter zu approximieren (nicht genau zu erreichen), ist Differential Evolution. Differential Evolution ist eine Art genetischer Algorithmus, der für diese Verwendung iterativ einen Satz von Polen und Nullen auswählt und anpasst, um einen berechneten Differenzfehler zu minimieren. Es scheint einige IEEE-Artikel zu diesem Thema sowie ein Kapitel in einem von Rick Lyons Büchern ("Streamlining DSP") zu geben.
quelle
Wenn Sie versuchen, die Impulsantwort des IIR an eine bestimmte Impulsantwort anzupassen, obwohl diese mathematisch definiert ist (ich denke, die FIR ist so gut wie jede andere Definition), habe ich immer gedacht, dass die Prony-Methode die erste war Stich auf das Problem.
Wenn Sie versuchen, den Frequenzgang des IIR an einen bestimmten Frequenzgang anzupassen, der jedoch mathematisch definiert ist (ich denke, der Frequenzgang der FIR ist so gut wie jede andere Definition), habe ich kürzlich gedacht, dass Greg Berchin FDLS könnte der richtige Weg sein. Richard Lyons (der Ihre Frage kommentierte) veröffentlichte eine Monographie, in der Greg ein Kapitel hatte, in dem die Methode beschrieben wurde. Matt L hat das Problem ebenfalls recherchiert und veröffentlicht.
quelle
Nun ja, da Sie kein genaues Äquivalent benötigten, aber nicht ohne Trauer
Ein FIR-Filter entspricht einem Polynom
Man kann eine Pade-Näherung ableiten.
Es muss nicht unbedingt stabil sein, es reagiert sehr empfindlich auf Skalierungen und das Ergebnis ist nicht aufregend.
https://en.wikipedia.org/wiki/Pad%C3%A9_approximant
Verwenden eines Hanning-Fensters als FIR-Beispiel und der Pade-Routine in der symbolischen Toolbox (die die meisten Leute nicht haben, aber Gnu Maxima)
Meine andere Idee, die ich nicht verfolgt habe, wäre, einen pseudozufälligen MA-Prozess zu generieren und dann einen ARMA-Schätzer zu verwenden, um die rationale Übertragungsfunktion wiederherzustellen.
p = poly2sym (sym (rund (100 * hanning (16))))% skaliertes hanning
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, 'Ordnung', [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)
den = -2213 1964 821 -987
fir = sym2poly (p);
rn = Wurzeln (num)
rn = -3,2067 + 0,0000i
-0,5812 + 0,1633i
-0,5812 - 0,1633i
rd = Wurzeln (den)
rd = -0,6679 + 0,0000i
0,7777 + 0,2510i
0,7777 - 0,2510i
num = num / sum (abs (num)); % Normalisierungskoeffizienten
den = den / sum (abs (den));
Tanne = Tanne / Summe (abs (Tanne));
[h, z] = freqz (num, den, 1024);
Abbildung (1) Diagramm (z, log10 (abs (h))); ylabel ('dB') Figur (2) [h, z] = freqz (fir, 1,1024); Diagramm (z, log10 (abs (h))); ylabel ('dB')
Echo aus
quelle
Es ist verlockend zu spekulieren, dass, wenn eine Fensterantwortimpulsantwort h der Länge L durch ein Filter niedriger Ordnung (relativ zu L) "gut modelliert" werden kann, das letztere verwendet werden kann, um das FIR-Filter über seine ursprüngliche Länge hinaus zu extrapolieren.
Was sind die praktischen Vor- und Nachteile der Verwendung von Prony (Zeitbereich) gegenüber der Verwendung von Invfreqz (Frequenzbereich)?
-k
quelle