Forum: Digitale Signalverarbeitung / DSP / Machine Learning Bandpass Filter mit FFT/IFT


von Bartholomäus (Gast)


Lesenswert?

Hallo zusammen,

ich versuche in Matlab gerade einen Bandpass zu realisieren mit dem 
fdatool. Hier hat man die Möglichkeit verschiedenste IIR und FIR Filter 
zu dimensionieren.

Heute mittag bin ich aber auf folgendes Beisiel getroffen
http://www.mathworks.com/matlabcentral/fileexchange/25017-fft-filter-clean-your-signals-and-display-results-

Das Beispiel führt zuerst eine FFT, danach werden alle nicht gewünschten 
Frequenzanteile entfernt und schließlich eine inverse FFT durchgeführt. 
Was bleibt ist ein "perfekt" gefiltertes Zeitsignal.

Das Ergebnis ist super. Ich suche aktuell noch nach dem Haken und ich 
frage mich ob diese Methode irgendwelche Nachteile gegenüber den IIR und 
FIR Filtern besitzt?

Ich erinnere mich, dass es bei der FFT zu beachten gibt, welche Anzahl 
an Abtastpunkten N man nimmt. Diese sollte nur ganzzahlige Vielfache der 
Periodendauer betragen.

Die Anzahl der Abtastpunkte N für die FFT im Beispiel setzt sich aus der 
Länge des übergebenen Signalarrays zusammen. Wenn ich dem Programm also 
ein Signal mit 10 Sinusschwingungen übergebe dann sollte das ja 
unproblematisch sein, richtig?

Gruß

von Frank (Gast)


Lesenswert?

Thema Leck-Effekt bzw. Fensterung...

von Sven B. (scummos)


Lesenswert?

Wie wendest du denn einen FIR/IIR-Filter normalerweise an? Ich mache das 
genau so, FFT, Multiplikation, IFFT. Ich dachte auch dass das die 
übliche Methode ist. Bin aber kein Experte ...

Natürlich kannst du die Faltung auch anders ausrechnen, aber das ist 
halt i.d.R. langsamer.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Bartholomäus schrieb:
> Wenn ich dem Programm also
> ein Signal mit 10 Sinusschwingungen übergebe dann sollte das ja
> unproblematisch sein, richtig?

Ja klar. Aber fuer solche Signale braucht man auch kein Filter. Diese 
Methode mit erst FFT, dann am Spektrum rumbiegen, wie man's gerne haette 
und dann Ruecktransformation ist halt ein Riesen-Rechenaufriss. Das kann 
man natuerlich machen, wenn eh' schon irgendwer die Kohle fuer die 
Matlablizenz abgedrueckt hat und sonst alles wurscht ist.
Wenn man aber irgendein verkaufbares Produkt entwickeln muss, wo auf 
guenstiger Hardware moeglichst schnell und energiesparend gefiltert 
werden muss, kann ich mir so eine Loesung einfach nicht vorstellen.
Nochdazu haben diese Filter ebene FFT bedingte Dreckeffekte, die z.b. 
dann rauskommen, wenn eben nicht 10 Sinuesse ge-FFT-t werden, sondern 
mal nur 9.5. Oder 9.2 oder 3.3 oder...oder...

Gruss
WK

von Bartholomäus (Gast)


Lesenswert?

Ok, danke für die Antworten. Das mit dem Leak-Effekt und mit dem 
Rechenaufwand habe ich soweit verstanden.

Aber nur zum Verständnis: Beim Einsatz eines FIR-Filters kann es doch 
genauso zu diesem Effekt kommen? Matlab bietet mir bei diesen Filtern ja 
sogar die Möglichkeit einer Fensterung an.

von Michael W. (Gast)


Lesenswert?

Die FFT ist doch nichts anderes, als eine Summe überlagerte 
Sinusfunktionen als Multiplikator. Das sind die Frequenzen, die Du haben 
willst. Und das Ganze ist ein FIR-Filter.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Bartholomäus schrieb:
> Aber nur zum Verständnis: Beim Einsatz eines FIR-Filters kann es doch
> genauso zu diesem Effekt kommen? Matlab bietet mir bei diesen Filtern ja
> sogar die Möglichkeit einer Fensterung an.

Naja, das Gibbssche Phaenomen lugt bei der Signalverarbeitung um jede 
Ecke.

Wenn man ein FIR Filter stumpf mittels sinc-Funktion designt, dann kann 
man natuerlich gucken, ob man's mit irgendeinem grad modernen Fenster 
schoener hinkriegt.
Wenn man das Filter aber z.b. per firls() oder remez() designt, 
braucht's keine extra Fensterfunktion mehr.

Gruss
WK

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.