常用模拟低通滤波器的设计~经典 IIR 滤波器之巴特沃斯滤波器

本文详细介绍了巴特沃斯滤波器的设计过程,包括确定系统函数极点、使用MATLAB中的buttap、buttord和butter函数来设计不同类型的滤波器,如低通、高通、带通和带阻滤波器,并提供了具体示例展示如何设置参数和分析滤波器的幅频响应和相位特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

常用模拟低通滤波器的设计——巴特沃斯(Butterworth)滤波器

1、确定系统函数的极点

2、巴特沃斯(Butterworth)滤波器

2.1、buttap 函数

2.2、buttord 函数

2.3、butter 函数


常用模拟低通滤波器的设计~经典 IIR 滤波器之巴特沃斯(Butterworth)滤波器

       滤波器是一种具有频率选择作用的电路或运算处理系统,它具有区分区分输入信号的各种不同频率成分的功能,具有滤除噪声和分离各种不同信号的功能。综合一个滤波器的基本步骤分为逼近和实现。逼近方法有巴特沃斯逼近、切比雪夫逼近、椭圆逼近和贝塞尔逼近。这些逼近方法可直接用于低通滤波器综合,而对于高通、带通、带阻滤波器综合,要借助于频带变换。

1、确定系统函数的极点

      模拟滤波器的设计以几种典型的低通滤波器的原型函数为基础,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯滤波器、切比雪夫滤波器和椭圆滤波器等,有现成的设计数据以及曲线和图表可查,其设计工作量比较小。在设计一个IIR数字滤波器时,用户可以根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。

2、巴特沃斯(Butterworth)滤波器

       巴特沃斯(Butterworth)滤波器又称为“最平”的幅频响应滤波器,该滤波器的特点是在通带内具有最大平坦的幅度且随频率升高呈单调减小。

2.1、buttap 函数

2.2、buttord 函数

2.3、butter 函数

        N阶低通巴特沃斯滤波器的特性函数(振幅平方函数)为:

 【例5-8】采样速率为8000Hz,要求设计一个低通滤波器,fp=2100Hz,fs=2500Hz,Rp=3dB,Rs=25dB。

% 【例5-8】采样速率为8000Hz,要求设计一个低通滤波器,
% fp=2100Hz,fs=2500Hz,Rp=3dB,Rs=25dB。
clc, clear, close all
fn = 8000; fp = 2100; fs = 2500; Rp = 3; Rs = 25;
Wp = fp/(fn/2); %计算归一化角频率
Ws = fs/(fn/2);
% 计算阶数和截止频率
[n,Wn] = buttord(Wp,Ws,Rp,Rs);
% 计算H(z)分子、分母多项式系数
[b,a] = butter(n,Wn);
% 计算H(z)的幅频响应, freqz(b,a,计算点数,采样频率)
[H,F] = freqz(b,a,1000,8000);
subplot(211);
plot(F,20*log10(abs(H)));
xlabel('频率(Hz)'); ylabel('幅值(dB)');
title('低通滤波'); axis([0 4000 -30 3]);
grid on;

subplot(212);
pha = angle(H)*180/pi;
plot(F,pha);
xlabel('频率(Hz)'); ylabel('相位');
grid on;

  【例5-9】采样速率为8000Hz,要求设计一个高通滤波器,fp=1000Hz,fs=700Hz,Rp=3dB,Rs=20dB。

% 【例5-9】采样速率为8000Hz,要求设计一个高通滤波器,fp=1000Hz,fs=700Hz,Rp=3dB,Rs=20dB。
% clc, clear, close all
figure
fn = 8000; fp = 1000; fs = 700; Rp = 3; Rs = 20;
Wp = fp/(fn/2); %计算归一化角频率
Ws = fs/(fn/2);
% 计算阶数和截止频率
[n,Wn] = buttord(Wp,Ws,Rp,Rs);
% 计算H(z)分子、分母多项式系数
[b,a] = butter(n,Wn,"high");
% 计算H(z)的幅频响应, freqz(b,a,计算点数,采样频率)
[H,F] = freqz(b,a,1000,8000);
subplot(211);
plot(F,20*log10(abs(H)));
axis([0 4000 -30 3]);
xlabel('频率(Hz)'); ylabel('幅值(dB)');
title('高通滤波'); 
grid on;
subplot(212);
pha = angle(H)*180/pi;
plot(F,pha);
xlabel('频率(Hz)'); ylabel('相位');
grid on;

【例5-10】采样速率为10000Hz,要求设计一个带通滤波器,fp=[1000Hz,1500Hz],fs=[600Hz,1900Hz],Rp=3dB,Rs=20dB。

% 【例5-10】采样速率为10000Hz,要求设计一个带通滤波器,fp=[1000Hz,1500Hz],
% fs=[600Hz,1900Hz],Rp=3dB,Rs=20dB。
% clc, clear, close all
figure
fn = 10000; fp=[1000,1500]; fs=[600,1900]; Rp = 3; Rs = 20;
Wp = fp/(fn/2); %计算归一化角频率
Ws = fs/(fn/2);
% 计算阶数和截止频率
[n,Wn] = buttord(Wp,Ws,Rp,Rs);
% 计算H(z)分子、分母多项式系数
[b,a] = butter(n,Wn);
% 计算H(z)的幅频响应, freqz(b,a,计算点数,采样频率)
[H,F] = freqz(b,a,1000,10000);
subplot(211);
plot(F,20*log10(abs(H)));
axis([0 5000 -30 3]);
xlabel('频率(Hz)'); ylabel('幅值(dB)');
title('高通滤波'); 
grid on;
subplot(212);
pha = angle(H)*180/pi;
plot(F,pha);
xlabel('频率(Hz)'); ylabel('相位');
grid on;

 【例5-11】采样速率为10000Hz,要求设计一个带阻滤波器,fp=[1000Hz,1500Hz],fs=[1200Hz,1300Hz],Rp=3dB,Rs=30dB。

% 【例5-11】采样速率为10000Hz,要求设计一个带阻滤波器,fp=[1000Hz,1500Hz],
% fs=[1200Hz,1300Hz],Rp=3dB,Rs=30dB。
% clc, clear, close all
figure
fn = 10000; fp = [1000,1500]; fs = [1200,1300]; Rp = 3; Rs = 30;
Wp = fp/(fn/2); %计算归一化角频率
Ws = fs/(fn/2);
% 计算阶数和截止频率
[n,Wn] = buttord(Wp,Ws,Rp,Rs);
% 计算H(z)分子、分母多项式系数
[b,a] = butter(n,Wn,'stop');
% 计算H(z)的幅频响应, freqz(b,a,计算点数,采样频率)
[H,F] = freqz(b,a,1000,10000);
subplot(211);
plot(F,20*log10(abs(H)));
axis([0 5000 -35 3]);
xlabel('频率(Hz)'); ylabel('幅值(dB)');
title('高通滤波'); 
grid on;
subplot(212);
pha = angle(H)*180/pi;
plot(F,pha);
xlabel('频率(Hz)'); ylabel('相位');
grid on;

设计数字滤波器的过程通常涉及以下几个步骤,我会为您概述一个简化版的原理框图: 1. **需求分析**: - 确定滤波器的目的:低通、高通、带通还是带阻等。 - 制定滤波器特性:如截止频率、增益、稳定性要求等。 2. **选择滤波器结构**: - 根据需求选择合适的滤波器类型,如巴特沃斯、切比雪夫、椭圆或卡尔曼等。 - 决定是否采用直接形式(IIR)或间接形式( FIR)。 3. **确定传递函数或Z变换**: - 对于FIR滤波器,通过采样响应计算Z变换系数。 - 对于IIR滤波器,需要设置递归部分和直接部分的系数。 4. **绘制频率响应**: - 通过滤波器的传递函数计算幅频特性(Bode图)和相频特性。 - 可视化频率响应,确认是否满足设计需求。 5. **稳定性和阻尼控制**: - 如果是IIR滤波器,检查闭环系统的稳定性。 - 调整零点和极点的位置以优化阻尼和快速响应。 6. **实现算法**: - 将Z变换转换成时间域的算子(例如递推公式),用于实际的数字信号处理。 - 对于FIR滤波器,使用线性卷积;对于IIR,使用Butterworth等算法。 7. **仿真验证**: - 使用软件工具(如Matlab或Python的scipy库)进行仿真,验证滤波器性能。 8. **硬件实现**(如果需要): - 将数字滤波器算法映射到特定的硬件平台上,如FPGA或ASIC。 下面是一个简化的流程图表示: ``` 需求分析 -> 滤波器类型选择 -> 计算传递函数 -> 频率响应设计 -> 稳定性分析 -> 实现算法 -> 仿真验证 -> 硬件实现 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值