mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Problem mit Filterbank


Autor: _GastGast_ (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Peter26 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: _GastGast_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Caveman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: _GastGast_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Caveman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.