我在信号处理方面相当新,我的一个项目是实现C ++过滤器类。我需要典型滤波器的高阶系数,如Chebyshev类型I和II,Butterworth,Elliptic,不幸的是,网络中的大多数系数表仅列出最多10阶。我决定使用MATLAB来生成这些滤波器并得到它们的高阶系数,但是我很困惑的一件事是它们只给出了一组系数,我认为这类似于说(ao,a1,a2) .....一个)。
我了解到IIR滤波器有2组系数,通常表示为a0,a1 ... an和b0,b1,...,bn。这是我的MATLAB代码,用于生成这些coefs并将它们导出到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)?
答案 0 :(得分:2)
看起来你走在正确的轨道上。您对cheby2
的来电缺少Wst
参数(阻带频率)。您应该阅读MATLAB's official documentation以获取此命令并验证您的通话。
另外,不要将输出变量命名为i
和j
,这是不好的做法。 i
和j
是sqrt(-1)
虚数的保留名称。至少为输出变量b
和a
命名。
答案 1 :(得分:0)
这似乎涵盖在MATLAB documentation:
中[b,a] = cheby2(n,R,Wst)设计n阶低通数字切比雪夫II型滤波器,其标准化阻带边沿频率Wst和阻带纹波R dB从峰值通带值向下。它返回长度为n + 1的行向量b和a中的滤波器系数,系数为z的递减幂。