用双线性变换法设计原型低通为巴特沃斯型的IIR数字带阻滤波器代码
时间: 2023-07-28 08:07:57 浏览: 155
IIR_双线数字滤波_双线性变换法_数字滤波器_IIR滤波器_IIR数字滤波器
以下是用双线性变换法设计原型低通为巴特沃斯型的IIR数字带阻滤波器的MATLAB代码示例:
```matlab
% 设计数字带阻滤波器
fp1 = 800; % 通带1截止频率
fp2 = 1200; % 通带2截止频率
fs1 = 600; % 阻带1截止频率
fs2 = 1400; % 阻带2截止频率
Rp = 1; % 通带最大衰减
Rs = 40; % 阻带最小衰减
% 计算模拟滤波器阶数和截止频率
wp1 = 2*pi*fp1; % 通带1截止频率(角频率)
wp2 = 2*pi*fp2; % 通带2截止频率(角频率)
ws1 = 2*pi*fs1; % 阻带1截止频率(角频率)
ws2 = 2*pi*fs2; % 阻带2截止频率(角频率)
Wp = [wp1, wp2]; % 通带角频率向量
Ws = [ws1, ws2]; % 阻带角频率向量
[N, Wn] = buttord(Wp, Ws, Rp, Rs, 's'); % 计算模拟滤波器阶数和截止频率
[b, a] = butter(N, Wn, 's'); % 计算模拟滤波器系数
% 双线性变换
fs = 8000; % 采样频率
[bz, az] = bilinear(b, a, fs); % 双线性变换
% 绘制滤波器幅频响应曲线
freqz(bz, az);
title('双线性变换法设计的数字带阻滤波器幅频响应');
```
上述代码中使用Butterworth滤波器函数`butter`计算巴特沃斯型模拟低通滤波器的系数,然后使用双线性变换函数`bilinear`将模拟滤波器变换为数字滤波器,得到数字带阻滤波器的系数。最后使用`freqz`函数绘制数字带阻滤波器的幅频响应曲线,检验滤波器设计效果。
阅读全文