2017-08-15 154 views
1

我正在構建一系列濾波器(一個CIC抽取器後接一個低通濾波器),我對頻率和脈衝響應感興趣。不同採樣率的脈衝響應的卷積

即使知道CIC抽取具有作爲移動平均濾波器(MA)類似的脈衝響應,我計算了CIC抽取的下列方式

%parameters of cic 
D=300; %deci factor 
M=1; %delays of comb 
Stages=3; 
% get impulse response estimated based on MA 
N=M*D; 
B=ones(1,N); 
B2=conv(B,B); 
B3=conv(B2,B); 
b_cic=B3*N^(-Stages); % FIR coefs and impulse response 

脈衝響應我們的採樣率我輸入信號爲600kHz,這意味着CIC抽取器的輸出爲2kHz。讓我們假設是FIR低通濾波器的係數如下

b_lp=[b_1 b_2 b_3 b_4 b_5]; % the values are not important right now 

所以在這裏我的問題是,我可以在頻率響應乘以估計級聯濾波器響應(我知道我必須要考慮到不同的採樣率和響應的長度):

[Hcic,Fcic]=freqz(b_cic,1,300*1000,fs); 
[Hlp,Flp]=freqz(b_lp,1,1000,fs/300); 

不過,我想知道是否有可能進行卷積採取下采樣兼顧時域脈衝響應? 例如像:

b_cas = con(b_cic,b_lp); % <--- I know that this does not work due to different sampling rates 

到目前爲止,我無法使用谷歌或在這裏找到的東西。

我知道我可以使用內置的MATLAB功能不同的過濾器,並使用

dsp.FilterCascade 
+0

我很確定我錯過了這一點,但爲什麼這樣一個涉及的過程?你能不能簡單地向你的抽取器和低通濾波器發送一個衝動?由於您的所有濾波器似乎都是非遞歸的,因此您的脈衝響應應該在有限的時間內關閉。計算你捕獲的脈衝響應的FFT,並獲得頻譜。 –

+0

問題是,CIC的脈衝響應是用MA脈衝響應估計的。然而,這個估計並沒有考慮到下采樣。因此,使用設置爲不同採樣率的LP濾波器會導致錯誤的脈衝,並且估計出的頻率響應也是不正確的。如前所述,我意識到可以克服這個問題,在頻域中進行倍增或構建濾波器對象並將它們級聯起來。不過,我想知道是否可以根據這裏描述的方法在時間域上做到這一點。 – Irreducible

回答

1

你需要看看在輸入速度兩個濾波器的頻率響應將它們串聯起來(600千赫)。如果將FIR低通濾波器的脈衝響應上採樣至CIC衰減器的輸入速率,並將兩者進行卷積,則應該將兩個濾波器級聯的組合脈衝響應組合在一起。

+0

我嘗試了零填充b_lp,但我沒有想過上採樣。它的工作,謝謝 – Irreducible

+0

零填充和上採樣應該是相同的。你使用matlab的upsample函數嗎? –

+0

是的,我使用matlab的上採樣函數對低通濾波器的脈衝響應進行了上採樣。這將零置於係數之間,結果是完美的。只是在脈衝響應結束時增加零並不能幫助我。儘管如此,感謝您的幫助。 – Irreducible