实验六IIR滤波器的实现 - Read.DOCVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验六IIR滤波器的实现 - Read

实验六 IIR滤波器的实现 一、实验目的 熟悉IIR滤波器的滤波的原理 熟悉IIR滤波器的汇编实现 学习利用MATLAB设计IIR滤波器 学习数据对齐安排(.align) 二、实验设备 集成开发环境Code Composer Studio(简称CCS) 实验程序IIR.s54、Impulse.dat、sin.dat、coefficient.m、sin_generation.m、Lab.cmd和Lab.gel 三、实验内容 调试IIR滤波器的程序,了解循环缓存的更新 测试IIR滤波器的脉冲响应 观测IIR滤波器的频响后,产生正弦信号作为输入,验证滤波器性能 设计一个低通滤波器,编程实现并检验结果,其具体要求如下: 采样频率: 8000Hz 截止频率: 1500Hz 通带波纹: 0.5dB 阻带衰减: -30dB以下 滤波器级数: 5 实现时,考察在IIR滤波器中计算精度对数值的影响 四、实验结果和提示 IIR滤波器的设计通常都是利用成熟的模拟滤波器设计成果,通过冲击不变法或者双线性变换,将模拟滤波器变换为满足设计要求的数字滤波器。模拟滤波器的设计有三种常见的类型,分别为: 巴特沃思滤波器,其幅度响应在通带内具有最平特性; 切比雪夫滤波器允许在通带内具有波纹,其阶数要小于巴特沃思滤波器;切比雪夫滤波器分为I型和II型,I型的过渡带衰减速度快,而II型的通带内波纹较小; 椭圆滤波器的结束最小,且在通带和阻带内具有等波纹。 MATLAB对于这些常见的滤波器有专门的设计函数,分别为butter, cheby1, cheby2和ellipse,具体的函数调用可以查询MATLAB Help。考虑到本实验中滤波器级数较少及阻带衰减-30db以下的要求我选用了chebyshev I型滤波器。调用MATLAB函数[b,a]=cheby1(5, 0.5, 1500/8000*2)得到 b = [ 0.0074171 0.037085 0.074171 0.074171 0.037085 0.0074171 ] a = [ 1 –2.2582 2.9861 –2.3487 1.1125 –0.2543 ] b, a满足 调用MATLAB函数freqz(b, a)得到该IIR滤波器的频率响应如图1所示: 图1 IIR滤波器频率响应 可以看出该滤波器幅度响应符合设计要求。 2. 常见的IIR滤波器的实现有直接I型,直接II型,级联型和并联型。其中直接I型由等式直接得到,其信号流图如图2: 图2 N阶系统直接I型结构的信号流图 它非常形象,容易理解,但缺点是延迟单元多;直接II型根据系统实现顺序不改变传递函数的原理交换直接I形式显得先后顺序并合并延迟单元得到,这样极大的节省了所需要存储的中间变量数即系统开销,直接II型的信号流图如图3所示: 图3 N阶直接II型结构的信号流图 由于数字处理有限精度的影响,高阶直接型结构输出受处理精度影响很大,有时甚至会变成不稳定系统。采用将传递函数H(z)分解为多个子传递函数相乘或相加的方法可以将高阶系统变成多个低阶系统级联或并联的形式,低阶子系统受精度影响较小,从而可以保证系统稳定性,如图4和图5所示。 图4 二阶子系统的级联结构 图5 二阶子系统的并联结构 本实验中为了让大家体会到各个不同类型系统之间的差别实现了5阶直接I型系统子程序iir0和三个直接II型级联的子程序iir1,实验时可以在主程序中调用这两个子程序并比较结果。 3. 在子程序iir0中使用了循环缓存,循环缓存的优点在于不用在每次运算结束后通过存储延迟语句来更新数据,因为数据指针在数据区内循环,所以只需更新当前指针处的数据即可,此前的数据y(n)将自动成为y(n-1)。不过要注意的是循环寻址要求缓冲区必须从N位地址边界开始(N为满足的最小正整数,R为存储在BK中的循环长度)这就要求在分配内存时注意仔细安排。.align指令很好地实现了这个要求,它的参数必须是介于1和128之间的2的整数次幂,缺省值为128,即将数据分配在下一个数据页的边界上。 4. 运行程序前将impulse.dat导入数据区INPUT开始的数据区内,然后执行程序得到输出结果,利用CCS的绘图功能得到系统的脉冲响应图分别为图6和图7(加矩形窗)。 图6 直接I型的脉冲响应 图7 级联直接II型的脉冲响应 直接I型脉冲响应低频段有明显的震荡,说明有限精度对高阶直接型结构的影响较大。 5. 利用MATLAB产生由频率分量1000Hz, 1800Hz, 2500Hz组成的正弦信号作为输入,分别调用iir0和iir1得到相应的输出,图8、图9和图10所示。 图8 输入正弦信号的频谱 图9 iir0输出信号的频谱 图10 iir1输出信号的频谱 由图中可以看出通带

您可能关注的文档

文档评论(0)

2105194781 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档