Forum: Digitale Signalverarbeitung / DSP / Machine Learning Problem mit Filterbank


von _GastGast_ (Gast)


Angehängte Dateien:

Lesenswert?

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

von Peter26 (Gast)


Lesenswert?

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

von _GastGast_ (Gast)


Lesenswert?

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

von Caveman (Gast)


Lesenswert?

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

von _GastGast_ (Gast)


Lesenswert?

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

von Caveman (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.