Das berühmte http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt bietet eine Reihe von [echten] Biquad-Filter-Berechnungsformeln, die im Allgemeinen gut funktionieren.
Wenn sich die Frequenz des Filters jedoch der Nyquist-Frequenz nähert, wird die Q-Spezifikation (Bandbreitenspezifikation) eines Filters stark verzerrt - normalerweise schrumpft sie stark (obwohl der Autor erwähnte, dass er eine notwendige Vorverzerrung durchgeführt hat).
Ich bin auf der Suche nach Filterformeln, die keine so starke Bandbreitenverzerrung aufweisen. Ich benötige Peaking / Bell-, Bandpass-, Tiefpass-, Hochpass-, High-Shelf- und Notch-Filter. Ich weiß, dass dies möglich ist, da ich zuvor eine Peaking- / Bell- / Bandpass-Filterformel mit weniger Verzerrung gekauft habe, aber sie sind immer noch nicht perfekt und ich benötige andere Filtertypen.
Ich bin also auch bereit, für die Lösung zu bezahlen, wenn der Preis stimmt.
Wenn man mich alternativ auf einen Optimierungsalgorithmus verweisen könnte, der mit Z-Domain-Filtern funktioniert, wäre das auch großartig. Leider funktionieren die meisten üblichen Optimierungsalgorithmen im Z-Bereich nicht gut - sie können einen Parametersatz nicht optimieren, um ihn an einen gewünschten Frequenzgang anzupassen (wahrscheinlich aufgrund periodischer Funktionen, die zur Berechnung des Frequenzgangs verwendet werden).
quelle
Antworten:
Hier ist ein kurzer Blick darauf, wie die 5 Freiheitsgrade für den parametrischen EQ angezeigt werden können. Ich nehme an, was Knud Christensen von tc electronic vor etwa einem Jahrzehnt auf einer AES-Tagung und diesem Patent erfunden hat .
Vergessen Sie also das Kochbuch (und die darin enthaltenen Probleme mit Q und Bandbreite) und betrachten Sie (in der S-Ebene) den parametrischen EQ als die Summe eines Bandpassfilters (mit einem Wert) parallel zu einem Draht:Q.
Das sind 4 Knöpfe zum Drehen. Ein weiterer Knopf zum Hinzufügen (ohne die Filterreihenfolge zu erhöhen) und wir werden mit dem Hinzufügen weiterer unabhängiger Parameter fertig sein.
Was also Knud hat hier, dass „Draht“ ersetzen (das „nachlauf “ in der Übertragungsfunktion) mit einem Prototyp - Shelving - Filter, müssen die gleichen Pole haben, die gleiche und als BPF, so dass der Nenner die ist gleich. Die Übertragungsfunktion dieses Regals ist:1 Q. ω0
Dabei ist und die Verstärkungsdifferenz des Regals in dB. Dies ist es, was die Verstärkung bei Nyquist so ausgleicht, dass sie sich von der Verstärkung bei DC unterscheidet. Nach der bilinearen Transformation wird Nyquist durch dB verstärkt und die Verstärkung bei DC bleibt unverändert. Wie der Boost-Parameter kann der Parameter entweder positiv oder negativ sein. ist die lineare Verstärkung bei Nyquist.R ≜10t i l t20 t i l t t i l t dB. t i l t G0⋅ R.
Füge das alles zusammen und du bekommst:
Egal wie Sie das betrachten, dies hat 5 Freiheitsgrade und diese 5 Biquad-Koeffizienten werden vollständig aus diesen 5 Parametern definiert. Es spielt keine Rolle, ob Sie mit der blinearen Transformation oder der Trapezregel (praktisch dasselbe) oder einer anderen Methode, die die Reihenfolge des Filters nicht ändert, von nach abbilden . Möglicherweise müssen Sie die Definition von oder Bandbreite verfälschen. Möglicherweise müssen Sie und / oder kompensierens z Q. ω0 Q. für Frequenzverzerrungseffekte (wie Sie sie mit der blinearen Transformation erhalten), aber wenn Sie viel Geld für etwas bezahlt haben, das Ihnen einen IIR-Filter 2. Ordnung bringt, spielt es keine Rolle, ob Sie ihn mit einem direkten Formular oder einem transponierten direkten Formular oder implementieren Lattice oder Normalized Ladder oder Hal Chamberlins Zustandsvariable oder Andrew Simpsons Modellierung des linearen Analogons mit trapezförmiger Integration erhalten schließlich 5 Koeffizienten, die auf diese 5 unabhängigen Parameter abgebildet werden können. Es ist alles das Gleiche. ob Sie Geld für eine Lizenz bezahlt haben oder nicht. Die Mathematik ist stärker als alle Behauptungen von wem auch immer Sie lizenzieren.
Gerade FYI, ich gelöst , wo die wahre Spitze oder ein Tal Frequenz ist , wenn es ist eine , die nicht Null ist. Die Frequenz, bei der der Gipfel oder das Tal durch die Neigung angestoßen wurde, beträgt:t i l t
Sie können sehen, dass wenn , dann und folglich . Die Spitzenverstärkung möglicherweise ebenfalls ein wenig angepasst werden, und das muss noch ausgearbeitet werden. Eine gute erste Vermutung wäre oder vielleicht .t i l t = 0 R = 1 ωGipfel=ω0 GBoost GBoost←GBoostR.√ GBoost←GBoost- ((R.- -- -√- 1 )
quelle
@Jazz, eines der Dinge, die wir in der Elektrotechnik gelernt haben, ist, dass jede Ordnung von Differentialgleichungen in eine Menge (oder ein "System") von Differentialgleichungen 1. Ordnung zerlegt werden kann. also , wenn Trapezintegration, mit dem gleichen „Zeitschritt“ verwendet wird konsequent Integrale für alle kontinuierliche Zeit für eine - ter Ordnung linearen ODE, können Sie , dass bis in der Büste erster Ordnung Differentialgleichungen. Betrachten Sie dann nur eine dieser Diff-Gleichungen 1. Ordnung:Δ t N. N.
Erwägen Sie erneut, einen Kondensator zu emulieren. Die Abtastperiode sei und die in der Trapezregel verwendete " ".T.=1fs Δ t
oder
in der s-domain ist es
Trapazoidale Integration zu diskreten Zeiten ist also:
oder als zeitdiskrete Abtastwerte
Anwenden der Z-Transformation
Auflösen nachV.
sieht aus wie wir ersetzen
oder
Genau das macht das Bilineare ohne Kompensation von Frequenzverzerrungen.
quelle
Mithilfe von Optimierungsmethoden können wir den Frequenzgang eines Digitalfilters näher an den analogen Zielfilter bringen.
Im folgenden Experiment wird ein Bandpassfilter 6 Ordnung mit Adam optimiert, einem Optimierungsalgorithmus, der häufig beim maschinellen Lernen verwendet wird. Frequenzen über dem Durchlassbereich sind von der Kostenfunktion ausgeschlossen (zugewiesenes Nullgewicht). Die Antwort des optimierten Filters wird für Frequenzen sehr nahe an Nyquist höher als das Ziel, aber diese Differenz kann durch das Anti-Aliasing-Filter der Signalquelle (ADC oder Abtastratenwandler) ausgeglichen werden.
quelle
tensorflow-gpu
1.12.0 konvergiert die Optimierung nicht, sondern divergiert.tensorflow
1.12.0 funktioniert besser, aber die Optimierung konvergiert aufgrund der Wahl des Optimierers (Adam) und seiner Lernrate und möglicherweise aufgrund der Art und Weise, wie die Kostenfunktion formuliert wird, nicht vollständig. Ich werde diese Antwort mit einem Kopfgeld versehen, da sie einen modernen Ansatz zur Optimierung von Koeffizienten zeigt: die automatische Differenzierung. Ich würde immer noch gerne sehen: stabilere Optimierung und Anordnung der erhaltenen Koeffizienten für die Echtzeitnutzung (z. B. Parameter-Sweeps).Ich habe mir ein Design für den 10-dB-Peaking-EQ ausgedacht. Ich habe 20 Filter mit Mittenfrequenzen zwischen 500 Hz und 16 kHz (Fs = 48 kHz) ausgewählt. Das obere Diagramm unten zeigt das Design gemäß dem Audio-EQ-Kochbuch von RBJ , das gut ist, aber zu Bandbreitenverzerrungen führt, wenn sich die Mittenfrequenzen Nyquist nähern. Das untere Diagramm ist das neue Design, bei dem die Filter sehr genau mit den analogen Prototypfiltern übereinstimmen:
Und so sehen die neuen Notch-Filter im Vergleich zum Kochbuch aus (Bandbreite = 4 Oktaven, höchste kHz):f0= 23
Die folgende Abbildung zeigt ein Tiefpassfilterdesign ( , kHz, kHz). Beachten Sie, dass das neue Design dem analogen Prototyp nahe kommt und aus diesem Grund nicht als herkömmliches Tiefpassfilter funktioniert (bei Nyquist hat es keine Null):Q = 2 f0= 16 F.s= 48
quelle