实验3无限冲激响应滤波器IIR算法实验.docx
- 文档编号:25770251
- 上传时间:2023-06-13
- 格式:DOCX
- 页数:8
- 大小:330.03KB
实验3无限冲激响应滤波器IIR算法实验.docx
《实验3无限冲激响应滤波器IIR算法实验.docx》由会员分享,可在线阅读,更多相关《实验3无限冲激响应滤波器IIR算法实验.docx(8页珍藏版)》请在冰豆网上搜索。
实验3无限冲激响应滤波器IIR算法实验
实验3:
无限冲激响应滤波器(IIR)算法实验
一、实验目的
1.熟悉IIR数字滤波器特性;
2.掌握IIR数字滤波器的设计过程;
3.掌握IIR数字滤波器性能测试方法。
二、实验设备
1.PC兼容机
2.WIN7操作系统
3.CodeComposerStudiov5
三、实验内容
1.掌握IIR数字滤波器的基础理论;
2.基于MATLAB的IIR数字滤波器参数确定方法;
3.采用C语言编程实现低通IIR滤波器;
4.掌握基于CCS的波形观察方法;观察滤波前后的波形变化。
四.实验原理分析
要求:
使用低通巴特沃斯滤波器,设计通带截止频率fp为1kHz、增益为-3dB,阻带截止频率fst为12kHz、衰减为30dB,采样频率fs为25kHz。
设计:
通带截止频率为:
fp=1000Hz,fst=12000Hz
(一)、滤波器参数计算
●模拟预畸变通带截止频率为:
wp=2fstan(2πfp/(2fs))=6316.5弧度/秒
●模拟预畸变阻带截止频率为:
wst=2fstan(2πfst/(2fs))=794727.2弧度/秒
由式(7.5.24)
●N=0.714,则:
一阶巴特沃斯滤波器就足以满足要求。
一阶模拟巴特沃斯滤波器的传输函数为:
H(s)=wp/(s+wp)=6316.5/(s+6316.5)
由双线性变换定义s=2fs(z-1)/(z+1)得到数字滤波器的传输函数为:
因此,差分方程为:
y[n]=0.7757y[n-1]+0.1122x[n]+0.1122x[n-1]。
(二)、基于MATLAB的滤波器参数求解
(1)IIR数字滤波器阶次的选择的MATLAB函数
[N,wc]=buttord(wp,wst,Rp,As);
[N,wc]=cheb1ord(wp,wst,Rp,As);
[N,wc]=cheb2ord(wp,wst,Rp,As);
[N,wc]=ellipord(wp,wst,Rp,As);
对低通滤波器,必须有wp 对高通滤波器,必须有wp>wst 对带通滤波器,必须有ws1 对带阻滤波器,必须有wp1 (2)IIR数字滤波器的设计 [b,a]=butter(N,wc,’ftype’) [b,a]=cheby1(N,wc,’ftype’) [b,a]=cheby2(N,wc,’ftype’) [b,a]=ellip(N,wc,’ftype’) (三)、基于C语言编程的IIR数字滤波器编程实现 程序流程图 五.实验步骤 1.打开CCS,进入CCS的操作环境。 2.打开工程,浏览程序: 工程目录为C: \ICETEK\ICETEK-DM6437-A\Lab0402_IIR 3.点击图标 ,CCS会自动编译、链接和下载程序。 4.运行程序。 可以观察收到的数据。 *选择菜单Tools->Graph->DualTime,进行如下设置: DualTime参数设置 *选择菜单Tools->Graph->FFTMagnitude,新建2个观察窗口,分别进行如下设置: 5.设置断点: 在有注释“breakpoint”的语句设置软件断点。 使用菜单的View->Breakpoints,打开断点观察窗口,在刚才设置的断点上右键->Breadkpointproperties调出断点的属性设置界面,设置Action为RefreshAllwindows。 则程序每次运行到断点,所有的观察窗口值都会被刷新。 其中,输入波形: 一个低频正弦波与一个高频正弦波的叠加;输出波形: 经过低通滤波后的低频正弦波。 6.运行并观察结果: ⑴F8键运行程序。 ⑵观察“IIR”窗口中时域图形;观察滤波效果。 7.退出CCS 六.实验结果 输入波形为一个低频率的正弦波与一个高频的余弦波叠加而成。 如图: 通过观察频域和时域图,得知: 输入波形中的低频波形通过了滤波器,而高频部分则被衰减。 六.问题与思考 基本任务: 1.试微调(±0.0001)改变程序中fU的取值,观察步长因子μ在自适应算法中所起的作用。 2.确定程序中的信号频率,试选用设计不同的信号、噪声组合,基于MATLAB设计不同的类型的滤波器,并基于CCS实现,并观察实验的结果。 3.分析实验程序,细化算法流程图。 4.结合CCS的使用,分析实验结果 提高任务: 5.尝试使用信号源生成组合信号,经过A/D采样后,送IIR滤波器实现。 源代码: #include"math.h" #defineIIRNUMBER2/*典范性的滤波器阶数*/ #defineSIGNAL1F1000/*正弦信号频率,代码中没有使用*/ #defineSIGNAL2F4500/*正弦信号频率,代码中没有使用*/ #defineSAMPLEF10000/*采样频率,代码中没有使用*/ #definePI3.1415926 floatInputWave();/*输入给IIR滤波器的信号,每次输出一个点*/ floatIIR();/*IIR滤波,每次输出一个点*/ /*滤波器的设计采用了案例的结果,应该重新设计*/ floatfBn[IIRNUMBER]={0.0,0.7757};/*IIR滤波器的分子多项式系数,有错*/ floatfAn[IIRNUMBER]={0.1122,0.1122};/*IIR滤波器的分母多项式系数*/ floatfXn[IIRNUMBER]={0.0};/*IIR滤波器的迭代初始值*/ floatfYn[IIRNUMBER]={0.0};/*IIR滤波器的输出值*/ floatfInput,fOutput;/*输入点和输出点*/ floatfSignal1,fSignal2;/*信号1、2的初始相位*/ floatfStepSignal1,fStepSignal2;/*信号1、2的相位步长*/ floatf2PI; inti; floatfIn[256],fOut[256]; intnIn,nOut; main() { nIn=0;nOut=0; f2PI=2*PI; fSignal1=0.0; fSignal2=PI*0.1; //fStepSignal1=2*PI/30; //fStepSignal2=2*PI*1.4; fStepSignal1=2*PI/50;/*信号1的相位步长: f1/fs=1/50*/ fStepSignal2=2*PI/2.5;/*信号2的相位步长: f1/fs=1/2.5*/ while (1) { fInput=InputWave(); fIn[nIn]=fInput; nIn++;nIn%=256; fOutput=IIR(); fOut[nOut]=fOutput; nOut++;/*请在此句上设置软件断点*/ if(nOut>=256) { nOut=0; } } } floatInputWave() { for(i=IIRNUMBER-1;i>0;i--) { fXn[i]=fXn[i-1]; fYn[i]=fYn[i-1]; } fXn[0]=sin(fSignal1)+cos(fSignal2)/6.0; fYn[0]=0.0; fSignal1+=fStepSignal1; if(fSignal1>=f2PI)fSignal1-=f2PI; fSignal2+=fStepSignal2; if(fSignal2>=f2PI)fSignal2-=f2PI; return(fXn[0]); } floatIIR() { floatfSum; fSum=0.0; /*y[n]=0.7757y[n-1]+0.1122x[n]+0.1122x[n-1]*/ for(i=0;i { fSum+=(fXn[i]*fAn[i]); fSum+=(fYn[i]*fBn[i]); } return(fSum); } WelcomeTo Download! ! ! 欢迎您的下载,资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 无限 冲激 响应 滤波器 IIR 算法
![提示](https://static.bdocx.com/images/bang_tan.gif)