Hallo, ich wollte eine 5-Kanal-Filterbank bauen und hab dazu mehrere Filter berechnet. Meine Eckdaten sehen so aus: LP: 0...150Hz BP: 150Hz...(fc=300Hz)...450Hz BP: 450Hz...(fc=900Hz)...1350Hz BP: 1350Hz...(fc=2700Hz)...4050Hz HP: 4050Hz...24000Hz Die 3 Bandpassfilter wurden so berechnet, dass die Güte Q jeweils gleich ist und die -3dB Eckpunkte sich überlagern. Mit einem linearen Frequenzsweep, den ich mit Audiocity erzeugt hab, kamen dann die Teilbänder raus, wie man sie im angehängten Bild sehen kann. Wenn man sie überlagert, dann ist der Frequenzgang nicht linear, weil offenbar die Frequenzfilter außerhalb der -3dB-Grenze nicht schnell genug abfallen. Liegt sicher auch an den "nur" 256tap, die ich für meine FIR-Filter habe. Hat jemand eine Idee, wie man sowas sauber macht? Das, was ich im Prinzip gerne hätte, wären Filterkoeffizienten (bis max 1024tap) für einen 5-Band-Equalizer, der dann das Eingangssignal mit einigermaßen brauchbarer Frequenzlinearität wieder rekonstruiert. Sollta man meinen, dass das Trivial ist, das ist es aber definitiv nicht und ich such da schon ewig nach sowas ... Vielen Dank für das Durchlesen und für Hilfe! Grüße, GastGast
Hi, Ich kann mich jetzt natürlich auch irren ... aber es ergibt sich ja bei der Grenzfrequenz -> 2 * -3 dB = 20 log10 (2/sqrt(2) = + 3 dB ... ? Der Linkwitz Riley Filter zeigt -6 dB bei der Grenzfrequenz -> 0 dB durch die Überlappung also damit keine Anhebung. -> http://de.wikipedia.org/wiki/Linkwitz-Riley-Filter Vl. hilft dir das irgendwie weiter ... lg Peter
Danke für den Tipp, ich habs jetzt hingekriegt ... mit der Matlab DSP-Toolbox konnte man Stop-und Passband-Ecken angeben und mit einer leichten Überlappung konnte ich dann meinen Frequenzsweep ohne Dellen im Frequenzgang wieder gut rekonstruieren. Mein Problem war, dass ich das falsche Tool verwendet hatte, das irgendwie die höchste Ordnung bei gewünschter Filtergröße berechnete. Damit hat das dann nicht zusammengepasst. Grüße. gastgast
Hi, Einfach andersherum an die Sache herangehen: Nicht die Ausgangssignale überlagern, sondern die Koeffizienten überlagern. Man braucht nur EINEN 256 Tap FIR-Filter für alle 5 Bänder. Du hast ja 5 Satz Koeffizienten (je 256 Stück); die addiert man alle zusammen zu einem Satz: MyKoeffizient(i) = g1*LP1(i) + g2*Bp1(i) + g3*Bp2(i) + g4*Bp3(i) + g5*HP(i) Dabei ist "g" das jeweilige Gain für den Kanal Wenn sich das Gain für einen Kanal geändert hat muss man natürlich den Satz "MyKoeffizient" neu berechnen und dem FIR-Algo zur Verfügung stellen. Gruß Caveman
Caveman schrieb: > Einfach andersherum an die Sache herangehen: > Nicht die Ausgangssignale überlagern, sondern die Koeffizienten > überlagern. > Man braucht nur EINEN 256 Tap FIR-Filter für alle 5 Bänder. > Du hast ja 5 Satz Koeffizienten (je 256 Stück); die addiert man alle > zusammen zu einem Satz: > MyKoeffizient(i) = g1*LP1(i) + g2*Bp1(i) + g3*Bp2(i) + g4*Bp3(i) + > g5*HP(i) > Dabei ist "g" das jeweilige Gain für den Kanal Hmm ... bist du sicher, dass das richtig ist? Nicht eher die Filterkernel gewichten und dann miteinander zu einem Kernel falten? Aber das geht trotzdem nicht ... Es ist nicht wirklich ein Equalizer, weil ich die 5 Bänder für was anderes benötige. Die Frequenzen verstärken/abschwächen sind nur ein willkommendes Nebenprodukt. Ich dachte, die Frage wäre einfacher, wenn ich nach einem Equalizer fragen würde, weil sowas wohl öfters implementiert wurde ... Grüße gastgast
a) ja, bin sicher! b) bitte die tatsächliche Anwendung und das Problem möglichst genau beschreiben, alles andere ist nicht wirklich Zielführend.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.