Hallo! Ich habe mal eine "kleine" Frage. Wie kann ich von Filterkoeffizienten mittels Matlab zur Übertragungsfunktion des Filters gelangen. Beispiel: Nehmen wir an ich habe folgende filterkoeffizienten b = [0.000264 0.001595 0.004249 -0.018820 -0.026935 0.065497 0.076514 -0.124576 -0.132255 0.154638 0.154638 -0.132255 -0.124576 0.076514 0.065497 -0.026935 -0.018820 0.004249 0.001595 0.000264]. Gibt es eine Matlabfunktion womit ich die Übertragungsfunktion direkt bestimmen ggf. ploten kann? Danke für eure Hilfe mfG
Plotten kannst du sie, indem du dir noch einen "a"-Nullvektor erstellst, der die gleiche Länge wie b hat und dann ins erste Element eine 1 schreibst. Also
1 | a=zeros(1, length(b)); |
2 | a(1)=1; |
Dann kannst du mit
1 | freqz(b, a) |
den Frequenzgang plotten. Wenn du dich für die dahinterstehende Ü-Fkt im Frequenzbereich interessierst, hilft dir Matlab afaik nicht.
Vielen Dank für die Antwort, Thomas. Das ist genau was ich wollte. Was könnte mir helfen, wenn ich mich für die dahinterstehende Ü-Funktion in Frequenzbereich interessiere? Noch mal vielen Dank
Hallo Merlin, offensichtlich handelt es sich um FIR-Filterkoeffizienten. Wie Thomas schon schrieb, kannst Du die Üertragungsfunktion mit der Funktion freqz(b) oder freqz(b,1) ermitteln. Es genügt aber der Aufruf nur mit Deinen Koeffizienten, wie eben dargestellt. Du fragst nun nach der Übertragungsfunktion im Frequenzbereich. Das ist aber genau die Ausgabe von freqz(b), allerdings in normierter Form, da Deine Abtastrate nicht bekannt ist. Die Abzisse ("X-Achse") ist von 0...1 beschriftet, wobei die 1 für die Nyquistfrequenz steht. Bei z.B. 10kHz Abtastrate, wären das 5kHz. Die Mittenfrequenz Deines Bandpasses ist normiert bei 0.5, also bei 2.5khz für den Fall mit 10kHz Abtastrate. OK? Du kannst die Darstellung auch gleich mit direkt ablesbaren Frequenzen erzeugen, wenn Du wie folgt vorgehst: fs=10e3; [h,w]=freqz(b); plot(w/pi*fs/2, 20*log10(abs(h))); grid on xlabel('Freq / Hz'); ylabel('Magnitude / dB'); titel('Transfer Function') Im Übrigen: Die Koeffizienten eines FIR-Filters entsprechen der Impulsantwort. Aus der Impulsantwort kann mit Hilfe der Fourier-Transformation die Frequenzübertragungsfunktion ermittelt werden (und umgekehrt!). Eine FFT führt hier also auch zum Ziel, allerdings wäre die Frequenzauflösung sehr gering, da sie der Anzahl Deiner Koeffizienten entsprechen würde. Für eine höhere Auflösung nutzt man ein sogenanntes Zero padding (Auffüllen mit Nullen) bis z.B. 1024, um eine Frequenzauflösung von 1024 Punkten zu bekommen. Dies nur zum Verständnis des Zusammanhangs Koeffizienten/Impulsantwort und Übertragungsfunktion. Ich hoffe das hilft. Viele Grüße! Gerrit, DL9GFA
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.