2016-04-09 71 views
1

我使用MATLAB,以便設計濾波器,將獲得的傳遞函數的係數和ab然後Matlab的IIR濾波器的傳遞函數

但是我已經注意到功能sos2tf是創建在不同編碼C.過濾器值比預期。實際上,當使用fvtool查看使用ba係數的濾波器時,濾波器看起來與我使用sos矩陣或實際濾波器f對其進行繪圖時不同。

如果你嘗試下面的代碼,你可以更好地理解我在說什麼。這是來自MATLAB的功能問題嗎?我可以使用替代品sos2tf哪個給我所需的濾波器係數?或者我可以直接檢索它們,而無需先使用sos

請注意,我已經嘗試使用designfilt,然後使用tf函數,並且所得到的係數與使用下面的代碼獲得的係數完全相同。感謝您的幫助

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

您能否給我過濾器規格和您使用的採樣頻率? – VMMF

回答

0

我不知道究竟是什麼問題,因爲它不是爲我工作下去,但我想給你一個解決辦法,以獲得濾波器係數。在Matlab命令窗口鍵入fdatool,會彈出一個濾波器設計應用程序窗口,通過正確選擇所需的參數來設計濾波器。完成後,在該fdatool窗口中,轉到文件 - >導出 - >導出爲 - >係數。從同樣的工具中,您可以選擇File-> generate matlab code-> Filter design function(或3個選項中的任何一個)。這樣你就可以消除你在問題中發佈的代碼中可能存在的錯誤。這就是我的做法,它一直運行良好

+0

然而,這並不會生成我所要求的a和b矢量係數... – fbdg

+0

即使我應用tf來提取係數,在做了你所說的操作之後,即使濾波器是比原來好多了。令我困擾的是,如果我將fvtool應用於sos值,濾波器會按設計出來,如果我將fvtool應用於tf矢量,那麼輸出濾波器會有所不同。 – fbdg