matlab滤波器设计-IIR滤波器的设计与仿真

matlab滤波器设计-IIR滤波器的设计与仿真

1 引言
    在现代通信系统中,由于信号中经常混有各种复杂成分,所以很多信号的处理和分析都是基于滤波器而进行的。但是,传统的数字滤波器的设计使用繁琐的公式计算,改变参数后需要重新计算,从而在设计滤波器尤其是高阶滤波器时工作量很大。利用MATLAB信号处理箱(Signal Processing Toolbox)可以快速有效地实现数字滤波器的设计与仿真。

2 数字滤波器及传统设计方法
    数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。
    IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配,所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。其设计方法主要有经典设计法、直接设计法和最大平滑滤波器设计法。FIR数字滤波器的单位脉冲响应是有限长序列。它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。
    在对滤波器实际设计时,整个过程的运算量是很大的。设计阶数较高的IIR滤波器时,计算量更大,设计过程中改变参数或滤波器类型时都要重新计算。
    设计完成后对已设计的滤波器的频率响应要进行校核。要得到幅频、相频响应特性,运算量也是很大的。平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候要根据设计要求和滤波效果不断地调整,以达到设计的最优化。在这种情况下,滤波器设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成。利用MATLAB强大的计算功能进行计算机辅助设计,可以快速有效地设计数字滤波器,大大地简化了计算量。

3 IIR滤波器的MATLAB设计
3.1  FDATool界面设计
3.1.1 FDATool的介绍
    FDATool(Filter Design&Analysis Tool)是MATLAB信号处理工具箱里专用的滤波器设计分析工具,MATLAB 6.O以上的版本还专门增加了滤波器设计工具箱(Filter Design Toolbox)。FDATool可以设计几乎所有的常规滤波器,包括FIR和IIR的各种设计方法。它操作简单,方便灵活。
    FDATool。界面总共分两大部分,一部分是Design Filter。在界面的下半部,用来设置滤波器的设计参数;另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。Design Filter部分主要分为:Filter Type(滤波器类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的FIR滤波器。
   Design Method(设计方法)选项,包括IIR滤波器的Butterwotth(巴特沃思)法、Chebyshev  Type I(切比雪夫I型)法、Chebyshev Type II(切比雪夫II型)法、Elliptic(椭圆滤波器)法和FIR滤波器的Equiripple法、Least-Squares(最小乘方)法、Window(窗函数)法。
  Filter Order(滤波器阶数)选项,定义滤波器的阶数,包括Specify Order(指定阶数)和Minimum Order(最小阶数)。在Specify Order中填入所要设计的滤波器的阶数(N阶滤波器,Specify Order=N-1)。如果选择Minimum Order,则MATLAB根据所选择的滤波器类型自动使用最小阶数。
  Frequency Specifications选项,可以详细定义频带的各参数,包括采样频率和频带的截止频率。它的具体选项由Filter Type选项和Design Method选项决定。例如Bandpass(带通)滤波器需要定义Fstop1(下阻带截止频率)、Fpass1(通带下限截止频率)、Fpass2(通带上限截止频率)、Fstop2(上阻带截止频率),而Lowpass(低通)滤波器只需要定义Fstop1、Fpass1。采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定,所以只需定义通带截止频率,而不必定义阻带参数。
    Magnitude Specifications选项,可以定义幅值衰减的情况。例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减)、Wpass(通带范围内的幅值衰减)、Wstop2(频率Fstop2处的幅值衰减)。当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。
  Window Specifications选项,当选取采用窗函数设计,该选项可定义,它包含了各种窗函数。

3.1.2  IIR滤波器设计实例
    本文以一个IIR滤波器的设计为例说明如何使用MATLAB设计数字滤波器。要求设计一个10阶的带通Chebyshev I滤波器,它的通带范围是100到200Hz,采样频率为1000Hz,Rp=0.5。
    本例中,首先在Filter Type中选择Bandpass(带通滤波器);在Design Method选项中选择IIR,接着在相邻的右则选项中选择Chebyshev I(切比雪夫I型);指定Filter Order项中的Specify Order=10;由于采用的是切比雪夫设计,不必在Options中选择;然后在Frequency Specifications中选择Unit为Hz,给出采样频率Fs=1000,通带Fpass1=100和Fpass2=200;最后在Magnitude Specifications中选择Unit为db,Apass=0.5。设置完成后
点击Design Filter即可得到所设计的IIR滤波器。通过菜单选项Analysis可以在特性区看到所设计的幅频响应、相频响应、冲击响应和零极点配置等特性,如图1所示。设计完成后将结果保存为filterl.fda文件。

 

 
 

 
 

 
图1滤波器的幅频、相频和冲激响应(特性区)

3.2  程序设计法
  在MATLAB中,对各种滤波器的设计都有相应的计算振幅、相位和冲激响应的函数,可以用来做滤波器程序设计。
  上例的IIR滤波器的冲激响应可用程序设计如下:
%ehebyshevl bpf
n=10;    %阶数为10
Rp=0.5;  %幅值衰减为0.5
Wn[100 200]/500;
[b,a]=chebyl(n,Rp,wn);
[y,t]impz(b,a,101);
stem(t,y,'.');
    在MATLAB环境下运行该程序即可得到滤波器的时域冲激响应。由于篇幅所限,这里不再详述源程序。

3.3设计实例分析
   由图1(a)可知,这种滤波器在100-200Hz的通带范围内是等波纹的,而在阻带中是单调的,这是Chebyshev I滤波器的幅频特性。由图1(b)可知,在100-200Hz的范围内相移较小,其曲线近似一条直线,失真较小;当频率超过这一范围时,相移较大,而且其曲线是非直线的,所以失真也较大。图1(c)得到了Chebyshev  I滤波器的时域冲激响应,在5ms-100ms有冲激响应,超过这一范围的冲激响应近似为零,进而实现了Chebyshev I带通
滤波器的设计。

4 Simulink仿真
4.1 Simulink仿真实例
    通过调用Simulink中的功能模块,可以构成数字滤波器的仿真框图。在仿真过程中,双击各功能模块,随时改变参数,获得不同状态下的仿真结果。例如原始信号x(t)=2sin(0.05wt)+w(t),w(t)为随机信号,幅值为0.2,通过一传递函数为H(z)=0.15/(1-0.8z-1)的滤波器可得到如图2的仿真结果。其中仿真过程中可导入FDATool所设计的滤波器文件。

 

 


 

 

4.2  仿真分析
    比较图2中(b)和(c)的波形可知,输入的原始信号经过滤波器滤波后,(b)中波形的毛刺部分(即干扰噪声)被滤除,输出的信号更接近正弦波,如(c)中所示波形。由此说明,传递函数为H(z)=0.15/(1-0.8z-1)的滤波器的设计是恰当的。

5 结论
    利用MATLAB的强大运算功能,基于MATLAB的信号处理工具箱(Signal Processing Toolbox)的数字滤波器设计法可以快速有效地设计由软件组成的常规数字滤波器,设计方便、快捷,大大减轻了工作量。在设计过程中可以对比滤波器特性。随时更改参数,以达到滤波器设计的最优化。利用MATLAB设计数字滤波器在数字通信系统和计算机领域信号处理中,有着广泛的应用前景,可关注。

【以上信息由艾博检测整理发布,如有出入请及时指正,如有引用请注明出处,欢迎一起讨论,我们一直在关注其发展!专注:CCC/SRRC/CTA/运营商入库】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/26341.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AlienSwap 首期 Launchpad — 粉丝偶像女团 NFT+RWA 的创新探索

NFT 是整个加密市场一致看好,并认为会继续爆发的领域。随着更多的 NFT 平台和 NFT 项目的推出,NFT 市场的格局也在不断变化。从开始的 OpenSea 占据领先地位,到 Blur 的横空出世风头无两,在加密领域,局势更迭总是在不经…

Hive自定义函数

本文章主要分享单行函数UDF(一进一出) 现在前面大体总结,后边文章详细介绍 自定义函数分为临时函数与永久函数 需要创建Java项目,导入hive依赖 创建类继承 GenericUDF(自定义函数的抽象类)(实现…

如何通过Pytest的插件,轻松切换自动化测试的环境地址?

前言 前面小编介绍了如何通过Pytest的插件来实现自动化测试的环境的切换,当时使用的方法是通过钩子函数进行获取命令行参数值,然后通过提前配置好的参数进行切换测试环境地址。 今天小编再次介绍一种方法,通过Pytest的插件:pyte…

谷歌Bard更新中文支持;GPT-4:1.8万亿参数、混合专家模型揭秘; Meta推出商用版本AI模型

🦉 AI新闻 🚀 谷歌的AI聊天工具Bard更新,增加中文支持 摘要:谷歌的AI聊天工具Bard新增中文环境,用户可以使用简体和繁体中文进行交流。然而,与竞品相比,Bard的回复略显生硬,语义理…

Redis深入——管道、发布订阅、主从复制、哨兵监控和集群

前言 在前面的学习中,我们已经了解了Redis的基本语法以及Redis持久化和事务的概念。而在这篇文章中我们继续来梳理管道、发布订阅、主从复制、哨兵监控和集群的知识,理解Redis主从复制到集群分片的演进过程,希望对正在学习的小伙伴有一定的帮…

关于学习过程中的小点

nfev : 函数求值次数njev : Jacobian 评估的数量nit :算法的迭代次数 permute(dims)#维度转换 torch.split #[按块大小拆分张量] Pytorch.view Pytorch中使用view()函数对张量进行重构维度,类似于resize()、reshape()。用法如下:view(参数a,参数b,...)&a…

Boojum:zkSync的高性能去中心化STARK证明系统

1. 引言 2023年7月17日zkSync官方twitter Say hello to Boojum宣称在不regenesis的情况下,将zkSync Era迁移至Boojum证明系统。 Boojum为STARK证明系统(PlonkFRI),开源代码见: https://github.com/matter-labs/era-…

Python爬虫学习笔记(三)————urllib

目录 1.使用urllib来获取百度首页的源码 2.下载网页图片视频 3.总结-1 4.请求对象的定制(解决第一种反爬) 5.编解码 (1)get请求方式:urllib.parse.quote() (2)get请求…

微信小程序用户登录及头像昵称设置教程(前后端)

目录 1.背景分析 2.具体需求分析 3.前端设计 3.1 用户登录 3.2 头像昵称填写(个人信息界面) 4.后端设计 4.1项目架构分析 4.2 代码分析 实体类 dao层 service层 controller层 工具类 5.nginx部署 6.效果演示 1.背景分析 众所周知&#x…

拒绝无效内卷|*CTF 2023邀你一起hack for fun!

注意 ⚠️ 2023年07月29日 *CTF 2023携重磅赛题惊喜来袭 请求加入你的假期计划! 7月29日09:00-30日09:00 CTF 2023 再度回归 由复旦大学*****战队倾力打造 赛题一如既往质量与趣味并存 知识量与时效性双高 结合时下最新安全漏洞 专注底层逻辑思考 注重知识点本身 …

四阶龙格-库塔方法matlab程序与误差对比

四阶龙格-库塔方法matlab程序与误差对比 简介参考code四阶龙格-库塔函数微分方程函数主程序 结果分析 简介 本例子函数参考了【1】中的函数,增加了解析方法的函数与四阶龙格-库塔方法对比,并计算了百分比误差,最大误差在0.3%左右。 参考 【…

Codeforces Round 884 (Div. 1 + Div. 2)(视频讲解A--D)

[TOC](Codeforces Round 884 (Div. 1 Div. 2)&#xff08;视频讲解A–D&#xff09;) 视频链接&#xff1a;Codeforces Round 884 (Div. 1 Div. 2)&#xff08;视频讲解A–D&#xff09; A Subtraction Game 1、 板书&#xff1a; 2、代码 #include<bits/stdc.h> #…