MATLAB:IIR滤波器系数

时间:2013-01-16 11:16:50

标签: matlab filter signal-processing numerical-methods electronics

我在信号处理方面相当新,我的一个项目是实现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)?

2 个答案:

答案 0 :(得分:2)

看起来你走在正确的轨道上。您对cheby2的来电缺少Wst参数(阻带频率)。您应该阅读MATLAB's official documentation以获取此命令并验证您的通话。

另外,不要将输出变量命名为ij,这是不好的做法。 ijsqrt(-1)虚数的保留名称。至少为输出变量ba命名。

完成Chebyshev后,分别使用butterellip作为Butterworth和椭圆滤波器。

答案 1 :(得分:0)

这似乎涵盖在MATLAB documentation

  

[b,a] = cheby2(n,R,Wst)设计n阶低通数字切比雪夫II型滤波器,其标准化阻带边沿频率Wst和阻带纹波R dB从峰值通带值向下。它返回长度为n + 1的行向量b和a中的滤波器系数,系数为z的递减幂。