FIR滤波器加窗效应分析.docx

上传人:b****6 文档编号:8837878 上传时间:2023-02-02 格式:DOCX 页数:16 大小:199.81KB
下载 相关 举报
FIR滤波器加窗效应分析.docx_第1页
第1页 / 共16页
FIR滤波器加窗效应分析.docx_第2页
第2页 / 共16页
FIR滤波器加窗效应分析.docx_第3页
第3页 / 共16页
FIR滤波器加窗效应分析.docx_第4页
第4页 / 共16页
FIR滤波器加窗效应分析.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

FIR滤波器加窗效应分析.docx

《FIR滤波器加窗效应分析.docx》由会员分享,可在线阅读,更多相关《FIR滤波器加窗效应分析.docx(16页珍藏版)》请在冰豆网上搜索。

FIR滤波器加窗效应分析.docx

FIR滤波器加窗效应分析

引言

随着科学技术的发展,信号处理理论和分析方法已应用于许多领域和学科中。

不仅是无线电、通信、电子工程等专业的主要技术,还是相关工科专业非常实用的工具。

尤其是数字计算机的出现和大规模集成技术的高度发展,有力的推动了数字信号处理技术的发展和应用。

当今社会已进入信息时代,人们每天都要接触各种各样的载有信息的信号形式,如接收广播、电视信号、使用电话传送声信号等等,其目的是把不同形式的信息借助一定形式传送出去并能够准确实时的接收到信息信号处理技术的发展与应用就显得尤为重要!

信号处理技术就是利用一定的部件或设备,对观测到的信号进行分析、变换、综合、识别等加工的技术,已达到提取有用信息和便于利用的目的。

对信号进行分析与处理的时候常伴有噪声,根据有用信号和噪声的不同特征,消除或削弱噪声、提取有用信号的过程即为滤波。

从本质上说,滤波就是改变信号中各频率分量的相对幅度和相位。

根据滤波器预处理的信号性质不同可分为模拟滤波器和数字滤波器。

前者处理连续时间信号后者处理离散时间信号。

其中数字滤波器又分有限长(FIR)与无限长脉冲响应(IIR)滤波器。

本次设计为前者,且同时用MATIAB来仿真实现。

 

一、摘要

数字滤波技术是数字信号处理的一个重要组成部分,滤波器的设计是信号处理的核心问题之一。

FIR滤波器典型设计方法是借助于窗函数法和频率采样法。

本次课程设计为分析FIR数字滤波器的基本原理,在MATLAB环境下利用窗函数设计FIR滤波器,实现FIR低通滤波器的设计仿真,并对常用的几种窗函数进行比较,同时给出在MATLAB环境下,用窗函数法设计FIR滤波器的过程和实例。

仿真结果表明,设计的FIR滤波器的各项性能指标均可达到指定要求,且设计方法简单而有效,能得到较好的幅度特性。

因此该方法为快速、高效地设计FIR滤波器提供了一个可靠而有效的途径。

通过实验结果表明FIR滤波器准确度高、稳定性好,可以有效的滤除干扰信号,设计结果满足性能指标要求。

数字滤波器的应用十分广泛,运行MATLAB语言,能很容易地设计出具有严格要求(如线性相位等)的滤波器。

关键字:

FIR滤波器MATLAB仿真

 

二、FIR数字滤波器的基本原理

2.1关于FIR滤波器

设h(n)(n=0,1,2⋯N-1)为滤波器的冲激响应,输入信号为x(n),则FIR滤波器就是要实现下列差分方程:

 

FIR滤波器的最主要的特点是没有反馈回路,因此它是无条件稳定系统。

它的单位脉冲响应h(n)是一个有限长序列。

由方程

(1)可见,FIR滤波算法实际上是一种乘法累的有限加运算,它不断地输入样本x(n),经延时后做乘法累加,再输出滤波结果y(n)。

对式

(1)进行Z变换,整理后可得FIR滤波器的传递函数为:

由式

(2)可以看出,FIR滤波器的一般结构如图1所示。

 

FIR数字滤波器的设计方法主要有窗函数法和频率采样法,其中窗函数法是简单而有效的设计方法。

2.2FIR滤波器的优点

所谓数字滤波器,是指其输入、输出均为数字信号,通过一定的运算关系改变输入信号所含频率成分的相对比例或滤出掉某些频率成分的器件,因而在数字通讯、语音图象处理、谱分析、模式识别、自动控制等领域得到了广泛的应用。

相对于模拟滤波器,数字滤波器没有电压漂移、温度漂移和噪声等,还能够处理低频信号,频率响应特性可作成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应用将会越来越来广泛。

数字滤波器具有以下显著优点:

1、精度高:

因此在高精度要求的滤波设计系统中,一般就采用数字滤波来实现。

2、灵活性大:

数字滤波的性能主要取决于乘法器的各项系数,而这些系数是存放在系统存储器中的,只要改变存储器存放的系数,就可以得到不同的系统,这些都比改变模拟滤波器系统的特性要容易和方便的多,因而具有很大的灵活性。

3、可靠性高:

因为数字系统只有两个电平信号“1”和“O”,受噪声及环境条件的影响小,而模拟滤波各个参数都有一定的温度系数,易受到温度、振动、电磁感应等影响。

4、易于大规模集成:

数字部件具有高度的规范性,便于大规模集成,大规模生产,且数字滤波器电路主要工作在截止或饱和状态,对电路参数要求不严格,因此产品的成品率高,价格也日趋降低。

相对于模拟滤波器,数字滤波器在体重、重量和性能方面的优势己越来越来明显。

5、并行处理:

数字滤波器的另外一个最大的优点就是可以实现并行处理,比如数字滤波器可以采取DSP处理器来实现并行处理。

2.3数字滤波器的设计

数字滤波器设计的基本步骤如下:

(l)确定指标

在设计一个滤波器之前,必须首先根据工程实际需要确定滤波器的技术指标。

在很多实际应用中,数字滤波器常常被用来实现选频操作。

因此,指标的形式一般在频域中给出幅度响应和相位响应。

幅度指标主要以两种方式给出。

第一是绝对指标,它提供对幅度响应函数的要求,一般应用于FIR滤波器的设计;第二种指标是相对指标,它以分贝值的形式给出要求,在工程实际中,比较受到欢迎。

对于相位响应指标形式,通常希望系统在通频带中仍然有线性相位。

运用线性相位响应的指标进行滤波器设计具有如下优点:

①只包含实数算法,不涉及复数运算;②不存在延迟失真,只有固定数量的延迟;③长度为M的滤波器(阶数为M--l),计算量为M/2数量级。

(2)逼近

确定了技术指标后,就可以建立一个目标的数字滤波器模型。

通常采用理想的数字滤波器模型。

之后,利用数字滤波器的设计方法,设计出一个实际滤波器模型来逼近给定的目标。

(3)性能分析与仿真

上两步的结果是得到以差分或系统函数或冲激响应描述的滤波器。

根据这个描述就可以分析其频率特性和相位特性,以验证设计结果是否满足指标要求,或者利用计算机仿真实现设计的滤波器,再分析滤波结果来判断。

窗函数法设计FIR滤波器的MATLAB仿真

MATLAB是一套用于科学计算的可视化高性能语言与软件环境。

它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个界面友好的用户环境。

它的信号处理工具箱包含了各种经典的和现代的数字信号处理技术,是一个优秀的算法研究与辅助设计的工具。

三、FIR数字滤波器设计的基本方法

3.1窗函数法

窗函数法的设计思想是按照所要求的理想滤波器频率响

,设计一个FIR滤波器,使频率响应

逼近

先由

的傅里叶反变换导出理想滤波器的冲激响应序列

即:

由于

是矩形频率特性,所以

是一无限长的序列,且是非因果的,而要计的FIR滤波器的冲激响应序列是有限长的,所以要用有限长的序列h(n)来逼近无限长的序列

,最有效的方法是截断

,或者说用一个有限长度的窗口函数w(n)序列来截取

,即:

按照复卷积公式,在时域中的乘积关系可表示成在频域中的周期性卷积关系,即可得所设计的FIR滤波器的频率响应:

其中,

为截断窗函数的频率特性。

由此可见,实际的FIR数字滤波器的频率响应

逼近理想滤波器频率响应

的好坏,完全取决于窗函数的频率特性

如果w(n)的形式为:

w(n)相当于一个矩形,我们称之为矩形窗。

即我们可采用矩形窗函数w(n)将无限脉冲响应

截取一段

来近似为

经过加矩形窗后所得的滤波器实际频率响应能否很好地逼近理想频率响应呢?

下图给出了理想滤波器加矩形窗后的情况。

理想低通滤波器的频率响应

如图中左上角图,矩形窗的频率响应

T错误!

未找到引用源。

为左下角图。

根据卷积定理,即得实际滤波器的频率响应

图形为图中右图。

由图可看出,加矩形窗后使实际频率响应偏离理想频率响应,主要影响有三个方面:

(1)理想幅频特性陡直边缘处形成过渡带,过渡带宽取决于矩形窗函数频率响应的主瓣宽度;

(2)过渡带两侧形成肩峰和波纹,这是矩形窗函数频率响应的旁瓣引起的,旁瓣相对值越大,旁瓣越多,波纹越多;

(3)随窗函数宽度M的增大,矩形窗函数频率响应的主瓣宽度减小,但不改变旁瓣的相对值。

为了改善滤波器的性能,需使窗函数谱满足:

主瓣尽可能窄,以使设计出来的滤波器有较陡的过渡带;第一副瓣面积相对主瓣面积尽可能小,即能量尽可能集中在主瓣,外泄少,使设计出来的滤波器的肩峰和余振小逼近于理想滤波器。

但是这两个条件是相互矛盾的,实际应用中,折衷处理,兼顾各项指标。

上边只考虑了矩形窗,如果我们使窗的主瓣宽度尽可能地窄,旁瓣尽可能地小,可以获得性能更好的滤波器,通过改变窗的形状来达到这个目的。

在数字信号处理的发展过程中形成了不同于矩形窗的很多窗函数,这些窗函数在主瓣和旁瓣特性方面各有特点,可满足不同的要求。

为此,用窗函数法设计FIR数字滤波器时,要根据给定的滤波器性能指标选择窗口宽度N和窗函数w(n)。

下面具体介绍几类窗函数及其特性。

3.2、矩形窗

矩形窗函数的时域形式可以表示为:

它的频域特性为:

3.3汉宁窗函数

汉宁窗函数的时域形式可以表示为:

它的频域特性为:

其中,

为矩形窗函数的幅度频率特性函数。

汉宁窗函数的最大旁瓣值比主瓣值低31dB,但是主瓣宽度比矩形窗函数的主瓣宽度增加了1倍,为8π/N。

3.4海明窗函数

海明窗函数的时域形式可以表示为:

它的频域特性为:

其中,

为矩形窗函数的幅度频率特性函数。

海明窗函数的最大旁瓣值比主瓣值低41dB,但它和汉宁窗函数的主瓣宽度是一样大的。

3.5布莱克曼窗

增加一个二次谐波余弦分量,可进一步降低旁瓣,但主瓣宽度进一步增加,增加N可减少过渡带。

频谱的幅度函数为:

+0.04

3.6三角窗函数

三角窗是最简单的频谱函数

为非负的一种窗函数。

三角窗函数的时域形式可以表示为:

当n为奇数时:

当n为偶数时:

它的频域特性为:

三角窗函数的主瓣宽度为8π/N,比矩形窗函数的主瓣宽度增加了一倍,但是它的旁瓣宽度却小得多。

3.7凯泽窗

以上几种窗函数,都是以增加主瓣宽度为代价来降低旁瓣。

凯泽窗则可自由选择主瓣宽度和旁瓣衰减,如图

(一)。

(2)

式中I0(x)是零阶贝塞尔函数,参数β可自由选择,决定主瓣宽度与旁瓣衰减。

β越大,w(n)窗越窄,其频谱的主瓣变宽,旁瓣变小。

一般取4<β<9,

β=5.44接近汉明

β=8.5接近布莱克曼

β=0为矩形。

3.8多尔夫-切比雪夫窗

定义:

,-M<=n<=M

其中,

是一个用分数表示的旁瓣相对幅度

是X的第e阶切比雪夫多项式。

不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。

信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。

(矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高。

四、MATLAB仿真滤波实现

4.1MATLAB软件简介

MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。

它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB产品族可以用来进行以下各种工作:

数值分析,数值和符号计算,工程与科学绘图,控制系统的设计与仿真,通讯系统设计与仿真,财务与金融工程。

4.1.1、友好的工作平台和编程环境

MATLAB由一系列工具组成。

这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。

包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。

随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。

4.1.2简单易用的程序语言

Matlab一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。

用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。

4.1.3强大的科学计算机数据处理能力

MATLAB是一个包含大量计算算法的集合。

其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。

函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。

在通常情况下,可以用它来代替底层编程语言,如C和C++。

在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。

4.1.4出色的图形处理功能

MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。

高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。

可用于科学计算和工程绘图。

4.1.5应用广泛的模块集合工具箱

MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。

一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。

4.1.6实用的程序接口和发布平台

新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。

允许用户编写可以和MATLAB进行交互的C或C++语言程序。

4.2实验结果分析

(1)相同的窗口加不同的窗长

程序一、汉宁窗不同窗长

functionlpfir5

wc=0.25*pi;

N=[112141];

M=N-1;

n1=0:

N

(1)-1;

n2=0:

N

(2)-1;

n3=0:

N(3)-1;

hl1=fir1(M

(1),wc/pi,hanning(N

(1)));

hl2=fir1(M

(2),wc/pi,hanning(N

(2)));

hl3=fir1(M(3),wc/pi,hanning(N(3)));

[h1,w11]=freqz(hl1,1,512);

[h2,w12]=freqz(hl2,1,512);

[h3,w13]=freqz(hl3,1,512);

plot(w11/pi,20*log(abs(h1)/max(abs(h1))));

holdon

plot(w12/pi,20*log(abs(h2)/max(abs(h2))),':

');

holdon

plot(w13/pi,20*log(abs(h3)/max(abs(h3))),'--');

axis([01-35010]);

title('汉宁窗不同窗长');

xlabel('ω/π');ylabel('|H(e^jω)|');

legend({'M=10','M=20','M=40'});

end

图(3)

图(3)分别给出了M=10,M=20及M=40时的

的幅频特性曲线可以看出,当M取不同值时,

都在不同程度上近似于

M过小时,通频带过窄,且阻带内纹波较大,过渡带较宽。

当M增大时,

近似

的程度越来越好,即通频带接近0.25π,阻带纹波减小,过渡带变窄。

由该图还可知,当M增大时,通带内出现了纹波,随着M的继续增大,这些纹波并不消失,只是最大的上冲越来越接近于间断点(

)。

这种现象称作吉布斯现象。

(2)不同窗口加相同的窗长

程序二、同窗长的汉宁窗与矩形窗比较

functionlpfir4

wc=0.25;

N=21;

M=N-1;

hl1=fir1(M,wc,hanning(N));

hl2=fir1(M,wc,boxcar(N));

[h1,w11]=freqz(hl1,1,512);

[h2,w12]=freqz(hl2,1,512);

plot(w11/pi,20*log(abs(h1)/max(abs(h1))));

holdon

plot(w12/pi,20*log(abs(h2)/max(abs(h2))),':

');

title('同窗长的汉宁窗与矩形窗比较');

xlabel('ω/π');ylabel('|H(e^jω)|')

legend({'汉宁窗','矩形窗'})

En

图(4)

过渡带的宽度:

对不同的窗口,其主瓣宽度不一样(例如矩形窗

,汉宁窗

)因此对于不同窗口过渡带宽度不同。

阻带衰减:

不同窗口,当旁瓣的幅度衰减速率比较快的时候,阻带的衰减则会增大。

汉宁窗相对于矩形窗就具有这样的性质,旁瓣衰减较快。

吉布斯现象:

矩形窗的吉布斯现象比汉宁窗要明显,这与旁瓣的多少和衰减速率的快慢有关,汉宁窗相对于矩形窗,旁瓣较少,衰减较快。

(3)窗函数要求

a、主瓣尽可能窄,以获得较陡的过渡带。

b、最大的副瓣相对于主瓣尽可能的小,即能量集中在主瓣中。

这样,就可以减少肩峰和余振,提高阻带的衰减。

这两项要求不可能同时得到最佳要求,常用的窗函数是在这两个因素之间取得适当的折衷。

往往需要增加主瓣宽度以换取副瓣的抑制,如果选用一个窗函数的主要目的是为了得到较锐的截至,就应选用主瓣较窄的窗函数,这样在通带中将产生一些震荡,在阻带中会出现显著的波纹。

如果主要目的是为了得到平坦的幅度响应和较小的阻带波纹,这时选用的窗函数的副瓣电平就要较小,但所设计的FIR滤波器的截止锐度就不会很大。

4.3设计主要用到的MATLAB函数

4.3.1firl函数

fir1函数实现线性相位FIR数字滤波器的窗函数法设计。

利用这一函数可以设计出标准的低通、高通、带通和带阻线性相位FIR滤波器。

调用格式:

(1)b=fir1(n,wn)

用海明窗设计低通或带通的FIR滤波器:

w(n)是截止频率,以“弧度”为单位。

fir1函数返回FIR滤波器的系数向量b。

如果w(n)是一个标量,则返回的是一个n阶的低通FIR数字滤波器。

如果w(n)是一个二元向量,即w(n)=[w1,w2],则返回的是一个2n阶的带通滤波器,其通带为w1≤⎤≤w2。

(2)b=fir1(n,wn,'type','window')

‘type’为滤波器的类型,当type=high时,设计高通FIR滤波器;当type=stop时,设计带阻FIR滤波器。

向量window用来指定窗函数类型,其长度为n+1,缺省时为海明窗。

4.3.2freqz函数

为了检验所设计的数字滤波器是否正确,可以画出其幅频特性.。

Matlab提供了求解数字滤波器频率响应的函数freqz,其调用格式如下:

[h,w]=freqz(b,a,n)

返回数字滤波器的n点频率响应h和频率向量w。

若n缺省,则自动取n为默认值512。

4.3.3plot函数

plot(Y)如果Y是m×n的数组,以1:

m为X横坐标,Y中的每一列元素为Y坐标,绘制n条曲线;如果Y是n×1或者1×n的向量,则以1:

n为横坐标,Y为坐标表绘制1条曲线;如果Y是复数,则plot(Y)等效于plot(real(Y),imag(Y));其它使用情况下,忽略坐标数据中的虚部。

plot(X1,Y1,...)如果X和Y都是数组,按列取坐标数据绘图,此时它们必须具有相同的尺寸;如果X和Y其中一个是向量另一个为数组,X和Y中尺寸相等的方向对应绘制多条曲线;如果X和Y其中一个是标量另一个为向量,那么将绘制垂直X或者Y轴离散的点。

4.3.4title函数

title就是给已经画出的图加一个标题title('')里面的内容就是图片标题的名称。

4.3.5legend函数

legend(string1,string2,string3,...)

分别将字符串1、字符串2、字符串3……标注到图中,每个字符串对应的图标为画图时的图标。

4.3.6xlabel()ylabel()函数

Xlabel()函数给x坐标轴添加标注,ylabel()函数给y坐标轴添加标注。

4.3.7holdon

Holdon命令可以保护当前的坐标系,使以后再使用plot()函数时将新的曲线叠印在原来的图上,用holdoff则可以取消保护状态。

4.3.8axis

axis(【xminxmaxyminymax】)设置坐标轴的极限范围。

 

五、课程设计心得

近一周的课程设计过程虽然短暂,但也让我学到了不少知识。

其中之前从未接触过的便是MATLAB软件。

最初学习使用MATLAB软件阶段,由于毫无基础,根本不知如何操作。

经过各种途径查阅相关资料,及老师与同学的指导,略懂了基本的操作,但实际编程过程中仍会出现函数或者命令输入错误等各种低级小错误,导致程序运行错误,无法得到正确的图形。

虽然都是小错,但是极其容易被忽视,通常因这些错误要找半天。

但是慢慢熟练之后便会注意这些马虎,编程有所进步!

此外,通过这次课设,我又对数字信号处理课程学习了一遍,经过仔细翻阅课本及相关课外书籍,我进一步了解了有限长数字低通滤波器的一些性能及设计步骤,虽然刚开始时不知从何着手!

但是,幸好有老师与同学们的帮助,我可以比较顺利的完成此次课程设计的任务!

总之,课程设计的过程是一个很好的学习过程,把课本的理论知识与实际结合起来,是一个很好的实践过程。

同时,我也明白了一个小道理,那就是在短暂的时间内学习一个新东西,只靠自己闷头学习钻研是不可取的,遇到问题可以请教周围的同学与老师,每个人掌握的情况是不同的,我们可以互相帮助,发挥团队的优势与力量。

此次虽然只是简单的学习了MATLAB软件,而且操作与应用仍是很生疏,但是以后我会继续学习与使用它的。

对于数字信号处理中的滤波器设计也是了解的有限,仍有较多知识等待我的学习。

 

六、参考文献

【1】薛定宇陈阳泉著《高等应用数学问题的MATLAB求解》(第二版)清华大学出版社2008年10月

【2】胡广书著《数字信号处理——理论、算法与实现》(第二版)清华大学出版社2003年8月

【3】王世一著《数字信号处理》(修订版)北京理工大学出版社2003年2月

 

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

当前位置:首页 > 高等教育 > 农学

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

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