【发布时间】:2018-01-23 08:55:44
【问题描述】:
我正在构建一个级联滤波器(一个 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
【问题讨论】:
-
我很确定我没有抓住重点,但为什么会涉及到这样一个过程呢?您不能简单地向抽取器和低通滤波器发送一个脉冲吗?由于您的所有过滤器似乎都是非递归的,因此您的脉冲响应应该是有限的持续时间。计算您捕获的脉冲响应的 FFT 并获得频谱。
-
问题是,CIC 的脉冲响应是用 MA 脉冲响应估计的。然而,这个估计没有考虑下采样。因此,使用为不同采样率设置的 LP 滤波器会导致错误的脉冲,并且由此估计的频率响应也会不正确。如前所述,我知道克服这个问题的可能性,在频域中乘法或构建过滤器对象并将它们级联。但是我想知道我是否可以根据此处描述的方法在时域中执行此操作。
标签: matlab signal-processing convolution sampling