Hallo! Ich möchte einen FIR-Filter konstruieren, der die im Anhang gegebene Übertragungsfunktion aufweist. Ich kenne mich mit digitaler Signaltechnik so gut wie gar nicht aus, aber versuche seit ein paar Tagen einen Einstieg in das Themengebiet zu finden, aber alles was ich bisher gegoogelt und gelesen hab, scheint nicht auf mein Problem zuzutreffen. Ich hab bisher nur Anleitungen für einfache Bandpass- oder Low/Highpass-FIR-Filter gefunden, aber keinen einzigen Filter, der so einen speziellen Verlauf wie den im Anhang aufweist. Der Wert der Übertragungsfunktion soll ja nicht auf 0 abfallen sondern nur auf 0,3 und dazu hab ich bisher keinen einzigen FIR Filter bei Google gefunden. Außerdem hat bisher kein FIR Filter so eine harte Ecke wie der von mir benötigte bei 10 Hz aufweisen soll. Lässt sich so ein Filter, wie dort abgebildet überhaupt als FIR-Filter konstruieren und wenn ja wie?
Moin, Michael schrieb: > Lässt sich so ein Filter, wie dort abgebildet überhaupt als FIR-Filter > konstruieren und wenn ja wie? Ja, das geht prinzipiell. Ist halt die Frage, wie gut die Approximation dann wird, bzw. wie lange das FIR Filter wird/werden darf. Aber bei dein "Wunschfrequenzgang" sieht eher gutmuetig aus; sind ja keine grossen Hopser drinnen. Bei Matlab oder GNU Octave gibts dafuer die Funktion "fir2". Gruss WK
Du kannst dir die Filterkoeffizienten mit Octave z.B. so berechnen:
1 | pkg load signal |
2 | |
3 | frequenz=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1]; |
4 | amplitude = [1 1 0.7 0.55 0.45 0.4 0.35 0.33 0.32 0.31 0.3]; |
5 | |
6 | koeffizienten=fir2(50, frequenz, amplitude); |
7 | |
8 | [H, w]= freqz(koeffizienten); |
9 | plot(frequenz, amplitude, ";Soll;", w/pi, abs(H), ";Ist;"); |
Die Frequenz läuft von 0 bis 1, wobei 1 deiner Nyquistfrequenz entspricht. Im Beispiel hat das Filter 50 Koeffizienten. Die Funktion 'fir2' ist Teil des Signal-Package.
Scipy kann das auch: http://docs.scipy.org/doc/scipy/reference/signal.html#filter-design Ist allerdings erfahrungsgemäß ein bisschen frickelig bis es dann wirklich so ist wie man es will.
Vielen, vielen Dank euch allen für die schnellen Antworten! Ich habe echt schon Tage lang gerätselt und bin fast verzweifelt an dem Problem und mit eurer Hilfe und GNU Octave hab ichs innerhalb von paar Stunden lösen können! Saustark das Forum hier!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.