Gibt es irgendwelche Vorteile, einen Fensteransatz gegenüber Parks-McClellan (hier weiter als PMcC abgekürzt) oder Least-Squares-Algorithmen für den FIR-Filterentwurf eines Tiefpassfilters zu verwenden? Nehmen Sie mit der heutigen Rechenleistung an, dass die Komplexität der Algorithmen selbst kein Faktor ist.
In dieser Frage wird PMcC nicht mit den kleinsten Quadraten verglichen, sondern speziell, ob es einen Grund gibt, eine Fenster-FIR-Entwurfstechnik anstelle dieser Algorithmen zu verwenden, oder ob Fenstertechniken zum Filtern des Entwurfs von diesen Algorithmen überholt und didaktischen Zwecken überlassen wurden.
Im Folgenden ist ein Vergleich aufgeführt, bei dem ich ein Hamming-Fenster mit meinem bevorzugten Designansatz mit Least-Squared verglichen hatte, wobei ich die gleiche Anzahl von Gewindebohrern verwendet habe. Ich habe das Durchlassband im Least-Squared-Ansatz erweitert, um es dem Hamming-Fenster sehr nahe zu bringen, und in diesem Fall war klar, dass das Least-Squared eine Outperformance erzielen würde (was eine signifikant höhere Sperrband-Unterdrückung bietet). Ich habe dies nicht bei allen Fenstern getan, was mich zu der Frage führt, ob Sie jemals PMcC und kleinste Fehlerquadrate übertreffen könnten oder ob es andere Anwendungen für ein FIR-Tiefpassfilter gibt, bei denen ein Fensteransatz vorzuziehen wäre.
quelle
firpm()
und zu vergleichenfirls()
.Antworten:
Ich bin damit einverstanden, dass die Konstruktionsmethode für Fensterfilter nicht mehr zu den wichtigsten Konstruktionsmethoden gehört und dass sie in der Tat in traditionellen Lehrbüchern möglicherweise aus historischen Gründen überrepräsentiert ist.
Ich denke jedoch, dass seine Verwendung in bestimmten Situationen gerechtfertigt sein kann. Ich bin nicht einverstanden, dass die Komplexität der Berechnungen kein Thema mehr ist. Dies hängt von der Plattform ab. Wenn wir an unserem Desktop-Computer sitzen und einen Filter entwerfen, müssen wir uns in der Tat nicht um die Komplexität kümmern. Auf bestimmten Plattformen und in Situationen, in denen das Design quasi in Echtzeit ausgeführt werden muss, ist die Komplexität der Berechnungen ein Problem, und eine einfache suboptimale Designtechnik wird einer optimalen Technik vorgezogen, die viel komplexer ist. Als Beispiel habe ich einmal an einem System für die Strahlformung gearbeitet, bei dem der Filter (Strahlformer) im laufenden Betrieb neu entworfen werden musste, und daher war die Komplexität der Berechnungen in der Tat ein Problem.
Ich bin auch überzeugt, dass wir uns in vielen praktischen Situationen nicht um den Unterschied zwischen dem optimalen und dem suboptimalen Design kümmern müssen. Dies gilt umso mehr, wenn Festkommaarithmetik mit quantisierten Koeffizienten und quantisierten Ergebnissen arithmetischer Operationen verwendet werden muss.
Ein weiteres Problem ist die numerische Stabilität der optimalen Filterentwurfsmethoden und ihrer Implementierungen. Ich bin auf mehrere Fälle gestoßen, in denen der Parks-McClellan-Algorithmus (ich sollte sagen, die von mir verwendete Implementierung ) einfach nicht konvergierte. Dies ist der Fall, wenn die Spezifikation wenig sinnvoll ist, es aber auch bei absolut vernünftigen Spezifikationen möglich ist. Gleiches gilt für die Entwurfsmethode der kleinsten Quadrate, bei der ein System linearer Gleichungen gelöst werden muss, was zu einem schlecht konditionierten Problem werden kann. Unter diesen Umständen wird Sie die Fenstermethode niemals im Stich lassen.
Eine Bemerkung zu Ihrem Vergleich zwischen der Fenstermethode und dem Entwurf der kleinsten Quadrate: Ich glaube nicht, dass dieser Vergleich eine generelle Überlegenheit der Methode der kleinsten Quadrate gegenüber der Fenstermethode zeigt. Zunächst scheinen Sie die Stop-Band-Dämpfung zu betrachten, die für keine der beiden Methoden ein Entwurfsziel darstellt. Die Fenstermethode ist in keiner Weise optimal, und das Design mit den kleinsten Quadraten minimiert die Stoppbandenergie und kümmert sich überhaupt nicht um die Größe der Stoppbandwelligkeit. Was zu sehen ist, ist, dass die Durchlassbandkante des Fensterdesigns größer ist als die des Designs mit den kleinsten Quadraten, wohingegen die Stoppbandkante kleiner ist. Infolgedessen ist die Übergangsbandbreite des durch Fensterung entworfenen Filters kleiner, was zu höheren Sperrbandwelligkeiten führt. Der Unterschied in der Übergangsbandbreite kann klein sein, Filtereigenschaften reagieren jedoch sehr empfindlich auf diesen Parameter. Es besteht kein Zweifel, dass der Filter für kleinste Quadrate den anderen Filter übertrifft, wenn es darum geht, die Bandenergie zu stoppen, aber das ist nicht so einfach zu erkennen wie die Welligkeit. Und es bleibt die Frage, ob dieser Unterschied tatsächlich einen Unterschied in der praktischen Anwendung ausmachen würde.
Lassen Sie mich Ihnen zeigen, dass solche Vergleiche oft so aussehen, wie man es gerne hätte. In der folgenden Abbildung vergleiche ich ein optimales Tiefpassfilter mit den kleinsten Quadraten, das mit der Matlab / Octave-Funktion
firls.m
(blau) erstellt wurde, mit einem Tiefpassfilter, das mit der Fenstermethode unter Verwendung eines Kaiser-Fensters (rot) erstellt wurde.Aus der Abbildung könnte man sogar schließen, dass der durch Fensterung entworfene Filter etwas besser ist als der optimale Filter mit den kleinsten Quadraten. Dies ist natürlich unsinnig, da wir nicht einmal "besser" definiert haben und der Filter für kleinste Quadrate einen kleineren mittleren quadratischen Approximationsfehler haben muss . Sie sehen das jedoch nicht direkt in der Abbildung. Dies ist jedenfalls nur eine Begründung für meine Behauptung, dass man bei solchen Vergleichen sehr vorsichtig und klar sein muss.
Zusammenfassend bin ich der Meinung, dass das Erlernen für DSP-Studenten nicht nur aus rein didaktischen Gründen nützlich ist, sondern dass trotz der technologischen Fortschritte seit den 1970er Jahren die Verwendung der Fenstermethode in bestimmten praktischen Szenarien gerechtfertigt sein kann, und ich denke, dass dies nicht der Fall ist sehr bald ändern.
quelle
Windowed Sinc-Filter können adaptiv on the fly auf Prozessoren generiert werden, die kaum leistungsfähig genug sind, um das zugehörige FIR-Filter auszuführen. Fenster-Sinc-Filter können in begrenzter Zeit erzeugt werden.
Die Erzeugung einiger einfacher Sinc-Filter mit Fenstern kann in wenigen Codezeilen vollständig beschrieben (und auf Malware usw. untersucht) werden, im Gegensatz zur blinden Verwendung einer undurchsichtigen Toolbox.
Zum Erklären eines Sinc-Filters mit Fenstern ist weniger mathematischer Hintergrund erforderlich als zum Codieren eines PMcC-Filtergenerators von Grund auf.
Die gleichen Welligkeiten im Frequenzgang eines PMcC-Filters können Artefakte im Zeitbereich verursachen, die sich von den Artefakten unterscheiden (und möglicherweise weniger wünschenswert sind), die von einem einfachen Fensterfilter erzeugt werden.
quelle
f=[0 0.49 0.51 1]; a=[1 1 0 0]; b=remez(300,f,a)
das auch in Octave läuft. Eine Erklärung ist, dass bei sehr steilen Filtern die Welligkeiten regelmäßig genug sein können, um einem Kosinus zu ähneln. Das Zeitbereichsäquivalent des Frequenzbereichs-Cosinus wären die zwei impulsiven Echos.Ich zeige hier einen Vorteil eines Fensterdesigns und einen Trick, um den gleichen Nutzen von Parks-McClellan zu erzielen.
Bei der Fensterung von Halbband-, Viertelband- usw. Filtern bleiben die Zeitdomänen-Nullen der skalierten Sinusfunktion erhalten, bei der es sich um das ideale prototypische Tiefpassfilter handelt. Die Nullen landen in den Koeffizienten, was den Rechenaufwand der Filter verringert. Für ein Halbbandfilter gibt das Fensterdesign einen Filter mit jedem geraden Koeffizienten 0 mit Ausnahme des mittleren Koeffizienten (der auch als gerade betrachtet wird):
Abbildung 1. Die um den Faktor 2 horizontal gedehnte Sinc-Funktion ist das prototypische Halbband-Tiefpassfilter mit einer Verstärkung von 2, das sich zum Upsampling um den Faktor 2 eignet.
Parks-McClellan / Remez kann jedoch ausgetrickst werden, um die gleichen Vorteile zu erzielen, indem ein Filter mit einer geraden Anzahl von Abgriffen mit nur einem definierten Durchlassbereich für die Verstärkung der Einheit verwendet wird. Die erhaltenen Koeffizienten werden als ungerade Koeffizienten eines längeren Filters verwendet. Der mittlere Koeffizient des längeren Filters wird auf 1 und die anderen geraden Koeffizienten auf 0 gesetzt. Dieser Filter hat eine Verstärkung von 2 im Durchlassbereich und eine symmetrische Welligkeit im Durchlass- und Sperrbereich. In Python:
Figure 2. Koeffizienten des Halbbandfilters, der indirekt mithilfe von Python entwickelt wurde
scipy.signal.remez
.Abbildung 3. Frequenzgangdiagramm der Amplitude des Halbbandfilters, das indirekt unter Verwendung von entwickelt wurde
scipy.signal.remez
.quelle