本文使用 MATLAB 代码设计三种带通滤波器:巴特沃斯、切比雪夫 I 型和椭圆滤波器,并比较其幅频响应曲线,分析过渡带大小和阶数差异。

滤波器指标:

  • 通带边界频率: wp = [0.2pi 0.3pi]
  • 通带最大衰减量: Rp = 1dB
  • 阻带边界频率: ws = [0.1pi 0.4pi]
  • 阻带最小衰减量: Rs = 20dB

设计步骤:

  1. 巴特沃斯滤波器:
% 设计巴特沃斯滤波器
wp = [0.2*pi 0.3*pi];
ws = [0.1*pi 0.4*pi];
Rp = 1; % 通带最大衰减量(dB)
Rs = 20; % 阻带最小衰减量(dB)

[n_butter, Wn_butter] = buttord(wp, ws, Rp, Rs, 's');
[b_butter, a_butter] = butter(n_butter, Wn_butter, 'bandpass', 's');

% 绘制巴特沃斯滤波器的幅频曲线
freqz(b_butter, a_butter);
hold on;
  1. 切比雪夫 I 型滤波器:
% 设计切比雪夫 I 型滤波器
[n_cheby1, Wn_cheby1] = cheb1ord(wp, ws, Rp, Rs, 's');
[b_cheby1, a_cheby1] = cheby1(n_cheby1, Rp, Wn_cheby1, 'bandpass', 's');

% 绘制切比雪夫 I 型滤波器的幅频曲线
freqz(b_cheby1, a_cheby1);
hold on;
  1. 椭圆滤波器:
% 设计椭圆滤波器
[n_ellip, Wn_ellip] = ellipord(wp, ws, Rp, Rs, 's');
[b_ellip, a_ellip] = ellip(n_ellip, Rp, Rs, Wn_ellip, 'bandpass', 's');

% 绘制椭圆滤波器的幅频曲线
freqz(b_ellip, a_ellip);
hold off;

% 添加图例
legend('Butterworth', 'Chebyshev I', 'Elliptic');

结果分析:

  • 通过 freqz 函数绘制的幅频曲线,可以直观比较三种滤波器的过渡带大小。
  • 滤波器的阶数分别由 n_buttern_cheby1n_ellip 表示。

注意:

  • 上述代码是用于连续时间滤波器设计。如果您需要离散时间滤波器设计,请使用对应的 buttercheby1ellip 函数,并将 's' 参数更改为 'z'。
  • 代码需要在 MATLAB 环境中运行。

通过比较不同滤波器的幅频响应,您可以选择最适合您的应用场景的滤波器类型。

MATLAB 带通滤波器设计与比较 - 巴特沃斯、切比雪夫 I 型和椭圆滤波器

原文地址: http://www.cveoy.top/t/topic/bX0Q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录