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.