我一直试图围绕 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