实验 2 有限冲激响应滤波器(FIR)算法实验[骄阳教育]_第1页
实验 2 有限冲激响应滤波器(FIR)算法实验[骄阳教育]_第2页
实验 2 有限冲激响应滤波器(FIR)算法实验[骄阳教育]_第3页
实验 2 有限冲激响应滤波器(FIR)算法实验[骄阳教育]_第4页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、实验 2 : 有限冲激响应滤波器(FIR)算法实验一、实验目的1. 熟悉线性相位 FIR 数字滤波器特性; 2.了解各种窗函数对滤波器特性的影响;3.掌握FIR数字滤波器的窗函数法的设计过程;4.掌握 FIR 数字滤波器性能测试方法。二、实验设备1.PC 兼容机2.WIN7 操作系统3.Code Composer Studio v5 三、实验内容1.掌握FIR数字滤波器的基础理论;2.基于MATLAB的FIR数字滤波器参数确定方法; 3.采用C语言编程实现低通 FIR 滤波器;4.掌握基于CCS的波形观察方法;观察滤波前后的波形变化。四实验原理分析要求:用窗函数法,设计通带截止频率fp为10k

2、Hz,阻带截止频率fst为22kHz,采样频率fs为50kHz,阻带衰减为72dB的低通滤波器。解:(一)、滤波器参数计算(1)求数字滤波器的参数:l 数字通带截止频率wp为:2fp/fs = 0.4l 数字阻带截止频率wst为:2fst/fs = 0.88l 过渡带宽为:wst - wp = 0.48l 过渡带数字中心频率wc为:(wp + wst)/2 = 0.64(2)求窗函数的类型:l 根据阻带衰减为72dB的设计要求,选择布莱克曼窗l 窗函数长度为:N = 11/( wst - wp),N = 23阻带边缘频率-通带边缘频率 = 12kHz;(二)、基于MATLAB的滤波器参数求解(

3、1)blackman窗的计算利用blackman(N)计算blackman窗,其中N为滤波器的点数(2)验证理想低通滤波器单位冲激响应利用ideallp(wc,N)计算(-tao,tao)范围内的N点的理想低通滤波器的单位冲激响应function hd = ideallp( wc,N )%理想低通滤波器计算% hd = ideallp( wc,N )% h = 0 N-1之间的理想脉冲响应% N = 理想低通滤波器的长度tao = (N-1)/2;n = 0:1:(N-1);m = n-tao+eps;hd = sin(wc*m)./(m*pi);end(3)求解FIR低通数字滤波器的单位冲激

4、响应hd.*wd(三)、基于C语言编程的FIR 数字滤波器编程实现程序流程图五实验步骤1.打开 CCS,进入 CCS 的操作环境。2.打开工程,浏览程序:工程目录为C:ICETEKICETEK-DM6437-ALab0401_FIR3.点击图标 ,CCS 会自动编译、链接和下载程序。4.运行程序。可以观察收到的数据。*选择菜单 Tools-Graph-Dual Time,进行如下设置:Dual Time 参数设置输入、输出的时域波形其中,输入波形:一个低频正弦波与一个高频正弦波的叠加;输出波形:经过低通滤波后的低频正弦波。*选择菜单 Tools-Graph-Single Time,进行如下设置

5、:显示FIR低通滤波器的单位冲激响应。Single Time 参数设置h(n)的系数*选择菜单 Tools-Graph-FFT Magnitude,新建 2 个观察窗口,分别进行如下设置:分别显示输入波形、经低通滤波后输出波形的DFT幅度谱;FFT幅度谱的参数设置输入、输出波形的幅度谱5设置断点:在有注释“break point”的语句设置软件断点。 使用菜单的 View-Break points打开断点观察窗口,在刚才设置的断点上右键-Breadk point properties 调出断点的属性设置界面,设置 Action 为 Refresh All windows。 则程序每次运行到断点

6、,所有的观察窗口值都会被刷新,观察波形、幅度谱。6运行并观察结果: 按 F8 键运行程序。 观察窗口中时域图形;观察滤波效果。 观察窗口中频域图形;理解滤波效果。7退出 CCS。六实验结果输入波形为一个低频率的正弦波与一个高频的正弦波叠加而成。通过观察频域和时域图,得知:输入波形中的低频波形通过了滤波器,而高频部分则大部分被滤除。七问题与思考基本任务:1.确定程序中的信号频率,试选用设计不同的信号、噪声组合,基于MATLAB设计不同的类型的滤波器,并基于CCS实现,并观察实验的结果。2.分析实验程序,细化算法流程图。3.结合CCS的使用,分析实验结果提高任务:4.尝试使用信号源生成组合信号,经

7、过A/D采样后,送FIR滤波器实现。源代码:#include#define FIRNUMBER 25 /*滤波器的点数*/#define SIGNAL1F 1000 /*正弦信号频率,没用*/#define SIGNAL2F 4500/*正弦信号频率,没用*/#define SAMPLEF 10000/*采样频率,没用*/#define PI 3.1415926float InputWave(); /*输入给FIR滤波器的信号,每次输出一个点*/float FIR(); /*FIR滤波器,每次输出一个点*/float fHnFIRNUMBER= 0.0,0.0,0.001,-0.002,-0.

8、002,0.01,-0.009, -0.018,0.049,-0.02,0.11,0.28,0.64,0.28, -0.11,-0.02,0.049,-0.018,-0.009,0.01, -0.002,-0.002,0.001,0.0,0.0 ; /*可以根据信号频率自行设计*/float fXnFIRNUMBER= 0.0 ; /*滑动窗内的信号*/float fInput,fOutput; /*输入点和输出点*/float fSignal1,fSignal2; float fStepSignal1,fStepSignal2;float f2PI;int i;float fIn256,fO

9、ut256; /*输入波形和输出波形*/int nIn,nOut; /*输入信号和输出信号的索引*/main()nIn=0; nOut=0;f2PI=2*PI;fSignal1=0.0; /*信号1的初始相位*/fSignal2=PI*0.1; /*信号2的初始相位*/fStepSignal1=2*PI/30; /*信号1的相位步长:f1/fs = 1/30*/fStepSignal2=2*PI*1.4; /*信号1的相位步长: f2/fs = 1.4,违背了奈奎斯特采样定律*/while ( 1 )fInput=InputWave(); /*从输入信号中获取一个点*/fInnIn=fInput;nIn+; nIn%=256;fOutput=FIR(); /*输出一个经滤波后的点*/fOutnOut=fOutput; nOut+;/* 请在此句上设置软件断点 */if ( nOut=256 )nOut=0;float InputWave()for ( i=FIRNUMBER-1;i0;i- )fXni=fXni-1;fXn0=sin(fSignal1)+cos(fSignal2)/6.0;fSignal1+=fStepSignal1; if ( fSignal1=f2PI )fSignal1-=f2PI;fSig

温馨提示

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

评论

0/150

提交评论