Wie kann ich einen sehr schmalen Filter entwerfen?

15

Angenommen, ich habe ein Audiosignal mit Hz abgetastet und möchte einen Tiefpassfilter entwerfen, der alles unter ~ 60 Hz isoliert . In der digitalen Welt ist dies ein Tiefpassfilter mit einem Durchlassbereich von [ - π4800060. Auch das Übergangsband sollte angemessen sein. Der Aufbau eines FIR-Filters dafür kann viele Abgriffe haben, die auf lange Sicht die Präzision beeinträchtigen. Ein IIR-Filter ist ebenfalls nicht ideal, da Audio in Filtern unter einem nichtlinearen Phasengang leidet. Wenn das Signal nicht gefiltert, dann umgekehrt und erneut gefiltert wird, ist dies keine Option.[-π400,π400]

Könnte eine Wavelet-Transformation diesbezüglich besser sein als eine reguläre In-One-Go-Filterung?

Phonon
quelle
Gibt es einen Grund, warum Sie nicht dezimieren möchten?
Lorem Ipsum
Nein, Dezimieren ist in Ordnung, solange ich bekomme, was ich will.
Phonon
1
Was ist ein "vernünftiges" Übergangsband? Das wird die Reihenfolge Ihres Filters bestimmen. Wenn Ihr Stoppband beispielsweise bei 300 Hz beginnt, sind Sie wahrscheinlich in ziemlich guter Verfassung. Wenn Sie eine hohe Dämpfung von etwa 60,1 Hz wünschen, wird es lange dauern. Lange FIR-Filter sind jedoch nicht unbedingt schlecht
Jason R
5
Sie benötigen eine tatsächliche Filterspezifikation, sonst ist die Frage bedeutungslos. Geben Sie die akzeptable Welligkeit des Durchlassbereichs, die Sperrbereichsunterdrückung, die Breite des Übergangsbands usw. an.
Paul R,
Macht Sinn. Wird besorgt.
Phonon

Antworten:

20

Wenn Sie die Engineering-Zeit optimieren und sich auf einer Plattform befinden, die große FFTs gut unterstützt (dh kein Fixpunkt), befolgen Sie die Empfehlungen von hotpaw2 und verwenden Sie die schnelle Faltung . Es ist viel leistungsfähiger als eine naive FIR-Implementierung und sollte relativ einfach zu implementieren sein.

Wenn Sie andererseits etwas Zeit haben, um die beste Implementierung zu erzielen , oder wenn Sie sich auf einer Festkomma-Plattform befinden, sollten Sie eine Multiraten- Down-Filter-Up-Subtrahier-Struktur verwenden. Aber es ist etwas schwieriger, alles richtig zu machen.

Ich habe Zugriff auf vertrauenswürdige und hochoptimierte Implementierungen von Tools für schnelle Faltung und Multiraten-Filterung. Die schnelle Faltung dauert etwa dreimal länger, um eine im Vergleich zur Multiratenstruktur gleichwertige Signalleistung zu erzielen. Darüber hinaus ist das sogar auf einer Gleitkommaplattform. Ab einem festen Punkt dsp würde sich die Lücke erheblich vergrößern.

Allgemein gesagt:

Down-Konvertierung:

Verwenden Sie 8 Halbband-Dezimierungsfilter, um Ihr 48-kHz-Signal in ein 187,5-Hz-Signal umzuwandeln. Die erste Stufe dieses Downsamplings kann ein sehr breites Übergangsband aufweisen, das es ermöglicht, dass die Energie einen Alias ​​aufweist, solange sie nicht in den Bereich unter 60 Hz zurückkehrt. Mit fortschreitenden Stufen muss die Anzahl der Abgriffe erhöht werden, sie werden jedoch mit zunehmend niedrigeren Abtastraten angewendet, sodass die Gesamtkosten für jede Stufe gering bleiben.

Filterung:

Führen Sie Ihre enge Filterung bei 60 Hz durch, um die Energie zu erhalten, die Sie eventuell subtrahieren möchten. Es gibt einen doppelten Vorteil, wenn Sie Ihre Filterung mit der niedrigen Rate durchführen:

  1. Die Übergangsbandbreite von 1 Hz ist in Bezug auf die digitale Frequenz bei der niedrigen Rate im Vergleich zur ursprünglichen Rate 256-mal größer. Daher ist jeder Druck auf Ihren Filter 256-mal so stark.
  2. Das Signal selbst hat eine niedrigere Rate, sodass der Filter nur 1/256 der Daten verarbeiten muss.

Up-Conversion:

Im Wesentlichen ist dies die Umkehrung der Dezimierungsstufen. Jede der 8 Interpolatorstufen verdoppelt die Rate durch Schätzen des Abtastwerts, der zwischen aufeinanderfolgenden Eingangsabtastwerten liegt. Das Übergangsband wird breiter, wenn die Abtastrate höher wird.

Subtrahieren:

Subtrahieren Sie Ihr tiefpassgefiltertes Signal mit voller Rate vom Originalsignal. Wenn Sie alle Gruppenverzögerungen richtig eingestellt haben, ist die Gesamtstruktur ein Hochpassfilter mit einer schmalen Übergangsbandbreite.

Mark Borgerding
quelle
Das ist eine fantastische Antwort. Kann ich Ihre Kommentare zu diesem Beitrag haben? dsp.stackexchange.com/questions/29655/…
richieqianle
6

Versuchen Sie es mit einem Überlappungsfilter zum Hinzufügen / Speichern von Faltungen mit der längsten FFT / IFFT, die Ihren Latenz- und Rechenleistungseinschränkungen entspricht. Sie können extrem lange FIR-Filter entwerfen, wenn Sie diese Methode mit noch längeren FFTs verwenden.

Wenn Sie den gesamten Song oder Ihre gesamte Audiosignaldatei in einer sehr langen FFT + IFFT FFT (es gibt spezielle FFT-Algorithmen für lange Vektoren, die nicht in den Cache oder RAM passen) können, müssen Sie keine FFT ausführen Überlappen Sie die Add / Save-Verarbeitung, und Sie erhalten ein sehr schmales Übergangsband.

hotpaw2
quelle
4

Es gibt eindeutig zwei Möglichkeiten: FIR & IIR. Wie bereits erwähnt, erfordert FIR eine SEHR lange Impulsantwort (1000 Taps) und ist hinsichtlich des Speichers teuer. MIPS und Latenz mit überlappendem Add / Save sind die effizienteste Wahl. Die Latenz kann jedoch ein echtes Problem sein. Wenn Sie dies als Hochpass für einen Heimkino-Subwoofer verwenden möchten, ist die Latenz so hoch, dass Sie die Lippensynchronisation mit dem Video verlieren.

IIR ist um mehrere Größenordnungen günstiger und wird daher häufig eingesetzt. Es hat zwar eine nicht flache Phasenantwort, aber in vielen Fällen ist dies kein Problem oder kann umgangen werden. Wenn Sie beispielsweise einen Hochpassfilter zum Schutz der Treiber in einer Bassbox benötigen, ist der Phasengang nicht sehr wichtig, da der Treiber, das Gehäuse und die Raumakustik den Phasengang des Gesamtsystems bestimmen. Der Filter spielt hier nur eine untergeordnete Rolle. In vielen Fällen müssen Sie auch die "relative" Phase und nicht die absolute Phase beibehalten. Angenommen, Sie möchten den Hochpass auf Signal A anwenden, aber nicht auf Signal B. Sie können einfach einen passenden Allpass auf Signal B anwenden, damit die relative Phase von A und B gleich bleibt. Die Gesamtlatenz und Gruppenverzögerung dieses Ansatzes ist immer noch viel geringer als die der FIR-Methode.

Hilmar
quelle