Forum: Digitale Signalverarbeitung / DSP / Machine Learning Von Koeffizienten zu Übertragungsfunktion


von Merlin E. (Firma: none) (new_user)


Lesenswert?

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

von Thomas B. (detritus)


Lesenswert?

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.

von Merlin E. (Firma: none) (new_user)


Lesenswert?

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

von Aehh (Gast)


Lesenswert?

Genuegt das Plotten nicht ?

von Gerrit Buhe (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.