Matlab结合窗函数法设计数字带通FIR滤波器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计任务书
学生姓名:专业班级:通信工程
指导教师:工作单位:信息工程学院题目:利用Matlab仿真软件系统结合窗函数法设计一个数字带通FIR滤波器初始条件: 1.《数字信号处理》基本理论知识
2.《信号与系统》基本理论知识
3.MATLAB编程基础知识
4.装有MATLAB的PC机
要求完成的主要任务:
利用MATLAB仿真软件系统结合窗函数法设计一个数字带通FIR滤波器
时间安排:
第20周理论设计、实验室安装调试,地点:鉴主15楼通信实验室一
指导教师签名:年月日系主任(或责任教师)签名:年月日
目录
目录......................................................................... 中文摘要.. (1)
Abstract (2)
1 MATLAB的概况 (3)
2 MATLAB结合窗函数设计法原理 (4)
3 各类窗函数简介 (7)
3.1 基本窗函数 (7)
3.1.1 矩形窗函数 (7)
3.1.2三角窗 (7)
3.2 广义余弦窗 (8)
3.2.1汉宁窗(升余弦窗) (9)
4 方案设计与论证 (10)
4.1 程序设计法 (11)
5 窗函数仿真结果分析 (13)
5.1 汉宁窗函数仿真结果 (13)
5.2汉宁窗函数仿真结果分析 (15)
6总结与体会 (16)
7参考文献 (17)
中文摘要
现代图像、语声、数据通信对线性相位的要求是普遍的。

正是此原因,使得具有线性相位的FIR数字滤波器得到大力发展和广泛应用。

在实际进行数字信号处理时,往往需要把信号的观察时间限制在一定的时间间隔内,只需要选择一段时间信号对其进行分析。

这样,取用有限个数据,即将信号数据截断的过程,就等于将信号进行加窗函数操作。

而这样操作以后,常常会发生频谱分量从其正常频谱扩展开来的现象,即所谓的“频谱泄漏”。

当进行离散傅立叶变换时,时域中的截断是必需的,因此泄漏效应也是离散傅立叶变换所固有的,必须进行抑制。

而要对频谱泄漏进行抑制,可以通过窗函数加权抑制DFT的等效滤波器的振幅特性的副瓣,或用窗函数加权使有限长度的输入信号周期延拓后在边界上尽量减少不连续程度的方法实现。

而在后面的FIR滤波器的设计中,为获得有限长单位取样响应,需要用窗函数截断无限长单位取样响应序列。

另外,在功率谱估计中也要遇到窗函数加权问题。

由此可见,窗函数加权技术在数字信号处理中的重要地位。

传统的数字滤波器的设计过程复杂,计算工作量大,滤波特性调整困难,影响了它的应用。

本文介绍了一种利用MATLAB信号处理工具箱(Signal Processing Toolbox)快速有效的设计由软件组成的常规数字滤波器的设计方法。

本文给出了使用MATLAB语言进行程序设计和利用信号处理工具箱的FDA Tool工具进行界面设计的方法。

利用MATLAB设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大的减轻了工作量,有利于滤波器设计的最优化。

Abstract
A modern image, V oice and data communications to the linear phase requirement is universal. It is for this reason, making a linear phase FIR digital filters are to develop and widely used.
In practice, digital signal processing, they often need to observe the time limit for the signal in a certain time interval, only need to select a period of time to analyze the signals. In this way, access to a finite number of data about the process of signal data truncation is equivalent to the signal, the additional window function operation. And this after the operation, often occur from the normal component of the spectrum spread spectrum open to the phenomenon of so-called "spectral leakage." When it comes to discrete Fourier transform, the time domain truncation is necessary, therefore, leakage effects are also inherent in discrete Fourier transform, and must be inhibited. But would like to suppress the spectral leakage can be inhibited by the weighted window function equivalent DFT filter amplitude characteristics of side-lobe, or the weighted window function so that the limited length of the extension of the input signal cycle, after the border to minimize the degree of discontinuity The method of implementation. In the back of the FIR filter design, in order to obtain finite sampling units to respond to the need to truncate the infinite length window function with unit sampling response sequence. In addition, power spectrum estimation problem also encountered in the weighted window function. Thus, the weighted windows function in digital signal processing in an important position.Conventional digital filter design process is complex, computing workload, difficulties in adjustment of filter characteristics, affecting its application. This paper introduces a MATLAB Signal Processing Toolbox (Signal Processing Toolbox) quickly and efficiently design formed by the software of conventional digital filter design methods. This article presents use MATLAB language for programming and utilization of signal processing Toolbox FDA Tool for interface design. A filter was designed using MATLAB. Y ou can always compare the design requirements and adjust the parameters of filter characteristics, visual simple and greatly reduced the workload will help filter design optimized.
1 MATLAB的概况
MATLAB是矩阵实验室(Matrix Laboratory)之意。

除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.
应用MATLAB这一软件来设计滤波器,与传统的设计思路相比是非常的简便的.具体来说主要有以下几点:
1) MATLAB的GUID可以提供给使用者一个进行人机交换的环境,在此环境中,使用者没有必要了解程序内部具体的编写情况,在这个界面上他只要输入他所期望的滤波器的性能指标就可以了。

2) 利用MATLAB可以进行系统仿真,也就是说,使用者可以通过计算机进行对数字滤波器的频率响应图据的处理和波形的检测,不像以前必须借助一定的实验器材才可以得到。

3) MATLAB内部有丰富的函数可供调用,使用者只需要根据自己的需要查到所需要的函数名,那就可以直接调用使用了.不需要自己把函数详细的编写出来.使编写内部程序变的简单。

MATLAB包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.
开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.
2 MATLAB 结合窗函数设计法原理
数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。

数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR )滤波器和有限长冲激响应(FIR )滤波器。

IIR 数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。

所以IIR 滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。

FIR 数字滤波器的单位脉冲响应是有限长序列。

它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。

FIR 滤波器具有严格的相位特性,这对于语音信号处理和数据传输是和重要的。

目前FIR 滤波器的设计方法主要有三种:窗函数法、频率取样法和切比雪夫等波纹逼近的最优化设计方法。

常用的是窗函数法和切比雪夫等波纹逼近的最优化设计方法。

因此设计FIR 滤波器的方法之一可以从时域出发,截取有限长的一段冲击响应作为H(z)的系数,冲击响应长度N 就是系统函数H(z)的阶数。

只要N 足够长,截取的方法合理,总能满足频域的要求。

一般这种时域设计、频域检验的方法要反复几个回合才能成功。

要设计一个线性相位的FIR 数字滤波器,首先要求理想频率响应)(jw
d e
H 。

)(jw
d e
H 是w 的周期函数,周期为π2,可以展开成傅氏级数:


-∞
=-=
n jwn
d jw
d e
n h e
H )()( (公式2-1)
使用上述的传递函数去逼近)(jw
d e H ,一个理想的频率响应)(jw
d
e
H
的傅立叶
反变换:
ωπ
ωπ
d d
e
H
n h n
j jw
d
d )(21)(20

=
(公式2-2)
其中)(n h d 是与理想频响对应的理想单位抽样响应序列。

但不能用来作为设计FIR DF 用的h(n),因为)(n h d 一般都是无限长、非因果的,物理上无法实现。

为了设计出频响类似于理想频响的滤波器,可以考虑用)(n h 来近似)(n h d 。

窗函数的基本思想:先选取一个理想滤波器(它的单位抽样响应是非因果、无限长的),再截取(或加窗)它的单位抽样响应得到线性相位因果FIR 滤波器。

这种方法的重点是选择一个合适的窗函数和理想滤波器。

设x(n)是一个长序列,w(n)是长度为N 的窗函数,用w(n)截断x(n),得到N 点序列(n)x n ,即
)()()(n w n x n x n = (公式2-3)
在频域上则有
()(
)(
)
()⎰--⋅=
ππ
j j j d e π
21
e θ
θ
ωθ
ω
W e
X X
N
(公式2-4)
由此可见,窗函数w(n)不仅仅会影响原信号x(n)在时域上的波形,而且也会影响到频域内的形状。

MATLAB 信号工具箱主要提供了以下几种窗函数,如表1-1所示:
表1-1 MATLAB 窗函数
加矩形窗后的频谱和理想频谱可得到以下结论:
加窗使过渡带变宽,过渡带的带宽取决于窗谱的主瓣宽度。

矩形窗情况下的过渡带宽是N /4π。

N 越大,过渡带越窄、越陡;
过渡带两旁产生肩峰,肩峰的两侧形成起伏振荡。

肩峰幅度取决于窗谱主瓣和旁瓣面积之比。

矩形窗情况下是8.95%,与N 无关。

工程上习惯用相对衰耗来描述滤波器,相对衰耗定义为:
])0(/)(l g [20])(/)(lg[20)(0
H w H e
H e
H w A j jw
== (公式2-5)
这样两个肩峰点的相对衰耗分别是0.74dB 和-21dB 。

其中(-0.0895)对应的点的值定义为阻带最小衰耗。

以上的分析可见,滤波器的各种重要指标都是由窗函数决定,因此改进滤波器的关键在于改进窗函数。

窗函数谱的两个最重要的指标是:主瓣宽度和旁瓣峰值衰耗。

旁瓣峰值衰耗定义为: 旁瓣峰值衰耗=20lg(第一旁瓣峰值/主瓣峰值) (公式2-6) 为了改善滤波器的性能,需使窗函数谱满足:
(1)主瓣尽可能窄,以使设计出来的滤波器有较陡的过渡带。

(2)尽量减少最大旁瓣的相对幅度,也就是能量集中于主瓣,以减小带内、带外波动的最大幅度,增大阻带衰减。

一般来说,以上两点很难同时满足。

当选取主瓣宽度很窄时,旁瓣的分量势必增加,从而带内、带外的波动也增加了;当选取最小的旁瓣幅度时,降低了带内、带外的波动,但是过渡带的陡度减小了。

所以实际采用的窗函数其特性往往是它们的折中,在保证主瓣宽度达到一定要求的前提下,适当牺牲主瓣宽度来换取旁瓣波动的减小。

3 各类窗函数简介
数字信号处理领域中所用到的窗函数主要分为两大类,分别是:基本窗函数与广义窗函数。

3.1 基本窗函数
基本窗函数包括以下三类,主要有:矩形窗函数、三角窗函数和巴特利特窗函数。

下面就对这些窗函数展开介绍。

3.1.1 矩形窗函数
矩形窗(Rectangular Window)函数的时域形式可以表示为:
⎩⎨
⎧-≤≤==其他
,
01
0,
1)()(N n n R n w N (公式3-1)
它的频域特性为
(
)⎪

⎫ ⎝⎛⎪


⎝⎛=⎪⎭
⎫ ⎝⎛--2sin 2sin e
e
21j j ωωω
ω
N W N R (公式3-2)
Boxcar 函数:生成矩形窗
调用方式w = boxcar (n):输入参数n 是窗函数的长度;输出参数w 是由窗函数的值组成的n 阶向量。

从功能上讲,该函数又等价于w = ones(n,1)。

3.1.2三角窗
三角窗(Bartlett Window )函数时域形式可表示为:
⎪⎩
⎪⎨
⎧---≤
≤-=-<<-1
)1(2
1,
122)
1(2
101
2)(N n N N n
N n N n n w R B (公式3-3)
窗谱为: ()
ωωωωωωω⎪⎭
⎫ ⎝⎛--⎪⎭⎫
⎝⎛--⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎭⎫
⎝⎛⎪⎭⎫ ⎝⎛≈⎪⎪⎪⎪⎪⎭
⎫ ⎝
⎛⎪⎭⎫
⎝⎛⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛--=212
212
2s i n 4s i n 22s i n 41s i n 12N j N j j e N N e N N e W (公式3-4)
式中,当N 远大于1时,此时,窗谱主瓣宽度为8π/N 。

3.2 广义余弦窗
汉宁窗、海明窗和布莱克曼窗,都可以用一种通用的形式表示,这就是广义余弦窗。

这些窗都是广义余弦窗的特例,汉宁窗又被称为余弦平方窗或升余弦窗,海明窗又被称为改进的升余弦窗,而布莱克曼窗又被称为二阶升余弦窗。

采用这些窗可以有效地降低旁瓣的高度,但是同时会增加主瓣的宽度。

这些窗都是频率为0、2π/(N –1)和4π/(N –1)的余弦曲线的合成,其中N 为窗的长度。

通常采用下面的命令来生成这些窗:
()()1N π21N :0Ind '
-**-= (公式3-5)
ind)*cos(2C cos(ind)B A Window *+*-= (公式3-6)
其中,A 、B 、C 适用于自己定义的常数。

根据它们取值的不同,可以形成不同的窗函数,分别是:
汉宁窗 A=0.5,B=0.5,C=0; 海明窗 A=0.54,B=0.54,C=0; 布莱克曼窗 A=0.5,B=0.5,C=0.08;
3.2.1汉宁窗(升余弦窗)
汉宁窗(Hanning )函数时域形式可表示为: ())(12cos 121n R N n n W N ⎥⎦


⎣⎡⎪⎭⎫ ⎝⎛--=
π (公式3-7) 利用傅利叶变换的调制特性,由上式可得汉宁窗的平谱函数为: ()
()ωω
πωπωω⎪⎭


⎛--⎭⎬⎫⎩
⎨⎧⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛-++⎪⎭⎫ ⎝⎛--+=21121225.05.0N j R R R j e
N W N W W e
W
()ωω⎪⎭

⎝⎛--=21N j e W (公式3-8)
式中, ()()ωωω⎪⎭

⎝⎛--=21N j R j R e
W e W (公式3-9)
当N 远大于1时,上式可近似表示为: ()()⎪⎭
⎫ ⎝⎛
++⎥⎦⎤⎢⎣

⎪⎭⎫ ⎝⎛
-
+≈N W N W W W R R R πωπωωω2225.05.0
(公式3-10)
这三部分之和使旁瓣互相抵消,能量更集中在主瓣,汉宁窗函数的最大旁瓣值比主瓣值低31dB ,但是主瓣宽度比矩形窗函数的主瓣宽度增加了1倍,为8π/N 。

hanning 函数:生成汉宁窗 调用方式:
(1) w = hanning(n):输入参数n 是窗函数的长度;输出参数w 是由窗函数的值组成的n 阶向量。

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

(2) w = hanning(n,'symmetric'):与上面相类似。

(3) w = hanning(n,'periodic'):此函数返回包括为零点的窗函数的首尾两个元素。

4 方案设计与论证
用窗函数法设计一个FIR带通滤波器。

指示如下:
低端阻带截止频率 wls = 0.2*pi;
低端通带截止频率 wlp = 0.35*pi;
高端通带截止频率 whp = 0.65*pi;
高端阻带截止频率 whs = 0.8*pi;
六种窗函数的基本参数如表1-2:
表1-2 窗函数基本参数
以上表格里的参数设置是最佳窗函数设计,根据设计方案的要求,选择一个合适的窗函数进行滤波器的设计,从上表可以看出:最小带阻衰减仅有窗函数决定,不受N的影响,而过渡带的宽度则随窗函数的增加而减小。

4.1 程序设计法
程序法只以hamming窗为示例,其他窗函数的程序大体相同,只是在window= hanning(N)和hn = fir1(N-1,wc, hanning (N))处要调自己的窗函数即可。

hanning 窗设计程序示例:
wls = 0.2*pi;
wlp = 0.35*pi;
whp = 0.65*pi;
wc = [wlp/pi,whp/pi];
B = wlp-wls;
N = ceil(8/0.15);
n=0:N-1;
window= hanning(N);
[h1,w]=freqz(window,1);
figure(1);
stem(window);
axis([0 60 0 1.2]);
grid;
xlabel('n');
title('Hanning窗函数');
figure(2);
plot(w/pi,20*log(abs(h1)/abs(h1(1))));
axis([0 1 -350 0]);
grid;
xlabel('w/pi');
ylabel('幅度(dB)');
title('Hanning窗函数的频谱');
hn = fir1(N-1,wc, hanning (N));
[h2,w]=freqz(hn,1,512);
figure(3);
stem(n,hn);
axis([0 60 -0.25 0.25]);
grid;
xlabel('n');
ylabel('h(n)');
title(‘Hanning窗函数的单位脉冲响应’); figure(4);
plot(w/pi,20*log(abs(h2)/abs(h2(1)))); grid;
xlabel('w/pi');
ylabel('幅度(dB)');
5 窗函数仿真结果分析
5.1 汉宁窗函数仿真结果
图5-1 汉宁窗函数波形图
图5-2 汉宁窗函数频谱图
图5-3 汉宁窗设计带通滤波器的冲击响应图
图5-4汉宁窗设计带通滤波器的幅频响应图
5.2汉宁窗函数仿真结果分析
由仿真波形图可以得出以下几个方面的分析结果:
由图5-3可以看出,汉宁窗设计的带通滤波器的单位冲击响应为偶对称,也就是说当N为偶数时,单位冲击响应序列为偶函数,这说明FIR带通滤波器相位是严格的线性关系。

由图5-2可以看出,汉宁窗函数的阻带衰减大约在-70dB到-300dB,也就是说旁瓣幅度远小于主瓣幅度,能量全部集中在主瓣,主瓣宽度也有所增加,效果比较明显。

由图5-1可以看出,汉宁窗是典型的升余弦窗,基本符合汉宁窗函数的时域表达式,所加的窗口是余弦函数(类似类似余弦函数)。

由图5-4可以看出,汉宁窗设计的带通滤波器带通下限截止频率大约为0.35π,带通上线截止频率大约为0.65π,在通带频率之外的频率的信号的幅度将受到很大的衰减,以致信号不能通过滤波器。

根据以上的结果分析可以得到:本次设计结果符合设计要求。

6总结与体会
这一次的课程设计时间比较紧,任务重,最主要的是我们通信专业还没有开设这门课,这就要求我们大家有足够的自学能力。

虽然以前接触过Matlab这个软件,但是还是第一次使用这个软件对于电路进行数学建模,为了这次课程设计,自己自学了数字信号处理领域中窗函数的有关知识。

我发现MATLAB的功能非常强大,以前怎么也想不明白MATLAB怎么能和我们专业联系起来,现在才渐渐明白MATLAB在我们专业中占据着如此重要的地位。

这次课程设计确实是比较基础的东西,也不是很难,可能以后会面临更多、更难的关于MATLAB的问题,但我认为只要有耐心,一般的问题都还是可以一步一步的解决的。

网上资源比较丰富,要好好利用互联网这个平台,把自己解决问题的能力提高,学到东西才最关键。

通过这次学习,我不但掌握了FIR数字滤波器窗函数的基本知识及其实际应用的技巧了,而且还学会了一些Matlab编程语言,对这款软件也有了更深刻的认识,我觉得最重要的是我又一次提高了自己还提高了自己写报告的能力,有很大的收获。

最后,我认为学校开设这门课设对我们来说是很有用的,能够提高我们独立去做一个工程的能力,体会将来我们要面对的实际问题,这对日后我们走进社会了,参加工作非常重要的。

7参考文献
【1】陈怀琛《MATLAB及在电子信息课程中的应用》电子工业出版社2006 【2】刘泉《数字信号处理原理与实现》电子工业出版社 2005
【3】刘泉《信号与系统》高等教育出版社 2006
【4】徐以涛《数字信号处理》西安电子科技大学出版社 2009。

相关文档
最新文档