Bandpass Filter mit FFT/IFT

Gast #4570022
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ß
#4570038
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.
#4570078
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
Gast #4570908
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.
#4571226
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren