【问题标题】:Convolution of impulse responses of different sampling rates不同采样率的脉冲响应的卷积
【发布时间】: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


【解决方案1】:

您需要查看两个滤波器在输入速率 (600 kHz) 下的频率响应。如果您将 FIR 低通滤波器的脉冲响应上采样至 CIC 分流器的输入速率并将两者卷积,您应该得到两个滤波器级联的组合脉冲响应。

【讨论】:

  • 我首先尝试对 b_lp 进行零填充,但我没有考虑过上采样。成功了,谢谢
  • 零填充和上采样应该相同。你用过matlab的上采样功能吗?
  • 是的,我用matlab的上采样函数对低通滤波器的脉冲响应进行了上采样。这将零放在系数之间,结果是完美的。只是在脉冲响应的末尾添加零对我没有帮助。不过,感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 2015-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-06
  • 1970-01-01
相关资源
最近更新 更多