实验 2 有限冲激响应滤波器FIR算法实验1.docx

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

实验 2 有限冲激响应滤波器FIR算法实验1.docx

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

实验 2 有限冲激响应滤波器FIR算法实验1.docx

实验2有限冲激响应滤波器FIR算法实验1

实验2:

有限冲激响应滤波器(FIR)算法实验

一、实验目的

1.熟悉线性相位FIR数字滤波器特性;

2.了解各种窗函数对滤波器特性的影响;

3.掌握FIR数字滤波器的窗函数法的设计过程;

4.掌握FIR数字滤波器性能测试方法。

二、实验设备

1.PC兼容机

2.WIN7操作系统

3.CodeComposerStudiov5

三、实验内容

1.掌握FIR数字滤波器的基础理论;

2.基于MATLAB的FIR数字滤波器参数确定方法;

3.采用C语言编程实现低通FIR滤波器;

4.掌握基于CCS的波形观察方法;观察滤波前后的波形变化。

四.实验原理分析

要求:

用窗函数法,设计通带截止频率fp为10kHz,阻带截止频率fst为22kHz,采样频率fs为50kHz,阻带衰减为72dB的低通滤波器。

解:

(一)、滤波器参数计算

(1)求数字滤波器的参数:

●数字通带截止频率wp为:

2πfp/fs=0.4π

●数字阻带截止频率wst为:

2πfst/fs=0.88π

●过渡带宽为:

wst-wp=0.48π

●过渡带数字中心频率wc为:

(wp+wst)/2=0.64π

(2)求窗函数的类型:

●根据阻带衰减为72dB的设计要求,选择布莱克曼窗

●窗函数长度为:

N>=11π/(wst-wp),N=23

阻带边缘频率-通带边缘频率=12kHz;

(二)、基于MATLAB的滤波器参数求解

(1)blackman窗的计算

利用blackman(N)计算blackman窗,其中N为滤波器的点数

(2)验证理想低通滤波器单位冲激响应

利用ideallp(wc,N)计算(-tao,tao)范围内的N点的理想低通滤波器的单位冲激响应

functionhd=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低通数字滤波器的单位冲激响应

hd.*wd’

(三)、基于C语言编程的FIR数字滤波器编程实现

程序流程图

五.实验步骤

1.打开CCS,进入CCS的操作环境。

2.打开工程,浏览程序:

工程目录为C:

\ICETEK\ICETEK-DM6437-A\Lab0401_FIR

3.点击图标

,CCS会自动编译、链接和下载程序。

4.运行程序。

可以观察收到的数据。

*选择菜单Tools->Graph->DualTime,进行如下设置:

DualTime参数设置

输入、输出的时域波形

其中,输入波形:

一个低频正弦波与一个高频正弦波的叠加;输出波形:

经过低通滤波后的低频正弦波。

*选择菜单Tools->Graph->SingleTime,进行如下设置:

显示FIR低通滤波器的单位冲激响应。

SingleTime参数设置

h(n)的系数

*选择菜单Tools->Graph->FFTMagnitude,新建2个观察窗口,分别进行如下设置:

分别显示输入波形、经低通滤波后输出波形的DFT幅度谱;

FFT幅度谱的参数设置

输入、输出波形的幅度谱

5.设置断点:

在有注释“breakpoint”的语句设置软件断点。

使用菜单的View->Breakpoints打开断点观察窗口,在刚才设置的断点上右键->Breadkpointproperties调出断点的属性设置界面,设置Action为RefreshAllwindows。

则程序每次运行到断点,所有的观察窗口值都会被刷新,观察波形、幅度谱。

6.运行并观察结果:

⑴按F8键运行程序。

⑵观察窗口中时域图形;观察滤波效果。

⑶观察窗口中频域图形;理解滤波效果。

7.退出CCS。

六.实验结果

输入波形为一个低频率的正弦波与一个高频的正弦波叠加而成。

通过观察频域和时域图,得知:

输入波形中的低频波形通过了滤波器,而高频部分则大部分被滤除。

七.问题与思考

基本任务:

1.确定程序中的信号频率,试选用设计不同的信号、噪声组合,基于MATLAB设计不同的类型的滤波器,并基于CCS实现,并观察实验的结果。

2.分析实验程序,细化算法流程图。

3.结合CCS的使用,分析实验结果

提高任务:

4.尝试使用信号源生成组合信号,经过A/D采样后,送FIR滤波器实现。

源代码:

#include

#defineFIRNUMBER25/*滤波器的点数*/

#defineSIGNAL1F1000/*正弦信号频率,没用*/

#defineSIGNAL2F4500/*正弦信号频率,没用*/

#defineSAMPLEF10000/*采样频率,没用*/

#definePI3.1415926

floatInputWave();/*输入给FIR滤波器的信号,每次输出一个点*/

floatFIR();/*FIR滤波器,每次输出一个点*/

floatfHn[FIRNUMBER]={0.0,0.0,0.001,-0.002,-0.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

};/*可以根据信号频率自行设计*/

floatfXn[FIRNUMBER]={0.0};/*滑动窗内的信号*/

floatfInput,fOutput;/*输入点和输出点*/

floatfSignal1,fSignal2;

floatfStepSignal1,fStepSignal2;

floatf2PI;

inti;

floatfIn[256],fOut[256];/*输入波形和输出波形*/

intnIn,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();/*从输入信号中获取一个点*/

fIn[nIn]=fInput;

nIn++;nIn%=256;

fOutput=FIR();/*输出一个经滤波后的点*/

fOut[nOut]=fOutput;

nOut++;/*请在此句上设置软件断点*/

if(nOut>=256)

{

nOut=0;

}

}

}

floatInputWave()

{

for(i=FIRNUMBER-1;i>0;i--)

fXn[i]=fXn[i-1];

fXn[0]=sin(fSignal1)+cos(fSignal2)/6.0;

fSignal1+=fStepSignal1;

if(fSignal1>=f2PI)fSignal1-=f2PI;

fSignal2+=fStepSignal2;

if(fSignal2>=f2PI)fSignal2-=f2PI;

return(fXn[0]);

}

floatFIR()

{

floatfSum;

fSum=0;

for(i=0;i

{

fSum+=(fXn[i]*fHn[i]);

}

return(fSum);

}

如有侵权请联系告知删除,感谢你们的配合!

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

当前位置:首页 > 经管营销

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

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