FIR-Filterkoeffizienten finden?

Gast #4532933
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?
Angehängte Dateien:
#4532967
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
#4533115
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.
Gast #4533175
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!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.