加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

几种常用窗函数

(2014-01-02 11:10:36)
标签:

滤波器

海明窗

汉宁窗

升余弦窗

dsp

it

分类: 电子技术篇
http://jpkc.bupt.edu.cn:4213/szxhcl/course/cbook/第五章/5_2_4.html

设计 FIR DF 时,窗函数不仅可以影响过渡带宽度,还能影响肩峰和波动的大小,因此,
选择窗函数应使其频谱:
(1)主瓣宽度尽量小,以使过渡带尽量陡。
(2)旁瓣相对于主瓣越小越好,这样可使肩峰和波动减小,即能量尽可能集中于主瓣内。
 
对于窗函数,这两个要求是相互矛盾的,要根据需要进行折衷的选择,为了定量地比较
各种窗函数的性能,给出三个频域指标:
(1)3db 带宽 B ,单位为http://jpkc.bupt.edu.cn:4213/szxhcl/course/cbook/pic/5th%20section/72.GIF(最大可能的频率分辨力)

(2)最大旁瓣峰值 A(dB) , A 越小,由旁瓣引起的谱失真越小

(3)旁瓣谱峰渐进衰减速度 D ( dB/oct )

 

一个理想的窗口,应该有最小的 B 、 A 及最大的 D 。

 
1 、基本窗

(1)矩形窗

http://jpkc.bupt.edu.cn:4213/szxhcl/course/cbook/pic/5th%20section/74.GIF
http://jpkc.bupt.edu.cn:4213/szxhcl/course/cbook/pic/5th%20section/75.GIF
在 Matlab 中,实现矩形窗的函数为 w=boxcar(n)
(2)三角窗(或巴特利特 Bartlett 窗)
由于矩形窗从 0 到 1 (或 1 到 0 )有一个突变的过渡带,这造成了吉布斯现象。
Bartlett 提出了一种逐渐过渡的三角窗形式,它是两个矩形窗的卷积。
http://jpkc.bupt.edu.cn:4213/szxhcl/course/cbook/pic/5th%20section/77.GIF
在Matlab中,函数bartlett(n)和 triang(n)用来计算相似的三角窗,但它们有两个重
要的区别: bartlett 函数返回的序列两端总是 0 ,因此,对于奇数 n ,语句 bartlett(n+2) 的中间部分等于 triang(n) ;对于偶数 n , bartlett 仍然是两个矩形序列的卷积,但 n 为偶数时的三角窗没有标准定义。
 
(2)余弦窗
http://jpkc.bupt.edu.cn:4213/szxhcl/course/cbook/pic/5th%20section/79.GIF
2、升余弦窗
汉宁窗、汉明窗、布莱克曼窗都是升余弦窗的特例, 它们都是频率为 0~2π/(N-1) 和
4π/(N-1) 的余弦序列的组合。

其中 A 、 B 、 C 为常数。升余弦窗的频率特性比矩形窗有很大改善。

当 A = 0.5 , B=0.5 , C=0 时,为汉宁 (Hanning) 窗。 Matlab 中, w = hanning(n)
当 A = 0.54 , B=0.46 , C=0 时,为汉明窗。 Matlab 中, w = hamming(n)
当 A = 0.42 , B=0.5 , C=0.08 时,为布莱克曼窗。 Matlab 中, w = blackman(n)
 

(1)汉宁(Hanning)窗 —— 升余弦窗

http://jpkc.bupt.edu.cn:4213/szxhcl/course/cbook/pic/5th%20section/82.GIF
 
(2)汉明( Hamming )窗——改进的升余弦窗
http://jpkc.bupt.edu.cn:4213/szxhcl/course/cbook/pic/5th%20section/84.GIF
 
(3)布莱克曼( Blackman )窗——二阶升余弦窗
http://jpkc.bupt.edu.cn:4213/szxhcl/course/cbook/pic/5th%20section/86.GIF
 
比较以上窗函数,可以看到,矩形窗函数具有最窄的主瓣B,但也有最大的边瓣峰值 A
和最慢的衰减速度 D。
汉宁Hanning窗的主瓣稍宽,但有着较小的旁瓣和较大的衰减速度,因而被认为是较好
的窗口。
3、凯瑟(Kaiser)窗
上面讨论的几种窗函数都是以牺牲一定的主瓣宽度为代价,来获得某种程度的旁瓣抑制
,而 Kaiser 窗全面反映了这种主瓣和旁瓣衰减之间的交换关系,它定义了一组可调的由零阶贝塞尔 Bessel 函数构成的窗函数,通过调整参数β可以在主瓣宽度和旁瓣衰减之间自由选择它们的比重。对于某一长度的 Kaiser 窗,给定β,则旁瓣高度也就固定了。
Kaiser 窗函数由 J.F. Kaiser 提出,由下是给出:
其中 I0 是修正过的零阶贝塞尔 Bessel 函数,β是用来调整窗形状的参数,β依赖于参数 N ,选择 N 可产生各种过渡带和接近最优的阻带衰减。
对于相同的N, Kaiser 窗可以提供不同的过渡带宽,这是其他窗函数做不到的。例如
如果β = 5.658 ,则过渡带宽等于 7.8pi/N ,最小阻带衰减为 60dB ,如下图所示。
下面是β 分别取 1 、 10 、 20 等不同值时,几个长为 50 的 Kaiser 窗。
从图中可以看出,参数β 选得越大,其频谱的旁瓣越小,但主瓣宽度也相应地增加,因
从图中可以看出,参数β 选得越大,其频谱的旁瓣越小,但主瓣宽度也相应地增加,因
下面固定β,当窗的长度变化时,相应的旁瓣的高度保持不变。
 
由于Bessel函数的复杂性,这种窗的设计公式很难推导,为此,Kaiser 开发了经验公
式。
给定 wp、ws、 Rp 和 As ,参数β定义如下:
对于过渡带宽 △w = ws - wp (rad/s) ,滤波器阶数为

阶数为 N 的滤波器大致能满足要求,但最后的结构还必须要演算以便证明这一点。

在 Matlab 中,函数 w = kaiser(n, beta) 实现 Kaiser 窗。

4、切比雪夫(Chebyshev)窗
在给定旁瓣高度下,Chebyshev窗的主瓣宽度最小,具有等波动性,也就是说,其所有
的旁瓣都具有相等的高度。
在 Matlab 中,函数 w=chebwin(n,r)以窗长度和旁瓣高度为参数计算切比雪夫窗。
Chebyshev 仅对奇数长度的窗有定义,若 n 为偶数,函数 w = chebwin(n,r) 先将它加 1 ,然后设计长为 n+1 的切比雪夫窗。
其傅立叶变换的旁瓣幅度低于主瓣 r dB 。
此外,还有Papoulis窗、Parzen窗、Poisson窗、Cauchy窗、 Gaussian窗、Bartlett-Hann、Blackman-Harris 、 Nuttall's Blackman-Harris 、 Bohman 、 Flat Top window 、 Hann 、 Parzen (de la Valle-Poussin ) 、 Tapered cosine 等。
Matlab 窗设计和分析工具 (WinTool) 具有 GUI 界面,可以用来设计和分析窗函数,
其用法:
>> wintool 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有