2013-04-05 148 views
2

我想將幾個阻帶濾波器組合成一個濾波器,以瞭解濾波器在移除多個頻帶時如何改變相位。如何組合多個阻帶濾波器的濾波器係數 - Matlab

這個question爲兩個濾波器提供了一個解決方案,但是如果有兩個以上的濾波器帶呢?

這是顯示每個獨立過濾器的增益和相位的圖像。

所以我的問題是:

  1. ,如果我在篩選五個獨立操作
  2. 數據我可以結合篩選步驟爲一個單一的步驟發生了什麼階段?

我在Matlab中使用了butter和freqz函數。

[b,a] = butter(order,cutoff/(fs/2),'high'); 
[h,w] = freqz(b,a,fs); 

謝謝。

enter image description here

+0

請注意,您或許能看到效果更清楚,如果你['unwrap'相(HTTP:// WWW .mathworks.co.uk/help/matlab/ref/unwrap.html),然後繪製它;這個階段的不連續性並不存在:這只是從'freqz'返回的相位總是在'[-pi,pi]'範圍內的結果。您可能還想通過繪製'20 * log10(abs(h))'來繪製'dB re 1'中的響應。 – wakjah 2013-04-05 09:35:56

+0

謝謝,很好的建議。 – sequoia 2013-04-05 15:45:38

回答

1
  1. 在卷積階段效果積累和總相位效果的所有過濾器的相位效應的總和

  2. 是的,你只需要卷積他們都獲得了新的filter:conv(conv(filter1,filter2),filter3)

+0

有趣。如果我將濾波器係數進行卷積,然後相位圖應該在每個阻帶上顯示從0到-2pi,然後是-2pi到-4pi等的降低幅度?我會試試看。 – sequoia 2013-04-05 15:50:16

+0

不,如果以圖形方式求和濾波器相位響應,則可以觀察單相圖中的5個相位鏡頭 – 2013-04-05 16:11:16

2

階段和magntudes(dB)將相加。如果你想看到Matlab的需要cascate過濾器,用於爲例:

% computes the coefficients 
[b1,a1]=butter(8,0.6);   
[b2,a2]=butter(8,0.4,'high'); 
[b3,a3]=butter(8,0.2,'high'); 
% creates the filters 
H1=dfilt.df2t(b1,a1); 
H2=dfilt.df2t(b2,a2); 
H3=dfilt.df2t(b3,a3); 
% creates the cascate filter 
Hcas=dfilt.cascade(H1,H2,H3) 
% plot  
Hcas.freqz()