mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Filterdesign lernen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von KarlD (Gast)


Bewertung
0 lesenswert
nicht lesenswert
N'abend!

Aktuell versuche ich mich gerade etwas mit FIR-Filtern.
Dabei nutze ich den FilterDesigner der bei der MATLAB DSP Toolbox 
beiliegt.
Ich habe gelesen, dass -60dB als Stopband-Unterdrückung schon sehr gut 
ist und sich in Hardware nur mit großem Aufwand erreichen lässt.
Bei einem Tiefpass mit den Durchlass- und Sperrfrequenzen von 2,7k und 
3k und einer Abtastrate von 48k errechnet mir Matlab einen Filter mit 
mehr als 300 Taps. Dabei hatte mein Professor vor ein paar Wochen noch 
erwähnt, dass oft der Fehler gemacht wird mit zu optimistischen Angaben 
zu arbeiten und so auf paar hundert oder gar tausend Taps kommt. Diese 
sehen zwar schön aus, lassen sich dann aber auf Mikrocontrollern eher 
weniger realisieren (wenn es um die Verarbeitungsgeschwindigkeit geht). 
Selbst bei einer Unterdrückung von -30dB komme ich aber noch auf knapp 
200 Taps. Ich frage mich, ob ich etwas grundsätzlich falsch mache?
Als Design Method habe ich Equiripple ausgewählt bzw. es war schon 
vorausgewählt. Die anderen machen es aber auch nicht besser.

von Guest (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Naja 300Hz von Pass zu Stop sind halt schon eine Hausnummer das sind ja 
ca. 90db/dec wenn du da 30db ansetzt.

von Jürgen S. (engineer) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Eigentlich ist es einfach: Randbedingungen erfassen und in den 
Designprozess einfließen lassen.

Randbedingungen:
- Designzeit
- Modularität
- Erweiterbarkeit
- Flexbilität

- Rechenzeit
- Rechengeschwindigkeit

- Echtzeitfähigkeit
- Echtzeitänderungungsfähigkeit

- Resourcenverbrauch
- Stromverbrauch


Siehe auch
Beitrag "Re: Vivado und MATLAB"
Abschnitt "Praktisches Ausprobieren"

von Dergute W. (derguteweka)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

So'n Filterdesign mit ner Toolbox ist halt eine Holzhammermethode. Die 
geht schon immer irgendwie, ist aber nicht immer "schoen". Ich wuerd's 
so aus'm Handgelenk raus mit 2 Teilfiltern loesen. Einem Filter F1, das 
durch Einfuegen von diversen Nullen einen periodischen Frequenzgang, 
aber dadurch auch steile Flanken hat, und einem zweiten Filter, was dann 
enspannter ist, und nur Sperrdaempfung "weiter hinten" machen muss. Die 
20 als Filterordnung ist einfach nur mal ein Anfangswert.

Also so z.B.:
f1=(firls(20,[0 0.1125*4 0.125*4 1],[1 1 0 0]));
uf1=upsample(f1,4,0);

f2=(firls(20,[0 0.1125 0.5-0.1125 1],[1 1 0 0]));

freqz(conv(uf1,f2));

Das ganze wird dann ein Filter, was 40MACs/cycle braucht, und da wird 
man dann wahrscheinlich auch noch was mauscheln koennen.
Vielleicht geht's mit 3 Teilfiltern noch schoener, aber das ist dann 
halt etwas experimentieren...Also das Gegenteil von Toolbox.

Gruss
WK

von Helmut S. (helmuts)


Bewertung
0 lesenswert
nicht lesenswert
Wenn du den Übergang weniger steil machst (2700Hz,3300Hz), dann 
benötigst du nur die Hälfte der Koeffizienten.
Wenn man statt 48000Hz mit 24000Hz arbeitet, dann halbiert sich auch die 
Zahl der Koeffizienten. Das ginge mit einem Multiratefilteransatz.
https://de.mathworks.com/help/dsp/ug/multirate-filters.html

Beachte auch den Ripple im Durchlassbereich. Da möchte man nicht gerade 
1dB haben. 1dB = 10^(1/20) entspricht 12% ripple im Durchlassbereich. 
Bei Audio ist das vermutlich egal, bei einem Messgerät eher nicht.

: Bearbeitet durch User
von Christoph M. (mchris)


Bewertung
0 lesenswert
nicht lesenswert
Bitte Impulsantwort und Frequenzgang als Bild posten.

von Gustl B. (gustl_b)


Bewertung
1 lesenswert
nicht lesenswert
Guck dir mal pyfda an.

von Jürgen S. (engineer) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Helmut S. schrieb:
> Beachte auch den Ripple im Durchlassbereich. Da möchte man nicht gerade
> 1dB haben. 1dB = 10^(1/20) entspricht 12% ripple im Durchlassbereich.
> Bei Audio ist das vermutlich egal, bei einem Messgerät eher nicht.
Das ist auch beim Audio nicht wirklich egal :-) Es ist nur oft nicht 
anders zu machen. Mikrofon- und Lautsprecherkennlinien müssen 
beispielsweise sehr aufwändig hingebogen werden, um 1dB Abweichung zu 
unterschreiten.

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.

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