我在信号处理方面相当新,我的一个项目是实现一个 C++ 过滤器类。我需要典型滤波器的高阶系数,例如 Chebyshev 类型 I 和 II、Butterworth、Elliptic,不幸的是,网络中的大多数系数表只列出了最大 10 阶。我决定使用 MATLAB 来生成这些滤波器并获得它们的高阶系数,但是我感到困惑的一件事是它们只给出一组系数,我认为这类似于说 (ao,a1,a2 .....一个)。
我了解到 IIR 滤波器有 2 组系数,通常表示为 a0,a1...an 和 b0,b1,...,bn。这是我的 MATLAB 代码,用于生成这些系数并将它们导出到 excel 文件:
%Chebyshev Filter Coefficients
filename = 'cheby2coefs.xlsx';
for Order = 1:64
fprintf('This is');
disp(Order);
fprintf('coefficients');
[i,j] = cheby2(Order, 20, 300/500);
disp([i,j]);
fprintf('\n');
xlswrite(filename,[i,j]',Order);
end
到目前为止,网上几乎没有关于如何用 MATLAB 得出这些系数的资料,所以我很难过。我的问题是,究竟如何为这些滤波器生成 IIR 系数(假设它们是 IIR)?