matlab巴特沃斯低通滤波
时间: 2023-10-09 21:07:27 浏览: 129
巴特沃斯低通滤波器是一种全极点滤波器,其幅度随频率的增加而单调下降,频率无穷大时它的幅度才衰减完。在Matlab中,可以使用buttord函数计算巴特沃斯低通滤波器的阶数和截止频率,使用buttap函数创建巴特沃斯低通滤波器的零点、极点和增益,然后使用lp2lp函数将其归一化,最后使用impinvar函数将模拟域转换为数字域。通过freqz函数可以绘制该滤波器的频率响应。
以下是实现巴特沃斯低通滤波器的Matlab代码示例:
```matlab
clear;close all;clc
% 数字滤波器的技术指标
ap = 1; % 通带最大衰减
as = 30; % 阻带最小衰减
fp = 200; % 通带截止频率
fs = 400; % 阻带截止频率
Fs = 1000; % 抽样间隔
T = 1/Fs;
% 将数字指标转化成模拟滤波器技术指标(采用冲激响应不变法)
wap = 2*pi*fp;
was = 2*pi*fs;
% 设计滤波器
[N, wac = buttord(wap, was, ap, as, 's'); % 计算阶数N和3dB截止频率wac
[z, p, k = buttap(N); % 创建巴特沃斯低通滤波器的零点、极点和增益
[Bap, Aap = zp2tf(z, p, k); % 由零极点和增益确定归一化的H(s)系数
[Bbs, Abs = lp2lp(Bap, Aap, wac); % 将s/wc 代替s,去归一化
[B, A = impinvar(Bbs, Abs, Fs); % 模拟域到数字域——冲激响应不变法
[H1, w = freqz(B, A); % 根据H(z)求频率响应
% 绘制数字滤波器频响幅度谱
figure(1);
f = w * Fs / (2*pi);
subplot(2, 1, 1);
plot(f, 20*log10(abs(H1))); % 绘制幅度响应
title('冲激响应不变法——巴特沃斯BLPF(幅度)');
xlabel('频率/Hz');
ylabel('H1幅值/dB');
subplot(2, 1, 2);
plot(f, unwrap(angle(H1))); % 绘制相位响应
xlabel('频率/Hz');
ylabel('角度/Rad');
title('冲激响应不变法——巴特沃斯BLPF(相位)');
```
以上代码演示了如何使用Matlab实现巴特沃斯低通滤波器,并绘制了滤波器的幅度响应和相位响应。
阅读全文