无限冲击响应滤波器算法_第1页
无限冲击响应滤波器算法_第2页
无限冲击响应滤波器算法_第3页
无限冲击响应滤波器算法_第4页
无限冲击响应滤波器算法_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、dsp 实 验 报 告无限冲击滤波器算法无限冲击响应滤波器(iir)算法一、 实验目的1. 掌握设计iir数字滤波器的原理和方法;2. 熟悉iir数字滤波器的特性;3. 了解iir数字示波器的设计方法。二、 实验设备pc兼容机一台,操作系统为windows2000以上,安装code coposer studio 2.0软件三、 实验原理1. 无限冲击响应数字滤波器的基础理论;2. 模拟滤波器原理(巴特沃斯、切比雪夫、椭圆滤波器、贝塞尔滤波器等)。3. 数字滤波器的确定方法;4. 根据要求设计低通iir滤波器要求:低通巴特沃斯滤波器在其通带边缘1khz处的增益为-3db,12khz处的阻带衰减为

2、30db,采样频率为25khz。设计:确定待求通带边缘频率fp1hz、待求阻带边缘频率fs1hz和待求阻带衰减-20logsdb。 模拟边缘频率为:fp1 =1000hz,fs1=12000hz 阻带衰减为:-20logdb=30db用=2f/ fs把由hz表示的待求边缘频率转换成弧度表示,得到p1和s1。 p1=2fp1/ fs=21000/ 25000=0.08rad s1=2fs1/ fs=212000/ 25000=0.96rad计算预扭曲模拟频率以避免双线性变化带来的失真。 由w=2fs tan(/2)求得wp1和ws1,单位是 rad/swp1=2fs tan(p1/2)= 631

3、6.5 rad/sws1=2fs tan(s1/2)= 794727.2 rad/s由已给定的阻带衰减-20logsdb确定阻带边缘增益s 因为-20logs=30,所以s=0.03162计算滤波器的阶数 因此,一阶巴特沃斯滤波器就足以满足要求。一阶模拟巴特沃斯滤波器的传输函数为:h(s)=wp1/(s+wp1)=6316.5/(s+6316.5) 由双线性变换定义:因此差分方程:yn=0.7757yn-1+0.1122xn+0.1122xn-15. 程序流程图开始初始化工作变量调用波形发生子程序产生混叠的波形(高频+低频)调用iir滤波子程序计算当前输出波形发生计算步长用标准c的sin函数和

4、cos函数计算当前波形值返回波形值iir滤波用滤波器系数乘以保存的n-1个输入输出值和当前输入值并求和返回计算结果四、 实验步骤1. 实验准备 设置软件仿真模式 启动ccs2. 打开工程,浏览程序,工程目录为d:dspt7iiriir.pjt3. 编译并下载程序4. 打开窗口:选择菜单 view->graph->time/frquency,进行如下设置 5.清楚显示:在以上的窗口单机鼠标右键,选择弹出菜单中“clear display” 6.设置断点:在程序iir.c中加入软件断点 7.运行观察结果 (1)选择“debug”菜单中的“run”项运行程序  (2)观察“ii

5、r”窗口中时域波形;观察滤波效果。五、 实验结果输出的波形为一个低频率的正弦波与一个高频的余弦波叠加而成,如图: matlab仿真iir滤波器的单位脉冲响应源程序>> b=0.1122 0.1122;>> a=1 -0.7757;>>h w=freqz(b,a);>>plot(w/2/pi,abs(h)绘制显示出中幅频特性曲线,如图所示: 通过观察时域和频域图,得知:输入波形中的低频波形通过了滤波器,而高频部分则被衰减。matlab的仿真也可以看出来,iir滤波器在高频处的衰减使得信号中的高频分量被衰减,从而实现低通滤波器的功能。实验分析: 输入

6、波形为一个低频率的正弦波与一个高频的正弦波叠加而成。通过观察频域和时域图,得知:输入波形中的低频波形通过了滤波器,而高频部分则大部分被滤除。通过对滤波器参数的设计,可以改变该滤波器的滤波性能。实验心得:通过这个实验把以前学过的数字信号处理的知识有了更深的巩固了了解,尤其是iir滤波器的设计和应用方面,从模拟滤波器的设计,到模拟数字角频率的转换,再到最后数字滤波器的滤波有了很好的认识,这个对我们加深数字信号处理的认识有很好的帮助,更加直观的感受到了信号处理的作用和意义,对我们以后的学习有很大的帮助。六、 程序代码#include "dsp281x_device.h" / ds

7、p281x headerfile include file#include "dsp281x_examples.h" / dsp281x examples include file#include "f2812a.h"#include"math.h"#define iirnumber 2 /滤波器参数#define pi 3.1415926float inputwave(); /输入波形信号子函数调用声明float iir(); /滤波器子函数调用声明float fbniirnumber= 0.0,0.7757 ; /系统函数分母向量

8、矩阵float faniirnumber= 0.1122,0.1122 ; /系统函数分子向量矩阵float fxniirnumber= 0.0 ; /输入(过去的)信号的缓存float fyniirnumber= 0.0 ; /输出(过去的)信号缓存float finput,foutput;float fsignal1,fsignal2;float fstepsignal1,fstepsignal2;float f2pi; int i;float fin256,fout256; /定义256个地址空间的输入输出缓冲器int nin,nout;/*主函数*/main(void) nin=0;

9、nout=0;f2pi=2*pi; /三角函数周期为2,用于在调整相位增量在【0-2】fsignal1=0.0; /signal1 初相位0fsignal2=pi*0.1; /signal2 初相位0.1/fstepsignal1=2*pi/30;/fstepsignal2=2*pi*1.4;fstepsignal1=2*pi/50; /signal1 相位增量(分辨率)2/50fstepsignal2=2*pi/2.5; / signal2 相位增量(分辨率)2/2.5while ( 1 ) /循环执行滤波操作finput=inputwave(); /调用波形发生函数,产生单签相位点下的幅值

10、输入finnin=finput; /把产生的采样点值暂存在空间为256点的数组nin+; /序号自加,待下一次赋值给下个地址 nin%=256; /%表示取余,保证nin在【0-255】区间foutput=iir(); /调用iir函数,滤波输出的结果赋给foutputfoutnout=foutput; /foutput输出存储在输出缓冲数组nout+; /输出计数自加,待下一次输出赋值if ( nout>=256 ) /判断nout值,为256时刚好存满数组空间 nout=0; /此句设置断点,刚好显示满空间的fout /* 函数名称:inputwave 函数功能:产生采样点样值 入口

11、参数:无 出口参数:fxn0*/float inputwave()for ( i=iirnumber-1;i>0;i- ) /暂存前一次的输入输出作为迭代初值fxni=fxni-1;fyni=fyni-1;fxn0=sin(fsignal1)+cos(fsignal2)/6.0; /计算当前的输入值 作为输入送给filterfyn0=0.0;fsignal1+=fstepsignal1; /signal1的相位增量变化,分辨率2/50if ( fsignal1>=f2pi )fsignal1-=f2pi; /保证sin函数相位变化中始终在【0-2】fsignal2+=fstepsignal2; /signal2的相位增量变化,分辨率2/2.5if ( fsignal2>=f2pi )fsignal2-=f2pi; /保证sin函数的输入相位变化始终在【0-2】return(fxn0); /返回计算得到的inputwave值/*函数名称:iir函数 函数功能:通过迭代,实现滤波 入口参数: 无 出口参数: fsum滤波信号

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论