被 CIC 过滤器迷惑

信息处理 过滤器
2022-01-31 11:38:39

我一直试图围绕 CIC 过滤器。

假设我想通过因子 D 进行过滤抽取。

选项#1:棚车过滤器。每个输出样本是通过取 D 个输入样本的总和,并乘以/移位以获得适当的平均值而形成的。D-1 添加每个输出样本。

选项#2:1 级 CIC 滤波器,累加器以输入速率运行,梳状滤波器以输出速率运行。D 添加每个输出样本。

那么绒毛是怎么回事呢?CIC是否只对更高的订单有意义?如果订单 N CIC 就像将 rect() 函数卷积 N-1 次,那将是 B 样条,对吗?我看到作者称赞 B 样条的功能优势。能够有效地完成它们可能会很方便。

感谢您的任何输入克努特

编辑:伪 matlab 代码显示了我理解的替代方案。

N=100;   
x = randn(N,1);    
D = 5;

%% decimated moving average, ~100 adds
for k = 1:N/D    
  y(k) = (1/D)*(x(k*D) + x(k*D-1) + ... + x(k*D-D+1));
end

 %% recursive moving average, ~200 adds 
y(1) = x(1);

for k = 2:N   
  y(k) = x(k) + y(k-1); 
end

for k = D:N
    z(k) = y(k) - y(k-D);  
end

z = z(1:D:end);

%% CIC, ~120 adds
y(1) = x(1);

for k = 2:N
  y(k) = x(k) + y(k-1);  
end

z = y(1:D:end);

for k = 2:N/D    
  w(k) = z(k) - z(k-1);   
end
1个回答

看来您混淆了 CIC 过滤器和递归移动平均线

递归移动平均使用梳状滤波器和累加器。

H(z)=1N1zN1z1

分子对应于梳状滤波器(即N 个元素和1 个加法器的延迟线)。分母对应于累加器。1/N 因子是为了得到一个移动平均线,否则你会有一个移动累加器。您只需要 2 个加法器,一个延迟线、一个累加器和一个除法器。使用非递归移动平均滤波器,您需要 N 个加法,并且无论如何您都需要一条延迟线。与非递归移动平均滤波器相比,递归移动平均在计算上的扩展性要小得多。

现在,CIC 滤波器将递归移动平均滤波器与抽取和插值相结合。

对于 CIC 抽取滤波器,您可以在累加器和梳状滤波器之间插入速率转换模块。假设您有一个 16 个样本的移动平均滤波器 (N=16),并且您想要抽取 8 (R = 8)。你需要一个 16 个元素的延迟线。但是,通过在累加器和梳状滤波器之间插入抽取,可以减少延迟线中的元素数量。您只需要 N/R 元素,即 2。您仍然需要减去 2 个数字,但是您会以 fs/8 的采样率进行操作。

我建议你咨询这个网站

https://www.researchgate.net/publication/228648728_Understanding_cascaded_integrator-comb_filters

更新:请参阅 Richard Lyons 的这篇精彩文章 - https://www.dsprelated.com/showarticle/1337.php