窗函数的实现及分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1窗函数
1.1基本概念
在实际进行数字信号处理时,往往需要把信号的观察时间限制在一定的时间间隔内,只需要选择一段时间信号对其进行分析。这样,取用有限个数据,即将信号数据截断的过程,就等于将信号进行加窗函数操作。而这样操作以后,常常会发生频谱分量从其正常频谱扩展开来的现象,即所谓的“频谱泄漏”。当进行离散傅立叶变换时,时域中的截断是必需的,因此泄漏效应也是离散傅立叶变换所固有的,必须进行抑制。而要对频谱泄漏进行抑制,可以通过窗函数加权抑制DFT 的等效滤波器的振幅特性的副瓣,或用窗函数加权使有限长度的输入信号周期延拓后在边界上尽量减少不连续程度的方法实现。而在后面的FIR 滤波器的设计中,为获得有限长单位取样响应,需要用窗函数截断无限长单位取样响应序列。另外,在功率谱估计中也要遇到窗函数加权问题。
窗函数的基本概念。设x (n )是一个长序列,w (n )是长度为N 的窗函数,用w (n )截断
x (n ),得到N 点序列x n (n ),即
x n (n ) = x (n ) w (n )
在频域上则有
由此可见,窗函数w (n )不仅仅会影响原信号x (n )在时域上的波形,而且也会影响到频域内的形状。
1.2设计原理
窗函数设计法的基本原理是用有限长单位脉冲响应序列()n h 逼近()n h d 。由于()n h d 往往是无限长序列,而且是非因果的,所以用窗函数()n ω将()n h d 截断,并进行加权处理,得到:
()n h 就作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率响应函数()
ω
j e H 为
式中,N 为所选窗函数()n ω的长度。用窗函数法设计的滤波器性能取决于窗函数()n ω的
()
()()
()
⎰--⋅=
ππ
j j j d e π21e θθωθωW e X X N ()()()
n n h n h d ω=()()n
j N n j e
n h e
H ωω
∑-==1
类型及窗口长度N的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。
2 四种基本的窗函数
对时间序列作傅里叶变换时,实际上要作周期延拓,如果取长序列的一段进行处理,还要先作截断。截断会引起频谱的泄漏问题,这是由于抽样后的离散序列与矩形截断序列相乘,在频域造成两者的频谱卷积形成的。为了避免频谱泄露对结果的影响,在对非周期信号作时间截断时,除尽量增加截断序列的宽度外,也应选其频谱的旁瓣较小的截断窗函数,以减小泄漏的影响。在信号处理中窗函数是一种除在给定区间之外取值均为0的实函数。常用的窗函数很多,例如矩形窗、三角窗、Hanning窗、Hamming窗、Parzen窗、Kaiser 窗、Chebyshev窗、Tukey窗、Poisson窗、Caushy窗、Gaussian窗和Blackman窗等等,定义方式不同,性质也不同,可以根据实际需要来选择合适的截断窗函数减轻泄露问题。
窗函数在光谱分析、滤波器设计以及音频数据压缩等方面有广泛的应用。在这里,应用窗函数对输入数据进行截断(时域加窗),从而得到要处理的数据及其长度。
表2.1 MATLAB窗函数
表2.2各种窗函数的基本参数
这样选定窗函数类型和长度N 之后,求出单位脉冲响应()()()n n h n h d ω•=,并按照上式求出()
ωj e H 。()
ωj e H 是否满足要求,要进行演算。一般在()n h 尾部加零使长度满足2的整数次幂,以便用FFT 计算()
ωj e H 。如果要观察细节,补零点数增多即可。如果()
ωj e H 不满足要求,则要重新选择窗函数类型和长度N ,再次验算,直至满足要求。
如果要求线性相位特性,则()n h 还必须满足
()()n N h n h --±=1
根据上式中的正、负号和长度N 的奇偶性又将线性相位FIR 滤波器分成四类。要根据所设计的滤波特性正确选择其中一类,例如,要设计线性相位低通特性,可以选择
()()n N h n h --=1这一类,而不能选择()()n N h n h ---=1这一类。
主程序框图如图2.1所示。其中幅度特性要求用dB 表示。
设
画图时,用)(lg 20k H 打印幅度特性。第k 点对应的频率k N
k π
ω2=。为使曲线包络更接近()
ω
j e H 的幅度特性曲线,DFT 变换区间要选大些。例如窗口长度N=33时,可通过在()
n h 末尾补零的方法,使长度变为64,再进行64点DFT ,则可以得到更精确的幅度衰减特性曲线。
在本课题的研究过程中,用到了矩形窗、三角窗、汉宁窗、海明窗、布莱克曼窗函数,由于在时域输入信号,时间不存在负值,故对窗函数要作一些变动。下面介绍四种窗函数。
图2.1 主程序框图
)
()()()()()()]
([)(22k H k H k H k jH k H k H n h DFT k H I R I R +=+==
2.1 矩形窗函数
矩形窗(Rectangular Window)函数的时域形式可以表示为:
它的频域特性为
Boxcar 函数:生成矩形窗
调用方式,w = boxcar (n):输入参数n 是窗函数的长度;输出参数w 是由窗函数的值组成的n 阶向量。
从功能上讲,该函数又等价于w = ones(n,1)。
2.2 汉宁窗函数
汉宁窗函数的时域形式可以表示为:
它的频域特性为:
其中,)(ωR W 为矩形窗函数的幅度频率特性函数。
汉宁窗函数的最大旁瓣值比主瓣值低31dB ,但是主瓣宽度比矩形窗函数的主瓣宽度增加了1倍,为8π/N 。
hanning 函数:生成汉宁窗 调用方式
(1) w = hanning(n):输入参数n 是窗函数的长度;输出参数w 是由窗函数的值组成的n 阶向量。注意:此函数不返回是零点的窗函数的首尾两个元素。
(2) w = hanning(n,'symmetric'):与上面相类似。
(3) w = hanning(n,'periodic'):此函数返回包括为零点的窗函数的首尾两个元素。
()
⎪⎭
⎫ ⎝⎛⎪⎭⎫ ⎝⎛=⎪⎭
⎫ ⎝⎛--2sin 2sin e
e 21j j ωωωωN W N R ⎩⎨
⎧-≤≤==其他
,01
0,1)()(N n n R n w N ⎪⎪⎭⎫ ⎝
⎛⎪⎭⎫ ⎝⎛
+-=1π2cos 15.0)(n k k w N
k ,,2,1 =()()⎪⎭
⎫
⎝
⎛
--⎭⎬⎫⎩
⎨⎧⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛
-++⎪⎭⎫ ⎝⎛--+=21j e 1π21π225.05.0N R R R N W N W W W ωωωωω