设计工作在采样频率60KHz的巴特沃斯数字低通滤波器,通带边界频率4kHz,通带最大衰减值1dB,阻带边界频率为20kHz,阻带最小衰减25dB。用matlab编程实现滤波器设计,并显示系统函数的系数,绘制损耗函数和相频特性曲线
时间: 2023-08-30 20:06:20 浏览: 90
在MATLAB中,可以使用`butter`函数进行巴特沃斯数字滤波器的设计。根据题目要求,我们可以进行如下设置:
```matlab
fs = 60000; % 采样频率
fp = 4000; % 通带边界频率
fstop = 20000; % 阻带边界频率
dp = 1; % 通带最大衰减值
dstop = 25; % 阻带最小衰减值
[n, Wn] = buttord(fp/(fs/2), fstop/(fs/2), dp, dstop); % 求解滤波器阶数和截止频率
[b, a] = butter(n, Wn, 'low'); % 生成滤波器系数
```
其中,`buttord`函数用于求解滤波器的阶数和截止频率,`butter`函数用于生成滤波器系数。
接下来,我们可以绘制损耗函数和相频特性曲线,代码如下:
```matlab
[h, w] = freqz(b, a); % 求解系统函数的频率响应
mag = 20*log10(abs(h)); % 求解幅频特性,转换为dB
phase = unwrap(angle(h)); % 求解相频特性,去除相位跳变
% 绘制幅频特性曲线
subplot(2,1,1);
plot(w/pi*fs/2, mag);
ylim([-30 5]);
xlabel('频率 (Hz)');
ylabel('增益 (dB)');
title('巴特沃斯数字低通滤波器幅频特性曲线');
% 绘制相频特性曲线
subplot(2,1,2);
plot(w/pi*fs/2, phase/pi*180);
ylim([-180 0]);
xlabel('频率 (Hz)');
ylabel('相位 (度)');
title('巴特沃斯数字低通滤波器相频特性曲线');
```
运行上述代码,即可得到巴特沃斯数字低通滤波器的幅频特性曲线和相频特性曲线。同时,也可以使用`b`和`a`两个系数向量,构造数字滤波器对象,进一步对信号进行滤波处理。
阅读全文