基于汉宁窗的FIR数字滤波器.docx

上传人:b****1 文档编号:2021546 上传时间:2023-05-02 格式:DOCX 页数:14 大小:98.51KB
下载 相关 举报
基于汉宁窗的FIR数字滤波器.docx_第1页
第1页 / 共14页
基于汉宁窗的FIR数字滤波器.docx_第2页
第2页 / 共14页
基于汉宁窗的FIR数字滤波器.docx_第3页
第3页 / 共14页
基于汉宁窗的FIR数字滤波器.docx_第4页
第4页 / 共14页
基于汉宁窗的FIR数字滤波器.docx_第5页
第5页 / 共14页
基于汉宁窗的FIR数字滤波器.docx_第6页
第6页 / 共14页
基于汉宁窗的FIR数字滤波器.docx_第7页
第7页 / 共14页
基于汉宁窗的FIR数字滤波器.docx_第8页
第8页 / 共14页
基于汉宁窗的FIR数字滤波器.docx_第9页
第9页 / 共14页
基于汉宁窗的FIR数字滤波器.docx_第10页
第10页 / 共14页
基于汉宁窗的FIR数字滤波器.docx_第11页
第11页 / 共14页
基于汉宁窗的FIR数字滤波器.docx_第12页
第12页 / 共14页
基于汉宁窗的FIR数字滤波器.docx_第13页
第13页 / 共14页
基于汉宁窗的FIR数字滤波器.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于汉宁窗的FIR数字滤波器.docx

《基于汉宁窗的FIR数字滤波器.docx》由会员分享,可在线阅读,更多相关《基于汉宁窗的FIR数字滤波器.docx(14页珍藏版)》请在冰点文库上搜索。

基于汉宁窗的FIR数字滤波器.docx

基于汉宁窗的FIR数字滤波器

 

课程设计目的

(1)熟悉用窗函数法设计FIR数字滤波器的原理与方法;

(2)了解用等波纹最佳逼近法设计FIR数字滤波器的原理与方法;

(3)掌握调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具fdatool)设计各种FIR数字滤波器,学会根据滤波需求确定滤波器指标参数。

(4)通过观察滤波器输入输出信号的时域波形及其频谱,加深对数字滤波器的概念理解。

课程设计要求

(1)简述线性相位FIR滤波器的特点及条件;

(2)简述窗函数法FIR滤波器的设计步骤和等波纹最佳逼近法的设计思想;

(3)解释吉布斯效应,比较各种典型窗函数的性能特点;

(4)完成以上设计实验,并对结果进行分析和解释;

(5)打印程序清单和要求画出的信号波形;

(6)写出本次课程设计的收获和体会。

课程设计注意事项

(1)采样间隔采样间隔过大或过小都会产生较大的误差和频谱混叠现象,因此采样频率通常选为(3~4)fh(fh为信号的最高频率)。

(2)截断、泄露和窗函数为了减小截断的影响,常采用其他的时窗函数来对所截取的时域信号进行加权处理。

所选的窗函数应力求其频谱的主瓣宽度窄些,旁瓣幅度小些。

课程设计内容

用汉宁窗函数法设计一个数字FIR带通滤波器,要求通带边界频率为400Hz,500Hz,阻带边界频率为350Hz,550Hz,通带最大衰减1dB,阻带最小衰减40dB,抽样频率为2000Hz,用MATLAB画出幅频特性,画出并分析滤波器系统函数的零极点;

信号

经过该滤波器,其中

450Hz,

600Hz,滤波器的输出

课程设计简要操作步骤

1.选题:

我选的课题是基于汉宁窗的FIR数字滤波器设计;

2.了解数字滤波器和汉宁窗的设计原理;

3.掌握了解课程设计的设计要求和设计方法,开发及设计工具的使用方法;

4.根据指标要求拟定设计方案,对设计方案进行分析选择最优设计方案进行设计;

5.在Matlab软件环境下编写仿真程序,运行观察仿真结果进行分析得出结论;

6.整理清单和目录,书写设计报告。

课程设计心得体会

 通过两周的基于汉宁窗的FIR数字滤波器设计,对于MATLAB语句有了更加深刻的理解,也注意到了一些运算符号的使用,掌握了一些课程设计的设计要求和设计方法,开发及设计工具的使用方法,最重要的是通过这一设计实践的过程,我们不再约束在理论上,而且锻炼了动手能力和分析解决问题的能力,积累了经验,培养了按部就班,一丝不苟的态度和对所学知识的综合应用能力,而且通过同学间的分组合作课题,锻炼了我们的团队合作能力。

     这次的数字信号处理实训,让我受益匪浅,不只是老师和书本带来的知识与收获,还可以通过我们的自我实践来完成目标设计,是对我们很好的锻炼,既巩固知识,又提高了实践动手能力。

课程设计评语及成绩

评语

成绩

指导教师

(签名)

 

年月日

  目录

目录4

一.摘要5

二.原理说明6

2.1数字滤波技术6

2.2FIR滤波器7

三.窗函数简介:

汉宁窗8

四.程序设计9

五.结果与分析12

5.1汉宁窗函数仿真结果12

5.2汉宁窗函数仿真结果分析14

六.总结与体会14

七.致谢15

八.参考文献15

一.摘要

数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。

根据其单位冲激响应函数的时域特性可分为两类:

无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。

与IIR滤波器相比,FIR的实现是非递归的,总是稳定的;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性。

因此,它在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。

滤波器的设计是信号处理的核心问题之一。

根据FIR滤波器的原理,提出了FIR滤波器的窗函数设计法,给出了在MATLAB环境下,用窗函数法设计FIR滤波器的过程和设计实例。

通过利用汉宁窗函数方法设计FIR滤波器,对所设计的滤波器进行分析比较,得出设计的滤波器的优缺点及其不同的使用场合,从而可以在设计滤波器时能够正确的选择FIR数字滤波器的窗函数的选取及设计方法。

关键词:

MATLAB汉宁窗

 

二.原理说明

 随着信息时代的到来,数字信号处理已经成为一门极其重要的学科和技术,并且在通信、语音、图像、自动控制等众多领域得到了广泛的应用。

在数字信号处理中,数字滤波器占有极其重要的地位,它具有精度高、可靠性好、灵活性大等特点。

现代数字滤波器可以用软件或硬件两种方式来实现。

软件方式实现的优点是可以通过滤波器参数的改变去调整滤波器的性能。

MATLAB是一种面向科学和工程计算的语言,它集数值分析、矩阵运算、信号处理和图形显示于一体,具有编程效率高、调试手段丰富、扩充能力强等特点。

MATLAB的信号处理工具箱具有强大的函数功能,它不仅可以用来设计数字滤波器,还可以使设计达到最优化,是数字滤波器设计的强有力工具。

2.1数字滤波技术

数字滤波,就是通过一定的计算或判断程序减少干扰在有用信号中的比重,故实质上是一种程序滤波。

与此对应的就是模拟滤波,由于模拟滤波牵扯到的其他知识太多在此不详细介绍了,模拟滤波主要无源绿波(直接用电阻、电容、电感等不外接电源的元件组成的)与有源滤波(如运算放大器等需要外接电源组成的),其目的是将信号中的噪音和干扰滤去或者将希望得到的频率信号滤出为我所用。

数字滤波的出现克服了模拟滤波的很多不足,具有以下优点:

A.是用程序实现的,不需要增加硬设备,所以可靠性高,稳定性好。

B.可以对频率很低的信号实现滤波,克服了模拟滤波的缺陷。

C.可以根据信号的不同,采用不同的滤波方法或参数,具有灵活、方便、功能强的特点。

几种常用的滤波方法:

1.算术平均值法

2.中值滤波法

3.滑动平均值法

4.限幅滤波法

5.惯性滤波法

数字滤波技术通过数字滤波器实现,从实现方法上可以分为FIR数字滤波器和IIR数字滤波器,按功能可分为低通滤波器(LPF)、高通滤波器(HPF)、带通滤波器(BPF)和带阻滤波器(BSF)。

本文主要对FIR滤波器加以介绍。

2.2FIR滤波器

FIR(FiniteImpulseResponse)滤波器:

有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。

因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。

FIR滤波器的工作原理:

在进入FIR滤波器前,首先要将信号通过A/D器件进行模数转换,使之成为8bit的数字信号,一般可用速度较高的逐次逼进式A/D转换器,不论采用乘累加方法还是分布式算法设计FIR滤波器,滤波器输出的数据都是一串序列,要使它能直观地反应出来,还需经过数模转换,因此由FPGA构成的FIR滤波器的输出须外接D/A模块。

FPGA有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说,其并行性和可扩展性更好,利用FPGA乘累加的快速算法,可以设计出高速的FIR数字滤波器。

 

窗函数设计法是FIR滤波器的一种基本设计方法,它的基本思路是直接从立项滤波器的频率特性入手,通过积分求出对应的单位采样响应表达式,最后通过加窗,得到满足要求的FIR滤波器的单位采样响应,窗函数在很大程度上决定了FIR滤波器的性能指标,因此称作“窗函数设计法”。

三.窗函数简介:

汉宁窗

窗函数法是设计FIR滤波器的最主要方法之一,实际中遇到的离散时间信号总是有限长的,因此不可避免的要遇到数据截短的问题,在信号处理中,对离散序列的截短是通过序列与窗函数相乘来实现的。

在信号处理中,窗函数是一种除在给定区间之外取值均为0的实函数。

譬如:

在给定区间内为常数而在区间外为0的窗函数被形象地称为矩形窗。

任何函数与窗函数之积仍为窗函数,所以相乘的结果就像透过窗口“看”其他函数一样。

窗函数在光谱分析、滤波器设计以及音频数据压缩等方面有广泛的应用。

汉宁窗(HanningWindow)又称升余弦窗,汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是3个sint型函数之和,而括号中的两项相对于第一个谱窗向左、右各移动了π/T,从而使旁瓣互相抵消,消去高频干扰和漏能。

可以看出,汉宁窗主瓣加宽并降低,旁瓣则显著减小,从减小泄漏观。

汉宁窗(Hanning)函数时域形式可表示为:

利用傅利叶变换的调制特性,由上式可得汉宁窗的平谱函数为:

   式中,

   当N远大于1时,上式可近似表示为:

   这三部分之和使旁瓣互相抵消,能量更集中在主瓣,汉宁窗函数的最大旁瓣值比主瓣值低31dB,但是主瓣宽度比矩形窗函数的主瓣宽度增加了1倍,为8π/N。

   hanning函数:

生成汉宁窗

调用方式:

   

(1)w=hanning(n):

输入参数n是窗函数的长度;输出参数w是由窗函数的值组成的n阶向量。

   注意:

此函数不返回是零点的窗函数的首尾两个元素。

   

(2)w=hanning(n,'symmetric'):

与上面相类似。

   (3)w=hanning(n,'periodic'):

此函数返回包括为零点的窗函数的首尾两个元素。

四.程序设计

用汉宁窗函数法设计一个数字FIR带通滤波器,要求通带边界频率为400Hz,500Hz,阻带边界频率为350Hz,550Hz,通带最大衰减1dB,阻带最小衰减40dB,抽样频率为2000Hz,用MATLAB画出幅频特性,画出并分析滤波器系统函数的零极点;

信号

经过该滤波器,其中

450Hz,

600Hz,滤波器的输出

hanning窗设计程序:

%用汉宁窗函数法设计一个数字FIR带通滤波器%

clearall;clc

Fs=2000;fpl=400;fpu=500;fsl=350;fsu=550;

wpl=2*pi*fpl/Fs;wpu=2*pi*fpu/Fs;%通带截止频率%

wsl=2*pi*fsl/Fs;wsu=2*pi*fsu/Fs;%阻带频率频率%

Bt=wpl-wsl;%计算过渡带宽度%

N0=ceil(6.2*pi/Bt);%计算所需h(n)长度N0,ceil取大于等于%

wc=[(wpl+wsl)/2/pi,(wpu+wsu)/2/pi];%计算理想带通滤波器截止频率%

N=N0+mod(N0+1,2);;%确保h(n)长度N是奇数%

n=0:

N-1;

hn=fir1(N-1,wc,hanning(N));%调用firl计算带通FIR数字滤波器的h(n)%

[H,w]=freqz(hn,1,1024);%计算频率响应函数h(n)%

figure

(1);

magH=20*log10(abs(H)/max(abs(H)));%计算幅度%

subplot(3,1,1);stem(n,hn,'.');

xlabel('n');

ylabel('h(n)');

title('汉宁窗FIR数字带通滤波器的单位脉冲响应');

subplot(3,1,2);plot(w/pi*Fs/2,magH);%绘制幅度特性%

title('汉宁窗FIR数字带通滤波器的幅度特性');

xlabel('频率/Hz');

ylabel('20lg|Hg(e^j^\omega)|/max(|Hg(e^j^\omega)|)');

gridon;

subplot(3,1,3);plot(w/pi*Fs/2,unwrap(angle(H)));%频率响应相位%

title('汉宁窗FIR数字带通滤波器的相位特性');

xlabel('频率/Hz');

ylabel('相位/rad');

gridon;

figure

(2);

zplane(hn,1);;%绘制零极点图%

title('汉宁窗FIR数字带通滤波器系统函数的零极点图');

legend('零点','极点');

gridon;

n=0:

1023;

dt=1/Fs;t=n*dt;Tp=1024*dt;

f1=450;f2=600;

x=sin(2*pi*f1*t)+sin(2*pi*f2*t);

y=filter(hn,1,x);

figure(3);

subplot(2,1,1);

plot(t,x);

title('输入信号x(t)');

xlabel('t/s');

ylabel('x(t)');

axis([0,Tp/6,min(x),max(x)]);

subplot(2,1,2);

plot(t,y);

title('输出信号y(t)');

xlabel('t/s');

ylabel('y(t)');

axis([0,Tp/6,min(y),max(y)]);

五.结果与分析

5.1汉宁窗函数仿真结果

图1

图2

图3

5.2汉宁窗函数仿真结果分析

由仿真波形图可以得出以下几个方面的分析结果:

由图1,汉宁窗是典型的升余弦窗,基本符合汉宁窗函数的时域表达式,所加的窗口是余弦函数(类似余弦函数)第一幅图可以看出初始状态为零时单位脉冲响应的变化,大约在n=62处偶对称,这说明FIR带通滤波器相位是严格的线性关系;再由第二幅幅度特性看出在频率400—500之间时,幅度为零,即为通带边界频率;由第三幅相位特性图看出频率在350—550之间时相位呈衰减趋势,即为阻带边界频率也就是说旁瓣幅度远小于主瓣幅度,能量全部集中在主瓣,主瓣宽度也有所增加,效果比较明显。

由图2可以看出,极点为0,零点分布在1和-1附近,是互为倒数的共轭对,还有几个特殊的零点和极点同在0上。

由图3可以看出,汉宁窗设计的输入信号x(t)的波形在通过滤波器的软件运行后,在通带之外的波形被过滤掉,经过大概0.03s,在通带频率之外的频率的信号的幅度将受到很大的影响,以致信号不能通过滤波器,最后输出y(t)波形经过滤波后可以认为是较均匀的余弦波信号,其中的不规则由吉布斯效应产生。

六.总结与体会

本次MATLAB课程设计主要任务是完成FIR滤波器的设计,对我来说这个题目还是很有挑战性的,因为自己对MATLAB中有关滤波器的设计知识了解较少,但正是这种有挑战性的题目才能提高自己的能力,才有研究价值,入手这个题目后我查阅了相关的资料,也从网上获得了不少有关MATLAB设计滤波器的资料,加上自己之间对MATLAB有一定的了解,因而设计思路渐渐明朗,经过自己的不断尝试和探索,终于弄明白了FIR滤波器的工作原理,通过查阅相关资料和研究MATLAB中提供的帮助信息,我也明白了FIR滤波器设计相关的一些函数的使用方法,并用它们来设计FIR滤波器,最终完成了题目。

在设计过程中,我也遇到了很多不懂得地方,程序经常出现错误,尤其是在利用所设计的滤波器对模拟出来的数字序列滤波时,出现很多错误,但经过自己的不断努力和尝试,最终还是解决了问题。

七.致谢

经过两周的课程设计实训,感受很深。

在两周里首先感谢杨老师老师给我们很多扎实的基本知识。

感谢老师在课程设计上给予我们的指导、提供给我们支持和帮助,这是我能顺利完成这次报告的主要原因;其次,感谢学校工程坊的实验室给我们良好的理论与实践知识,最后我要感谢帮助过我的同学和与我同组合作课题的队友,我们通过合作及讨论一起解决设计过程中遇到的问题并顺利完成课程设计。

同时也感谢学院为我提供良好的做毕业设计的环境。

八.参考文献

[1]葛哲学,精通MATLAB.电子工业出版社,2008

[2]陈亚勇,MATLAB信号处理详解.人民邮电出版社,2008

[3]维基百科,http:

//zh.wikipedia.org

[4]周开利,邓春辉,MATLAB基础及其应用教程.北京大学出版社,2007

[5]赵静,张瑾,基于MATLAB的通信系统仿真.北京航空航天大学出版社,2006

[6]宋寿鹏,数字滤波器设计及工程应用.江苏大学出版社,2007

 

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2