绘制出带阻滤波器的幅频特性和相频特性曲线代码
时间: 2023-11-27 15:04:48 浏览: 212
下面是一个MATLAB代码示例,可以绘制出带阻滤波器的幅频特性和相频特性曲线:
```matlab
% 滤波器参数
fs = 1000; % 采样率
f1 = 50; % 通带截止频率1
f2 = 150; % 通带截止频率2
f3 = 200; % 阻带截止频率1
f4 = 300; % 阻带截止频率2
Rp = 1; % 通带最大衰减量
Rs = 50; % 阻带最小衰减量
% 设计滤波器
Wp = [f1, f2] / (fs/2); % 通带截止频率范围
Ws = [f3, f4] / (fs/2); % 阻带截止频率范围
[n, Wn] = buttord(Wp, Ws, Rp, Rs, 's'); % 计算巴特沃斯滤波器阶数和截止频率
[b, a] = butter(n, Wn, 'stop', 's'); % 计算巴特沃斯滤波器系数
% 绘制幅频特性曲线
[f, H] = freqs(b, a, 1000); % 计算频率响应
H_mag = abs(H); % 幅度响应
H_phase = unwrap(angle(H)); % 相位响应
figure;
subplot(2, 1, 1);
plot(f, H_mag);
title('Butterworth带阻滤波器幅频特性曲线');
xlabel('频率 (Hz)');
ylabel('幅值');
subplot(2, 1, 2);
plot(f, H_phase);
title('Butterworth带阻滤波器相频特性曲线');
xlabel('频率 (Hz)');
ylabel('相位 (rad)');
```
代码中使用buttord函数计算巴特沃斯滤波器的阶数和截止频率,然后使用butter函数计算巴特沃斯滤波器的系数。接着使用freqs函数计算滤波器的频率响应,得到幅度响应和相位响应。最后使用subplot函数将幅频特性曲线和相频特性曲线绘制在同一张图中。
需要注意的是,代码中的滤波器参数和截止频率都是示例值,实际使用时需要根据具体的应用场景进行调整。
阅读全文