文档介绍:GE GROUP system office room 【GEIHUA16H-GEIHUA GEIHUA8Q8-GEIHUA1688】
实验无限冲激响应滤波器IIR算法实验
实验 3 : 无限冲激响应滤波器(IIAs);
对低通滤波器,必须有wp < wst
对高通滤波器,必须有wp > wst
对带通滤波器,必须有 ws1 < wp1 < wp2 < ws2
对带阻滤波器,必须有 wp1 < ws1 < ws2 < wp2
(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 数字滤波器编程实现
程序流程图
五.实验步骤
CCS,进入 CCS 的操作环境。
,浏览程序:工程目录为C:\ICETEK\ICETEK-DM6437-A\Lab0402_IIR
,CCS 会自动编译、链接和下载程序。
。可以观察收到的数据。
*选择菜单 Tools->Graph->Dual Time,进行如下设置:
Dual Time 参数设置
*选择菜单 Tools->Graph->FFT Magnitude, 新建 2 个观察窗口,分别进行如下设置:
:在有注释“break point”的语句设置软件断点。使用菜单的 View->Break points,打开断点观察窗口,在刚才设置的断点上右键->Breadk point properties 调出断点的属性设置界面,设置 Action 为 Refresh All windows。则程序每次运行到断点,所有的观察窗口值都会被刷新。其中,输入波形:一个低频正弦波与一个高频正弦波的叠加;输出波形:经过低通滤波后的低频正弦波。
6.运行并观察结果:
⑴ F8 键运行程序。
⑵ 观察“IIR”窗口中时域图形;观察滤波效果。
7.退出 CCS
输入波形为一个低频率的正弦波与一个高频的余弦波叠加而成。如图:
通过观察频域和时域图,得知:输入波形中的低频波形通过了滤波器,而高频部分则被衰减。
六.问题与思考
基本任务:
(±)改变程序中 fU 的取值,观察步长因子μ在自适应算法中所起的作用。
,试选用设计不同的信号、噪声组合,基于MATLAB设计不同的类型的滤波器,并基于CCS实现,并观察实验的结果。
,细化算法流程图。
,分析实验结果
提高任务:
,经过A/D采样后,送IIR滤波器实现。
源代码:
#include""
#define IIRNUMBER 2 /*典范性的滤波器阶数*/
#define SIGNAL1F 1000 /*正弦信号频率,代码中没有使用*/
#define SIGNAL2F 4500 /*正弦信号频率,代码中没有使用*/
#define SAMPLEF 10000 /*采样频率,代码中没有使用*/
#define PI
float InputWave(); /*输入给IIR滤波器的信号,每次输出一个点*/
float IIR(); /*IIR滤波,每次输出一个点*/
/*滤波器的设计采用了案例的结果,应该重新设计*/
float fBn[IIRNUMBER]={ , }; /*IIR滤波器的分子多项式系数,有错*/
float fAn[IIRNUMBER]={ , }; /*IIR滤波器的分母多项式系数*/
float fXn[IIRNUMBER]={ }; /*IIR滤波器的迭代初始值*/
float fYn[IIRNUMBER]={ }; /*IIR滤波器的输出值*/
float fInput,fOutput; /*输入点和输出点*/
float fSignal1,fSignal2; /*信号1、2的初始相位*/
float fStepSignal1,fStepSignal2; /*信号1、2的相位步长*/
float f2PI;
int i;
float fIn[256],fOut[256];
int nIn,nOut;
main()
{