datasheet

巴特沃斯滤波器matlab实现

2018-01-27来源: 互联网 关键字:巴特沃斯滤波器  matlab

巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。 在振幅的对数对角频率的波特图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大。

一阶巴特沃斯滤波器的衰减率为每倍频6分贝,每十倍频20分贝。二阶巴特沃斯滤波器的衰减率为每倍频12分贝、三阶巴特沃斯滤波器的衰减率为每倍频18分贝、如此类推。巴特沃斯滤波器的振幅对角频率单调下降,并且也是唯一的无论阶数,振幅对角频率曲线都保持同样的形状的滤波器。只不过滤波器阶数越高,在阻频带振幅衰减速度越快。其他滤波器高阶的振幅对角频率图和低级数的振幅对角频率有不同的形状。

设计步骤

如设计一个数字低通滤波器,其技术指标为:

通带临界频率fp ,通带内衰减小于rp;

阻带临界频率fs,阻带内衰减大于αs;采样频率为FS

1、将指标变为角频率 wp=fp*2*pi;ws= fs*2*pi;

2、将数字滤波器的频率指标{Wk}由wk=(2/T)tan(Wk/2)转换为模拟滤波器的频率指标{wk},由于是用双线性不变法设计,故先采取预畸变。

3、将高通指标转换为低通指标,进而设计高通的s域模型

4、归一化处理

由以上三式计算出N,查表可得模拟低通滤波器的阶数,从而由下式确定模拟高通滤波器的参数。

仿真程序的设计与调试

数字域指标变换成模拟域指标

其程序为:

fp = 400 fs= 300;

Rp = 1; Rs = 20;

wp =fp*2*pi;

ws =fs*2*pi;

FS=1000;T=1/FS;

程序执行结果为:wp=2.5133e+003 ws=1.8850e+003 与实际计算结果相符。

数字域频率进行预畸变

其程序为:

wp2=2*tan(Wp/2)/T;

ws2=2*tan(Ws/2)/T;

经过预畸变,可以发现频率变为: wp2= 6.1554e+003

ws2= 2.7528e+003

模拟滤波器的设计

其程序为

%设计模拟滤波器

[N,Wn] = buttord(wp2,ws2,Rp,Rs,‘s’)

武汉理工大学《数字信号处理》报告

9

[z,p,k]=buttap(N); %创建Buttord低通滤波器原型

[Bap,Aap]=zp2tf(z,p,k); %由零极点转换为传递函数的形式

figure(1) freqs(Bap,Aap); %模拟低通滤波器的频率响应

TItle(‘模拟滤波器(低通原型)的频率响应’)

[Bbs,Abs]=lp2hp(Bap,Aap,Wn); %模拟低通变高通

figure(2)

freqs(Bbs,Abs);

TItle(‘模拟滤波器的频率响应’)

程序执行后可以发现其频率响应为: N=4,其波形如下图

模拟滤波器的频率响应

由上图分析可得:其符合高通的一般特征,与预期的效果一样。 而在此条件下,Butterworth滤波器低通原型的波形如下图。

模拟滤波器(低通原型)的频率响应

在设计的过程中,涉及一个频率变换的问题,即将模拟低通原型变为高通,其函数及用法如下:

[b,a]=lp2hp(Bap,Aap,Wn);

功能:把模拟滤波器原型转换成截至频率为 Wn 的高通滤波器。 其中,Bap,Aap分别为低通传递函数的分子向量和分母向量;

b,a分别为高通传递函数的分子向量和分母向量。

模拟滤波器变成数字滤波器

其程序为:

[Bbz,Abz]=bilinear(Bbs,Abs,FS); %用双线性变换法设计数字滤波器 freqz(Bbz,Abz,512,FS);

程序运行的结果为:如下图

数字滤波器的频率响应

由于使用的是双线性不变法设计的,其相位为非线性。此处主要是基于要获得严格的频率响应,以及较准确地控制截止频率的位置,故画出了详细的幅频响应。(如下图)

详细的幅频响应

分析该图可知其在0.6(即300Hz)处的衰减为40dB,而在0.8(即400Hz)处的衰减极小,应小于1dB。由此可见,此设计符合要求设计的参数。

而在调试的过程中发现:通带衰减越小,滤波器的性能越好 阻带衰减越大,滤波器的性能越好 其曲线也越陡峭,选择性越好,当然所用的滤波器阶数也越高。

当阻带衰减变为40dB(之前为20dB),通带不变时,其波形如下图。对比上图可知,其在阻带临界频率处衰减变为了40dB,曲线变陡峭了。

详细的幅频响应(阻带衰减为40dB)

当通带变为5dB时,阻带不变时,其波形如下图。对比图3-3可知,其在通带处的衰减变为了5dB,曲线平滑了一些。

详细的幅频响应(通带衰减为5dB)

理论计算数字滤波器的仿真

wp=0.8*pi;

ws=0.6*pi;

OmegaP=2*1000*tan(wp/2);

OmegaS=2*1000*tan(ws/2);

lamdas=OmegaP/OmegaS;

N=0.5*log10((10.^(20/10)-1)/(10.^(1/10)-1))/log10(lamdas);

%笔算的结果为N=3.6947;故取N=4 %

此处为计算高通的传递函数 Wn= 4.8890e+003 az=[0 0 0 0 1];

bz=[1 2.613 3.414,2.613,1]; [Bbs,Abs]=lp2hp(az,bz,Wn) %用双线性不变法处理

[Bbz,Abz]=bilinear(Bbs,Abs,1000); 其运行结果为:N=3.6947;图形如下图

理论计算的滤波器的幅频响应

综上所述,本滤波器以四阶即实现了预期的设计目标:采样频率为1000Hz,通带临界频率fp =400Hz,通带内衰减小于1dB(αp=1);阻带临界频率fs=300Hz,阻带内衰减大于20dB(αs=25),其在通带内的性能更好。


关键字:巴特沃斯滤波器  matlab

编辑:王磊 引用地址:http://www.eeworld.com.cn/mndz/article_2018012726921.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:巴特沃斯滤波器c语言代码
下一篇:单片机与串行时钟DS1307的接口设计

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

巴特沃斯滤波器c语言代码

巴特沃斯滤波器是电子滤波器的一种。巴特沃斯滤波器的特点是通频带的频率响应曲线最平滑。这种滤波器最先由英国工程师斯蒂芬·巴特沃斯(Stephen Butterworth)在1930年发表在英国<无线电工程>期刊的一篇论文中提出的。巴特沃斯滤波器的次数根据给定的参数设计模拟滤波器,然后进行变数变换,求取数字滤波器的方法,称为滤波器的间接设计。做为数字滤波器的设计基础的模拟滤波器,称之为原型滤波器。这里,我们首先介绍的是最简单最基础的原型滤波器,巴特沃斯低通滤波器。由于IIR滤波器不具有线性相位特性,因此不必考虑相位特性,直接考虑其振幅特性。在这里,N是滤波器的次数,Ωc是截止频率。从上式的振幅特性可以看出,这个是单调递减
发表于 2018-01-27
巴特沃斯滤波器c语言代码

MathWorks 推出 2018b 版本的 MATLAB 和 Simulink

MathWorks 宣布,推出 2018b 版本的 MATLAB 和 Simulink。该版本包含重要的深度学习增强功能,以及各个产品系列中的新功能和Bug修复。新的 Deep Learning Toolbox 取代了 Neural Network Toolbox,为工程师和科学家提供了用于设计和实现深度神经网络的框架。现在,图像处理、计算机视觉、信号处理和系统工程师可以使用 MATLAB 更轻松地设计复杂的网络架构,并改进其深度学习模型的性能。MathWorks 最近加入了 ONNX 社区,表明其对互操作性的支持,从而实现 MATLAB 用户与其他深度学习框架用户之间的协作。使用 R2018b 中
发表于 2018-09-19

matlab与stm32之间利用串口通信记录

;scom.InputBufferSize = 512;scom.BytesAvailableFcnMode = 'terminator';  % 'byte'scom.terminator = CR/LF ;scom.Timeout = 50; %read or write wait timefopen(scom);.fclose(scom);通常会在关闭串口后删除串口,在matlab工作空间中清除串口数据:delete(scom);clear scom;问题1.:matlab刚打开后,第一次可以成功打开串口,第二次再打开就会报错如下:>> scom = serial('com6','
发表于 2018-09-09

MathWorks 为 MATLAB 添加新的预测性维护产品

中国北京 – 2018 年 6 月 6 日 – MathWorks 今日宣布推出新的 MATLAB 产品 Predictive Maintenance Toolbox,帮助工程师设计并测试状态监测和预测性维护算法。Predictive Maintenance Toolbox 为算法工程师提供了一系列功能和参考范例,用来组织数据、设计状态指标、监测机器运行状况和预估剩余使用寿命 (RUL),从而避免设备故障。 借助 Predictive Maintenance Toolbox,工程师能分析和标注从存储于本地或云端的文件中导入的传感器数据。他们还能标注从 Simulink 模型生成的仿真故障数据以表征设备故障。利用在频谱分析
发表于 2018-06-07
MathWorks 为 MATLAB 添加新的预测性维护产品

当人工智能遇上MATLAB 模型训练简单化

会遇到两个问题:第一,数据量不够如何训练模型?第二,数据量太大如何快速进行标注?MathWorks产品市场经理赵志宏  迁移学习:通过模型产生数据训练神经网络  如果没有数据能做人工智能吗?这是很多初创公司的困惑。在笔者的概念里,正常的AI开发流程是,先采集数据,再训练模型。在最近的Matlab大会上,MathWorks产品市场经理赵志宏先生给出了一个不一样的答案,他表示,“数据、输出和模型是整个AI开发流程的一个步骤。如果开发者想做人工智能,又没有太多的数据,可以采用迁移学习的方法。” 迁移学习又是什么概念?不防从实际例子来理解。比如:通过人工智能的方式来预测风力发电机的故障,用户不能等到采集到大量故障数据以后再预测,这样不符合
发表于 2018-05-30
当人工智能遇上MATLAB 模型训练简单化

利用MATLAB/Simulink在自动加速路上做了两件大事

自动驾驶是目前比较热门的话题,包含的技术领域五花八门,例如:雷达、摄像头、汽车电控、激光雷达、物体识别、高精度地图、导航技术等等。小编特邀 MathWorks 行业技术专家来聊一聊 MathWorks 这几年的自动驾驶之路,分享最新的技术投入和应用亮点。◆  ◆  ◆  ◆MathWorks 对自动驾驶技术的投入可以总结为以下几个阶段:2015:SCANIA AEB 系统2015 年,瑞典著名的重卡生产商 SCANIA 发布了用 MATLAB/Simulink 设计的 AEB(自动紧急刹车)系统,看动画:在这个案例中,SCANIA 利用 MATLAB/Simulink
发表于 2018-04-30
利用MATLAB/Simulink在自动加速路上做了两件大事

小广播

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved