ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:129.85KB ,
资源ID:25454766      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25454766.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(几种常见窗函数及其MATLAB程序实现.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

几种常见窗函数及其MATLAB程序实现.docx

1、几种常见窗函数及其MATLAB程序实现几种常见窗函数及其MATLAB程序实现2013-12-16 13:582296人阅读评论(0)收藏举报分类:Matlab(15)数字信号处理中通常是取其有限的时间片段进行分析,而不是对无限长的信号进行测量和运算。具体做法是从信号中截取一个时间片段,然后对信号进行傅里叶变换、相关分析等数学处理。信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的。在FFT分析中为了减少或消除频谱能量泄漏及栅栏效应,可采用不同的截取函数对信号进行截短,截短函数称为窗函数,简称为窗。泄漏与窗函数频谱的两侧旁瓣有关,对于窗函数的选用

2、总的原则是,要从保持最大信息和消除旁瓣的综合效果出发来考虑问题,尽可能使窗函数频谱中的主瓣宽度应尽量窄,以获得较陡的过渡带;旁瓣衰减应尽量大,以提高阻带的衰减,但通常都不能同时满足这两个要求。频谱中的如果两侧瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱。不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。信号的加窗处理,重要的问题是在于根据信号的性质和研究目的来选用窗函数。图1是几种常用的窗函数的时域和频域波形,其中矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低,如果仅要求精确读出主瓣频率,而不考虑幅值精

3、度,则可选用矩形窗,例如测量物体的自振频率等;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高;如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。表1 是几种常用的窗函数的比较。如果被测信号是随机或者未知的,或者是一般使用者对窗函数不大了解,要求也不是特别高时,可以选择汉宁窗,因为它的泄漏、波动都较小,并且选择性也较高。但在用于校准时选用平顶窗较好,因为它的通带波动非常小,幅度误差也较小。表1几种常用的窗函数的比较名称特点应用矩形窗Rectangle矩形窗使用最多,习惯上不加窗就是使信号通过

4、了矩形窗。这种窗的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。频率识别精度最高,幅值识别精度最低,所以矩形窗不是一个理想的窗。如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用矩形窗,例如测量物体的自振频率等,也可以用在阶次分析中。汉宁窗Hanning又称升余弦窗。主瓣加宽并降低,旁瓣则显著减小,从减小泄漏观点出发,汉宁窗优于矩形窗但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。它与矩形窗相比,泄漏、波动都减小了,并且选择性也提高。是很有用的窗函数。如果测试信号有多个频率分量,频谱表现的十分复杂,且测试的目的更多关注频率点而非能量

5、的大小,需要选择汉宁窗。如果被测信号是随机或者未知的,选择汉宁窗。海明窗(汉明窗)Hamming与汉宁窗都是余弦窗,又称改进的升余弦窗,只是加权系数不同,使旁瓣达到更小。但其旁瓣衰减速度比汉宁窗衰减速度慢。与汉明窗类似,也是很有用的窗函数。平顶窗Flap Top平顶窗在频域时的表现就象它的名称一样有非常小的通带波动。由于在幅度上有较小的误差,所以这个窗可以用在校准上。凯塞窗Kaiser定义了一组可调的由零阶贝塞尔Bessel 函数构成的窗函数,通过调整参数可以在主瓣宽度和旁瓣衰减之间自由选择它们的比重。对于某一长度的Kaiser 窗,给定,则旁瓣高度也就固定了。布莱克曼窗Blackman二阶升

6、余弦窗,主瓣宽,旁瓣比较低,但等效噪声带宽比汉宁窗要大一点,波动却小一点。频率识别精度最低,但幅值识别精度最高,有更好的选择性。常用来检测两个频率相近幅度不同的信号。高斯窗Gaussian是一种指数窗。主瓣较宽,故而频率分辨力低;无负的旁瓣,第一旁瓣衰减达一55dB。常被用来截短一些非周期信号,如指数衰减信号等。对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。三角窗(费杰窗)Fejer是幂窗的一次方形式。与矩形窗比较,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣。如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;切比雪夫窗(Chebyshev)在给

7、定旁瓣高度下,Chebyshev窗的主瓣宽度最小,具有等波动性,也就是说,其所有的旁瓣都具有相等的高度。下面是几种窗函数归一化DTFT幅度的MATLAB程序:附上DTFT函数(dtft.m):function X = dtft( x,n,w )% Computes Discrete-time Fourier Transform% X = dtft(x,n,w)% X = DTFT values computed at w.frequencies% x = finite duration sequence over n% n = sample position vector% w = frequ

8、ency location vectorX = x*exp(-j*n*w);%end矩形窗:%DTFT of a Rectangular Window, M=10,25,50,101clc; close all;Hf_1=figure; set(Hf_1,NumberTitle,off,Name,P0304a);w=linspace(-pi,pi,501); wtick=-1:0.5:1; magtick=0:0.5:1.1;% M=10M=10; n=0:M; x=ones(1,length(n);X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX)

9、;subplot(2,2,1); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);ylabel(|X|); title(M=10);set(gca,XTick,wtick,YTick,magtick);% M=25M=25; n=0:M; x=ones(1,length(n);X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);subplot(2,2,2); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);title(M=25); set(gca,XTic

10、k,wtick,YTick,magtick);% M=50M=50; n=0:M; x=ones(1,length(n);X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);subplot(2,2,3); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);xlabel(omega/pi); ylabel(|X|);title(M=50); set(gca,XTick,wtick,YTick,magtick);% M=101M=101; n=0:M; x=ones(1,length(n);X=dtft(x,

11、n,w); magX=abs(X); magX=magX/max(magX);subplot(2,2,4); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);xlabel(omega/pi); ylabel(|X|);title(M=101);三角窗:% Triangular Window:% DTFT of a Triangular Window,M = 10,25,50,101clc; close all;Hf_1=figure; set(Hf_1,NumberTitle,off,Name,P0304b);w=linspace(-pi,pi,

12、501); wtick=-1:0.5:1; magtick=0:0.5:1.1;% M = 10M=10; n=0:M; x=(1-(abs(M-1-(2*n)/(M+1);x=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);subplot(2,2,1); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);ylabel(|X|); title(M = 10);set(gca,XTick,wtick,YTick,magtick);% M = 25M=25; n=0:M; x=(1-(abs(M-1-(2*n

13、)/(M+1);X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);subplot(2,2,2); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);title(M = 25); set(gca,XTick,wtick,YTick,magtick);% M = 50M=50; n=0:M; x=(1-(abs(M-1-(2*n)/(M+1);X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);subplot(2,2,3); plot(w/pi,magX,Line

14、Width,1.5); axis(-1 1 0 1.1);xlabel(omega/pi); ylabel(|X|); title(M = 50);set(gca,XTick,wtick,YTick,magtick);% M = 100M=101;n=0:M; x=(1-(abs(M-1-(2*n)/(M+1);X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);subplot(2,2,4); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);xlabel(omega/pi); title(M = 101

15、);set(gca,XTick,wtick,YTick,magtick);海宁窗:% Hann Window% DTFT of a Hann Window, M = 10,25,50,101clc;close all;Hf_1 = figure; set(Hf_1,NumberTitle,off,Name,P0304c);w=linspace(-pi,pi,501); wtick=-1:0.5:1; magtick=0:0.5:1.1;% M = 10M=10;n=0:M; x=0.5*(1-cos(2*pi*n)/(M-1);X=dtft(x,n,w); magX=abs(X); magX=

16、magX/max(magX);subplot(2,2,1); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);ylabel(|X|); title(M = 10);set(gca,XTick,wtick,YTick,magtick);% M = 25M=25;n=0:M; x=0.5*(1-cos(2*pi*n)/(M-1);X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);subplot(2,2,2); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);

17、title(M = 25);set(gca,XTick,wtick,YTick,magtick);% M = 50M=50;n=0:M; x=0.5*(1-cos(2*pi*n)/(M-1);X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);subplot(2,2,3); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);xlabel(omega/pi); ylabel(|X|); title(M = 50);set(gca,XTick,wtick,YTick,magtick);% M = 101M=1

18、01;n=0:M; x=0.5*(1-cos(2*pi*n)/(M-1);X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);subplot(2,2,4); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);xlabel(omega/pi); title(M = 101);set(gca,XTick,wtick,YTick,magtick);哈明窗:% Hamming Window:clc; close all;Hf_1=figure; set(Hf_1,NumberTitle,off,Name,P030

19、4d);w=linspace(-pi,pi,501); wtick=-1:0.5:1; magtick=0:0.5:1.1;% M = 10M=10; n=0:M; x=(0.54-0.46*cos(2*pi*n)/(M-1);X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);subplot(2,2,1); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);ylabel(|X|); title(M = 10);set(gca,XTick,wtick,YTick,magtick);% M = 25M=25

20、; n=0:M; x=(0.54-0.46*cos(2*pi*n)/(M-1);X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);subplot(2,2,2); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);title(M = 25);set(gca,XTick,wtick,YTick,magtick);% M = 50M=50; n=0:M; x=(0.54-0.46*cos(2*pi*n)/(M-1);X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX)

21、;subplot(2,2,3); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);xlabel(omega/pi); ylabel(|X|); title(M=50);set(gca,XTick,wtick,YTick,magtick);% M = 101M=101; n=0:M; x=(0.54-0.46*cos(2*pi*n)/(M-1);X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);subplot(2,2,4); plot(w/pi,magX,LineWidth,1.5); axis(-1 1 0 1.1);xlabel(omega/pi);title(M=101);set(gca,XTick,wtick,YTick,magtick);

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

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