2016-04-09 8 views
1

I MATLAB bin mit einem Filter zu entwerfen und die Übertragungsfunktion Koeffizienten a und b zu erhalten, um dann in den Filtercode C.Matlab IIR Filterübertragungsfunktion

I habe jedoch festgestellt, dass die Funktion sos2tf verschiedene schafft Werte als erwartet. In der Tat, wenn fvtool zu verwenden, um den Filter mit den b und a Koeffizienten zu sehen, sieht der Filter anders aus als ich ihn mit der sos Matrix oder dem eigentlichen Filter f plotten.

Wenn Sie den folgenden Code versuchen, können Sie besser verstehen, was ich sage. Ist das ein Funktionsproblem, das von MATLAB kommt? Kann ich Ersatzstoffe für sos2tf verwenden, die mir die erforderlichen Filterkoeffizienten gibt? Oder kann ich sie direkt abrufen, ohne vorher sos zu verwenden?

Beachten Sie, dass ich bereits versucht habe, designfilt zu verwenden und dann die tf-Funktion zu verwenden und die resultierenden Koeffizienten genau denen entsprechen, die mit dem folgenden Code erzielt werden. Danke für Ihre Hilfe

H = fdesign.lowpass('Fp,Fst,Ap,Ast',60,75,1,60,10000); 
f = design(H,'butter','MatchExactly','passband'); % Design an FIR BW filt 
info(f)     % View information about filter 
fvtool(f); 
[b,a] = sos2tf(f.sosMatrix); 
fvtool(b,a); 
+0

Könnten Sie bitte geben Sie mir die Filterspezifikationen und die Abtastfrequenz, die Sie verwenden? – VMMF

Antwort

0

Ich weiß nicht genau, was das Problem ist, wie es auch nicht für mich funktioniert, aber ich werde Sie geben eine Abhilfe, die Filterkoeffizienten zu erhalten. In Matlab Command Window fdatool wird ein Filterdesign-App-Fenster angezeigt, in dem Sie Ihren Filter entwerfen, indem Sie die gewünschten Parameter richtig auswählen. Sobald Sie fertig sind, gehen Sie in diesem fdatool-Fenster zu Datei-> Exportieren-> Exportieren als-> Koeffizienten. Von genau diesem Tool können Sie Datei-> Matlab-Code generieren-> Filterdesign-Funktion (oder eine der 3 Optionen) auswählen. Auf diese Weise eliminieren Sie mögliche Fehler in dem Code, den Sie in Ihrer Frage angegeben haben. Das ist, wie ich es mache und es hat immer gut funktioniert

+0

Allerdings erzeugt dies nicht die Vektorkoeffizienten a und b, die ich benötige ... – fbdg

+0

Selbst wenn ich tf anwende, um die Koeffizienten zu extrahieren, nachdem ich das getan habe, was du gesagt hast, bekomme ich viel Rauschen bis zum Passband f, obwohl der Filter ist viel besser als das Original. Was mich stört ist, dass, wenn ich fvtool auf die sos-Werte anwende, der Filter wie vorgesehen herauskommt, wenn ich fvtool auf die tf-Vektoren anwende, kommt der Ausgabefilter anders..sehr komisch .. – fbdg