实验无限冲激响应滤波器IIR算法实验.docx

上传人:b****5 文档编号:6911033 上传时间:2023-01-12 格式:DOCX 页数:6 大小:127.76KB
下载 相关 举报
实验无限冲激响应滤波器IIR算法实验.docx_第1页
第1页 / 共6页
实验无限冲激响应滤波器IIR算法实验.docx_第2页
第2页 / 共6页
实验无限冲激响应滤波器IIR算法实验.docx_第3页
第3页 / 共6页
实验无限冲激响应滤波器IIR算法实验.docx_第4页
第4页 / 共6页
实验无限冲激响应滤波器IIR算法实验.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

实验无限冲激响应滤波器IIR算法实验.docx

《实验无限冲激响应滤波器IIR算法实验.docx》由会员分享,可在线阅读,更多相关《实验无限冲激响应滤波器IIR算法实验.docx(6页珍藏版)》请在冰豆网上搜索。

实验无限冲激响应滤波器IIR算法实验.docx

实验无限冲激响应滤波器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弧度/秒

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);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1