请使用matlab语言实现下列要求:请分别用冲激响应不变法和双线性变换法设计一个IIR低通数字滤波器,采样率为1000Hz,通带最大衰减为5dB,阻带最小衰减为40dB,通带截止频率为0.2pi,阻带截止频率为0.4皮pi,滤波器类型选择巴特沃斯滤波器
时间: 2024-06-12 10:07:28 浏览: 142
基于MATLAB的冲激不变法和双线性法低通滤波器的设计
4星 · 用户满意度95%
由于题目中要求使用两种方法设计IIR低通数字滤波器,因此下面将分别介绍两种方法的设计步骤。
1. 冲激响应不变法设计
(1)根据巴特沃斯滤波器的特性,可以得到其传递函数为:
$$H(s) = \frac{1}{1 + (\frac{s}{\omega_c})^{2n}}$$
其中,$\omega_c$为截止频率,$n$为滤波器阶数。
(2)将传递函数中的$s$替换为$z$,并使用冲激响应不变法进行离散化处理,得到巴特沃斯滤波器的差分方程:
$$y(n) = \frac{b_0x(n) + b_1x(n-1) + b_2x(n-2) - a_1y(n-1) - a_2y(n-2)}{a_0}$$
其中,$a_0 = 1$,$a_1 = -2cos(\omega_c)$,$a_2 = 1$,$b_0 = b_2 = \frac{1}{1 + \sqrt{2}cos(\omega_c) + cos^2(\omega_c)}$,$b_1 = 2b_0$。
(3)根据通带最大衰减为5dB,阻带最小衰减为40dB,通带截止频率为0.2pi,阻带截止频率为0.4pi,可以使用MATLAB中的butter函数计算出巴特沃斯滤波器的系数。
(4)将系数代入差分方程中,即可得到冲激响应不变法设计的IIR低通数字滤波器。
MATLAB代码如下:
```matlab
% 采样率为1000Hz
fs = 1000;
% 通带最大衰减为5dB,阻带最小衰减为40dB
Rp = 5;
Rs = 40;
% 通带截止频率为0.2pi,阻带截止频率为0.4pi
Wp = 0.2*pi;
Ws = 0.4*pi;
% 滤波器类型选择巴特沃斯滤波器
[n,Wn] = buttord(Wp,Ws,Rp,Rs,'s');
[b,a] = butter(n,Wn,'s');
% 使用冲激响应不变法进行离散化处理
[bz,az] = impinvar(b,a,fs);
% 绘制幅频特性曲线
freqz(bz,az)
```
2. 双线性变换法设计
(1)根据巴特沃斯滤波器的传递函数,同样可以得到其传递函数为:
$$H(s) = \frac{1}{1 + (\frac{s}{\omega_c})^{2n}}$$
(2)将传递函数中的$s$替换为$\frac{2}{T}\frac{z-1}{z+1}$,并使用双线性变换法进行离散化处理,得到巴特沃斯滤波器的差分方程:
$$y(n) = \frac{b_0x(n) + b_1x(n-1) + b_2x(n-2) - a_1y(n-1) - a_2y(n-2)}{a_0}$$
其中,$a_0 = 1 + 2\alpha + \alpha^2$,$a_1 = 2(\alpha^2-1)/a_0$,$a_2 = (1 - 2\alpha + \alpha^2)/a_0$,$b_0 = (1+\cos(\omega_c))/2a_0$,$b_1 = (1+\cos(\omega_c))/a_0$,$b_2 = (1+\cos(\omega_c))/2a_0$,$\alpha = \tan(\frac{\omega_cT}{2})$,$T$为采样周期。
(3)同样可以使用MATLAB中的butter函数计算出巴特沃斯滤波器的系数。
(4)将系数代入差分方程中,即可得到双线性变换法设计的IIR低通数字滤波器。
MATLAB代码如下:
```matlab
% 采样率为1000Hz
fs = 1000;
% 通带最大衰减为5dB,阻带最小衰减为40dB
Rp = 5;
Rs = 40;
% 通带截止频率为0.2pi,阻带截止频率为0.4pi
Wp = 0.2*pi;
Ws = 0.4*pi;
% 滤波器类型选择巴特沃斯滤波器
[n,Wn] = buttord(Wp,Ws,Rp,Rs,'s');
[b,a] = butter(n,Wn,'s');
% 采样周期为1/fs
T = 1/fs;
% 使用双线性变换法进行离散化处理
[bz,az] = bilinear(b,a,1/T);
% 绘制幅频特性曲线
freqz(bz,az)
```
以上就是冲激响应不变法和双线性变换法设计IIR低通数字滤波器的MATLAB代码实现方法。
阅读全文