FIR Filter Design: Fenster gegen Parks McClellan und Least Squares


21

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.

Bildbeschreibung hier eingeben


2
ich könnte vorschlagen, Kaiser -windowed sinc mit firpm()und zu vergleichen firls().
Robert Bristow-Johnson

Antworten:


16

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.

Bildbeschreibung hier eingeben

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.


Gute Antwort Matt- Paar Klarstellungen / Fragen: Können Sie sich in Bezug auf die Komplexität ein konkretes Beispiel ausdenken? Ich kann sehen, dass dies ein Problem bei der Implementierung ist, aber bei der Ermittlung der Koeffizienten kann ich mir keinen Grund vorstellen, warum ich das Design auf einer minderwertigen Plattform ausführen würde (daher meine Frage). Bezüglich des Vergleichs sind die kleinsten Quadrate eindeutig besser; Für die gleiche Welligkeit und den gleichen Übergang erhalten Sie eine bessere Stop-Band-Dämpfung. Ich hatte das Durchlassband vergrößert, um es den beiden anzupassen. Die Kante ist etwas größer, da ich aufgehört habe zu passen, aber näher zusammenpassen könnte, um abzuschließen.
Dan Boschen

2
@DanBoschen: Natürlich erfolgt das Design in den meisten Fällen offline, und Komplexität spielt keine Rolle. Ich bin jedoch auf Anwendungen gestoßen, bei denen die Filter quasi in Echtzeit neu entworfen werden mussten (das war eine Beamforming-Anwendung), so dass Sie das Problem der Komplexität haben.
Matt L.

1
Und was die tatsächliche Einsparung der Anzahl von Armaturen durch ein optimales Design im Vergleich zu einem Fensterdesign betrifft, so sind die Ergebnisse, die ich gesehen habe, oft enttäuschend. Oft sind es nur 1 oder 2 Taps, was für viele Implementierungen keinen großen Unterschied macht.
Matt L.

1
OK, für Offline-Designs und wenn sich herausstellt, dass die numerische Stabilität kein Problem darstellt (für dieses spezielle Design ist dies im Allgemeinen weiterhin ein Problem), ist das Fenster nicht sinnvoll. Im Allgemeinen können wir uns jedoch nicht immer auf Offline-Designs verlassen, und vor allem können wir numerische Probleme nicht immer vermeiden. Daher denke ich, dass das Wort "veraltet" immer noch ein bisschen zu stark ist.
Matt L.

3
Sehr gut gesagt. Denken Sie daran, dass es beim Engineering darum geht, eine Implementierung zu finden, die Ihren Anforderungen entspricht. Die Fenstermethode ist einfach zu implementieren und funktioniert immer. Andere Methoden haben kompliziertere Implementierungen und können Fälle aufweisen, in denen es schwierig ist, mit ihnen zu arbeiten. Ich habe mit mehreren Systemen gearbeitet, die Filter im laufenden Betrieb entwerfen müssen, und die Fenstermethode ist die richtige Wahl für diese Situationen.
Jason R

7

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.


1
Ja, guter Punkt @ hotpaw2, die Welligkeit des Durchlassbereichs führt zu Intersymbolstörungen (nachlaufende und nachlaufende Echos). Vielen Dank
Dan Boschen

2
Wir haben 2003 auf comp.dsp über Parks-McClellan vor und nach dem Echo gesprochen . Alexey Lukin hat ein minimales MATLAB-Beispiel gepostet:, 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.
Olli Niemitalo

6

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):

Sinc
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:

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
c0 = signal.remez(14, [0, 3500.0/8000], [1])
c = np.zeros(c0.size*2-1)
c[0::2] = c0
c[c0.size-1] = 1
freq, response = signal.freqz(c)
plt.semilogy(freq/(2*np.pi), np.abs(response))
plt.show()
plt.plot(range(-c0.size+1, c0.size, 1), c, 'x')
plt.grid(True)
plt.show()

Figur 2.
Figure 2. Koeffizienten des Halbbandfilters, der indirekt mithilfe von Python entwickelt wurde scipy.signal.remez.

Figur 3.
Abbildung 3. Frequenzgangdiagramm der Amplitude des Halbbandfilters, das indirekt unter Verwendung von entwickelt wurde scipy.signal.remez.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.