1

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

4

2 回答 2

2

看起来你在正确的轨道上。您的调用cheby2缺少Wst参数(阻带频率)。您应该阅读MATLAB 的有关此命令的官方文档并验证您的调用。

另外,不要命名输出变量ij,这是不好的做法。i并且jsqrt(-1)虚数的保留名称。至少b命名输出变量。a

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

于 2013-01-16T11:35:00.450 回答
0

这似乎包含在MATLAB 文档中:

[b,a] = cheby2(n,R,Wst) 设计了一个 n 阶低通数字切比雪夫 II 型滤波器,具有归一化的阻带边缘频率 Wst 和阻带纹波 R dB,低于通带峰值。它返回长度为 n+1 行向量 b 和 a 的滤波器系数,系数为 z 的降幂。

于 2013-01-16T11:35:24.723 回答