精华内容
下载资源
问答
  • 2021-04-18 10:50:50

    m汉宁窗hanning汉明窗hamming矩形窗-read

    窗宽的选择 使 能及时地跟踪语音能量的缓慢时变规律 对语音振幅在一个基音周期时间内的瞬时快变化有显著平滑作用 窗宽时间为10~20ms h(n)无限冲激响应滤波器 zero cross rate 利用信号的相关性进行声源定位 利用互相关进行水管网络泄漏检测 3.减少计算量的方法-FFT 4.短时自相关函数的另一种计算方法 6.对浊音短时自相关函数的修正 §4.5 短时时域处理技术应用举例 1.语音段起止端点判别(起始点和终止点) 需解决的问题:区分语音和噪声 采用的手段:短时能量和短时平均过零率 Center-clipping technique 5m 8m 麦克风 声源 r 和 分别为两两麦克风间的时间延迟。 信号s(n)与其滞后信号s(n-m)的互相关函数在n=m处取得最大值。 Multiple sound source tracking system 水听器 水听器 放大滤波 数据采集 计算互相关 得到漏水声达到两个传声器的传播时间差,再进行位置判别。 流体水管 2.短时自相关函数的定义 x(m) w(n-m) m n n-(N-1) (1)说明当时域信号为周期信号时,自相关函数也是周期性函数,两者具有同样的周期。 (2)Rn(k)为偶函数, Rn(k)=Rn(-k) (3)Rn(0)最大, Rn(0)? |Rn(k)|, Rn(0)=En,对于确定信号, Rn(0)是信号能量;对于随机信号或周期信号, Rn(0)是平均功率。 正弦波周期信号 正弦波周期信号的自相关函数波形 正弦波周期信号和其自相关函数叠加 运算量 窗宽为N,选取语音段需要N次乘法,对每个k值计算乘积需要N-k次乘法,设k的取值为0~K,则给定n计算 的总乘法次数为: 例如N=401,K=250, 则M=69677 FFT FFT IFFT 极限情况:当k=0,线性卷积的长度为2N-1,循环卷积的长度为N,因此要满足上式,须将 和 扩展为2N点。 延迟k 5、短时自相关函数的作用 1.区分清/浊音 浊音语音的自相关函数具有一定的周期性。 清音语音的自相关函数不具有周期性,类似噪声,有点如语音信号本身。 2.估计浊音语音信号的周期,即估计基音周期。 女声汉语拼音a的一帧信号(在采样频率为22050Hz的情况下,取20ms作为一帧),自相关波形图。说明浊音的自相关函数具有一定的周期性。 原始语音信号 自相关函数波形 原始语音信号和其自相关函数波形 Auto-correlation peaks 男声汉语拼音s的一帧信号(在采样频率为22050Hz的情况下,取20ms作为一帧),自相关波形图。 原始语音信号 自相关函数波形 男声汉语拼音s的一帧信号(在采样频率为22050Hz的情况下,取10ms作为一帧),自相关波形图。 原始语音信号 修改坐标的自相关函数波形 用MATLAB的函数randn,产生一帧高斯白噪声,其自相关函数图。说明清音是噪声激励的正确性。 白噪声信号 修改坐标的自相关函数波形 浊音 矩形窗 清音 矩形窗 浊音 汉明窗 清音 汉明窗 N=401 N=201 N=125 窗形和窗长对 的影响 任何k值的短时自相关函数使用了N个积 矩形窗 通过增加窗的长度 0 N-1 0 N-1+K 0 N-1 K 7.短时平均幅度差函数(AMDF) 短时自相关函数是语音信号时域分析的重要参量,但由于乘法运算所需要的时间长。为了避免乘法,一个简单的方法就是利用差值,为此常常采用另一种与自相关函数有类似作用的参量,短时平均幅度差函数。 短时平均幅度差函数能够代替自相关函数的原理是:如果信号是完全的周期信号(设周期为Np),则相距为周期的整数倍的样点上的幅值相等,差值为零:d(n)=x(n)-x(n-k)=0 对于周期性的x(n),Fn(k)也呈周期性,与Rn(k)相反的是在Rn(k)谷点时,对应Fn(k)是峰值。 周期为(629点)的正弦波 正弦波的平均幅度差函数波形 正弦波的自相关函数 正弦波的平均幅度差函数 一帧浊音的的短时自相关函数 短时平均幅度差函数 一帧清音的短时自相关函数 短时平均幅度差函数 浊音是一个准周期信号,在一帧语音内基音周期近似恒定,因此,短时平均幅度差函数在浊音语音的基音周期上出现极小值,而在清音语音中没有明显的极小值。 短时平均幅度差函数和自相关函数的关系是: 由于计算AMDF函数只需要加、减和取绝对值运算,用硬件实现(定点DSP系统)时,运算量较之短时自相关函数大大下降,同时,AMDF函数在基音周期的谷点比

    更多相关内容
  • 绘制不同频率和持续时间汉宁窗调制后的正弦激励信号
  • 汉宁窗傅里叶变换matlab代码光谱 用于绘制音频频谱的MATLAB脚本 描述 频谱 读取音频文件,进行播放并实时绘制频谱。 频谱的样式取决于所选择的refreshFig函数。 要更改refreshFig功能,只需将refreshFig.m替换为...
  • 汉宁窗的应用

    2014-06-11 09:22:51
    汉宁(Hanning)窗可以看成是升余弦窗的一个特例,汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是 3个 sinc(t)型函数之和,而括号中的两项相对于第一个谱窗向左、右各移动了π/T,从而使旁瓣互相抵消,消去...
  • 汉宁窗的matlab实现.doc

    2021-04-18 13:58:44
    数字信号处理课程设计题目:用汉宁窗设计FIR数字低通滤波器对给定数据进行滤波院系:专业:通 信 工 程班级:学号:姓名:指导教师:职称:1.1 FIR滤波器:有限长单位脉冲响应数字滤波器(Finite Impulse Response Digital ...

    数字信号处理

    课程设计

    题目:用汉宁窗设计FIR数字

    低通滤波器对给定数据进行滤波

    院系:

    专业:通 信 工 程

    班级:

    学号:

    姓名:

    指导教师:

    职称:

    1.1 FIR滤波器:

    有限长单位脉冲响应数字滤波器(Finite Impulse Response Digital Filter,缩写FIRDF):有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,最大优点是可以实现线性相性滤波,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。FIR滤波器的设计方法主要分为两类:第一类是基于逼近理想滤波器器特性的方法包括窗函数法、频率采样法、和等波纹最佳逼近法;第二类是最优设计法。

    设FIRDF的单位脉冲响应的长度为,则其频率响应函数为

    (1-1)

    一般将表示成如下形式:

    (1-2)

    式中,是的实函数(可以去负值)。与前面的表示形式,即相比, 与不同。与 不同。为了区别于幅频响应函数和相频响应函数,称为幅频特性函数,称为相频特性函数。

    第一类线性相位FIRDF的相位特性函数是的严格线性函数:

    (1-3)

    第二类线性相位FIRDF的相位特性函数如下:

    (1-4)

    式中,是常数,是起始相位。在信号处理中很有实用价值(如希伯尔特变换器),这是FIRDF除了线性相位滤波外,还具有真正交变换作用。

    1.2 窗函数设计法:

    窗函数设计法的基本思想是用FIRDF逼近希望的滤波特性。设希望逼近的滤波器的频率响应为,其单位脉冲响应用表示。为了设计简单方便,通常选择为具有片段常数特性的理想滤波器。因此是无限长非因果序列,不能直接作为FIRDF的单位脉冲响应。窗函数设计法就是截取为有限长的一段因果序列,并用合适的窗口函数进行加权作为FIRDF的单位脉冲响应。

    常见的窗函数,可以分为以下主要类型,

    (1) 幂窗--采用时间变量某种幂次的函数,如矩形、三角形、梯形或其它时间(t)的高次幂;

    (2)三角函数窗--应用三角函数,即正弦或余弦函数等组合成复合函数,例如 汉宁窗、海明窗等;

    (3) 指数窗--采用指数时间函数,例如高斯窗等[5]。

    其性能如表1-1所示:

    名称

    滤波器

    过渡带宽

    最小阻带衰减

    名称

    滤波器

    过渡带宽

    最小阻带衰减

    矩形

    1.8π/M

    21dB

    PARZENWIN

    6.6π/M

    56db

    巴特利特

    6.1π/M

    25dB

    FLATTOPWIN

    19.6π/M

    108db

    汉宁

    6.2π/M

    44dB

    GAUSSWIN

    5.8π/M

    60db

    汉明

    6.6π/M

    51dB

    BARTHANNWIN

    3.6π/M

    40db

    布莱克曼

    11π/M

    74dB

    BLACKMANHARRIS

    16.1π/M

    109db

    BOHMANWIN

    5.8π/M

    51.5db

    CHEBWIN

    15.2π/M

    113db

    NUTTALLWIN

    15.4π/M

    108db

    TUKEYWIN

    2.4π/M

    22db

    表1-1 常见窗函数性能表

    用窗口设计法基本步骤如下:

    (1)构造希望逼近的频率响应函数。以低通线性相位FIRDF设计为例,一般选择为线性理想低通滤波器,即

    (1-5)

    (2)求出。对进行IFT得到

    (1-6)

    (3)加窗得到FIRDF的单位脉冲响应,

    (1-7)

    式中,称为窗口函数,其长度为。如果要求第一类线性相位FIRDF,则要求关于点偶对称。而关于点偶对称,所,同时要求关于点偶对称。

    1.3 汉宁窗:

    汉宁窗(Hanning Window)又称升余弦窗,汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是3个型函数之和,而括号中的两项相对于第一个谱窗向左、右各移动了π/T,从而使旁瓣互相抵消,消去高频干扰和漏能。可以看出,汉宁窗主瓣加宽并降低,旁瓣则显著减小,从减小泄漏观点出发,汉宁窗优于矩形窗.但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。

    (1-8)

    根据傅里叶变换的线性性质和调制定理得到

    (1-9)

    当时,,则

    (1-10)

    为汉宁窗的幅度响应函数。

    二、设计流程图:

    本课程设计主要是对一段数据,加入噪声后,用汉宁窗函数法设计出的FIR滤波器对加入噪声后的数据信号进行滤波去噪处理,并且分析对比前后时域和频域波形的程序设计。程序的设计流程图如下图2-1所示:

    从文本中读取数据信号

    从文本中读取数据信

    展开全文
  • 文章来源于微信公众号(茗创科技),欢迎有兴趣的朋友搜索关注。 如何使用汉宁窗、多窗口和小波对单个对象的脑电信号进行时频分析?...汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是3个sinc(t)型函

    文章来源于微信公众号(茗创科技),欢迎有兴趣的朋友搜索关注。

    如何使用汉宁窗多窗口小波对单个对象的脑电信号进行时频分析?(本文以MEG数据为例)相信你看完这篇文章,会有所收获。

    我们先来认识一下汉宁窗、多窗口和小波分别是什么:

    (1)汉宁窗:其实汉宁窗的英文写法有两种:hann/hanningwindow。目前这两种表述都可以,而且MATLAB中也存在hann和hanning两个函数。汉宁窗是窗函数之一,是升余弦窗的一个特例。汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是3个sinc(t)型函数之和,而括号中的两项相对于第一个谱窗向左、右各移动了π/T,从而使旁瓣互相抵消,消去高频干扰和漏能,适用于非周期性的连续信号。

    图片

    图片

    (2)多窗口:多窗口法(multitaper)通过平均加窗数据的周期图以降低频谱估计的方差,多窗口法使用了不同的窗口函数,但数据还是用的整段信号。多窗口法使用由一系列正交锥形窗(tapers)组成的离散长球序列(discrete prolate spheroidalsequence)来产生一系列的加窗数据,并计算这些加窗数据周期图的平均值,将其作为信号的频谱估计。除了正交性之外,这些锥形窗还具有最佳的时频集中特性。因此,多窗口法得到的频谱估计方差小、频率分辨率较高。

    图片

    本图来源于书籍《脑电信号处理与特征提取》

    (3)小波:我们往期文章完美通俗解读小波变换,终于懂了小波是什么中有关于小波的详细介绍,感兴趣的小伙伴可以点此链接进行阅读。

    图片

    某种小波的示意图

    了解完汉宁窗、多窗口和小波后,接下来看如何运用它们进行时频分析。总的分析步骤如下:

    (1)使用ft_definetrialft_preprocessing将数据读入MATLAB中;

    (2)使用ft_selectdata将试次与每个条件分开;

    (3)使用ft_freqanalysis计算每个频率箱和每个时间箱的功率值;

    (4)可视化结果。通过单通道(ft_singleplotTFR)或多通道(ft_multiplotTFR)创建时间-频率图,或者以指定的时间-频率间隔创建地形图(ft_topoplotTFR)来实现。

    图片

    时频分析的步骤示意图

    本文为大家详细介绍了4种时频分析步骤。标题分别为时频分析①,时频分析②,时频分析③,时频分析④。

    先用ft_preprocessing读取数据。该脚本是从-1.0秒到2.0秒读取数据,为了减少在试次开始和结束时发生的边界效应,建议设置比原定计划稍大一些的时间间隔。在MATLAB的命令窗口中输入Load dataFIC加载已经预处理过的数据。选择一个条件进行时频分析:

    cfg = [];cfg.trials = data_all.trialinfo == 3;dataFIC = ft_redefinetrial(cfg, data_all);
    

    时频分析①

    汉宁锥度,固定窗长

    如何使用汉宁锥计算时频,选择一个固定的时间窗长,根据时间窗长(δ T)确定频率分辨率。频率分辨率(δ f)=1 /时间窗长(秒)(δ T)。因此,500ms的时间窗则等于2Hz的频率分辨率(1/0.5s = 2 Hz),这说明可以用2Hz、4Hz、6Hz等频率来计算功率。

    load dataFIC

    下面的代码是以500ms的时间窗为例。​​​​​​​

    cfg              = [];cfg.output       = 'pow';cfg.channel      = 'MEG';cfg.method       = 'mtmconvol';cfg.taper        = 'hanning';cfg.foi          = 2:2:30;                           % analysis 2 to 30 Hz in steps of 2 Hzcfg.t_ftimwin    = ones(length(cfg.foi),1).*0.5;   % length of time window = 0.5 seccfg.toi          = -0.5:0.05:1.5;                    % time window "slides" from -0.5 to 1.5 sec in steps of 0.05 sec (50 ms)TFRhann = ft_freqanalysis(cfg, dataFIC);

    不管用什么方法来计算TFR,输出的格式都是相同的。输出格式是一个具有以下字段的结构:

    TFRhann =
            label: {149x1 cell}                % Channel names       dimord: 'chan_freq_time'            % Dimensions contained in powspctrm, channels X frequencies X time         freq: [2 4 6 8 10 12 14 16 18 20 22 24 26 28 30]  % Array of frequencies of interest (the elements of freq may be different from your cfg.foi input depending on your trial length)         time: [1x41 double]               % Array of time points considered    powspctrm: [149x15x41 double]          % 3-D matrix containing the power values         elec: [1x1 struct]                % Electrode positions etc         grad: [1x1 struct]                % Gradiometer positions etc          cfg: [1x1 struct]                % Settings used in computing this frequency decomposition

    TFRhann功率谱包含每个特定频率的原始功率值的时间进程。

    可视化

    为了将事件相关电位的变化可视化,将基线间隔标准化。

    使用ft_multiplotTFR函数绘制所有传感器的TFR,在cfg结构中可以调整设置参数。例如:​​​​​​​

    cfg = [];cfg.baseline     = [-0.5 -0.1];cfg.baselinetype = 'absolute';cfg.zlim         = [-2.5e-27 2.5e-27];cfg.showlabels   = 'yes';cfg.layout       = 'CTF151_helmet.mat';figureft_multiplotTFR(cfg, TFRhann);

    注意,使用选项cfg基线和cfg基线类型对数据进行基线校正。基线校正也可以通过ft_freqbaseline脚本实现。

    使用ft_singleplotTFR绘制单个channel的图,以传感器MRC15的TFR为例,脚本设置如下。​​​​​​​

    cfg = [];cfg.baseline     = [-0.5 -0.1];cfg.baselinetype = 'absolute';cfg.maskstyle    = 'saturation';cfg.zlim         = [-2.5e-27 2.5e-27];cfg.channel      = 'MRC15';cfg.layout       = 'CTF151_helmet.mat';figureft_singleplotTFR(cfg, TFRhann);

    图片

    使用ft_singleplotTFR获得的单个传感器的时频图

    从上图中可以看出,在刺激开始后的0.9到1.3s的时间间隔内,功率在15-20 Hz左右增加。使用ft_topoplotTFR来绘制beta功率增加的地形图。​​​​​​​

    cfg = [];cfg.baseline     = [-0.5 -0.1];cfg.baselinetype = 'absolute';cfg.xlim         = [0.9 1.3];cfg.zlim         = [-1e-27 1e-27];cfg.ylim         = [15 20];cfg.marker       = 'on';cfg.layout       = 'CTF151_helmet.mat';cfg.colorbar     = 'yes';figureft_topoplotTFR(cfg, TFRhann);

    图片

    使用ft_topoplotTFR获得时频表征(15-20Hz,刺激后0.9-1.3s)的地形图

    时频分析②

    汉宁锥度,频率相关窗长

    根据频率变化的时间窗计算TFR。通常,时间窗随着频率的增加而变短。这种方法的主要优点是,时间平滑随着频率的增加而减小,从而增加了对短期效应的敏感性。然而,时间分辨率的提高是以频率分辨率为代价的。接下来主要演示如何使用滑动窗口汉宁锥度的方法实现频率相关的时间窗分析。该方法与小波分析非常相似。用Morlet小波进行的小波分析不同于高斯形状的锥度(见时频分析④)。

    最好方法是首先选择每个时间窗口的周期数,这对所有频率都是相同的。例如,如果每个窗口的周期是7,那么7Hz的时间窗口是1000ms(1/7x 7个周期);10Hz和时间窗是700ms  (1/10 x 7周期)和20Hz的时间窗是350 ms (1/20 x 7周期)。然而,太细的频率分辨率不仅不会提供新的信息,反倒会造成冗余。

    以下是一个时间窗周期为7的具体设置参数。这里只对一个传感器(MRC15)进行计算,但当然也可以扩展到所有传感器。​​​​​​​

    cfg              = [];cfg.output       = 'pow';cfg.channel      = 'MRC15';cfg.method       = 'mtmconvol';cfg.taper        = 'hanning';cfg.foi          = 2:1:30;cfg.t_ftimwin    = 7./cfg.foi;  % 7 cycles per time windowcfg.toi          = -0.5:0.05:1.5;TFRhann7 = ft_freqanalysis(cfg, dataFIC);

    使用ft_singleplotTFR绘制结果:​​​​​​​

    cfg              = [];cfg.baseline     = [-0.5 -0.1];cfg.baselinetype = 'absolute';cfg.maskstyle    = 'saturation';cfg.zlim         = [-2e-27 2e-27];cfg.channel      = 'MRC15';cfg.interactive  = 'no';cfg.layout       = 'CTF151_helmet.mat';figureft_singleplotTFR(cfg, TFRhann7);

    图片

    使用ft_singleplotTFR获得的MRC15的时频图

    时频分析③

    多窗口

    为了更好地控制频率平滑,通常使用多窗口法。在一个给定的时间窗口中,更多的锥形窗将导致更强的平滑。振荡伽玛活动(30-100Hz)是相当宽的频带了,分析这一信号成分得益于多窗口。对于小于30Hz的信号,建议只使用单锥,例如上面所示的Hanning锥(注意,在下面的例子中,使用多锥来分析低频,因为这个数据集的伽玛波段不受影响)。

    基于多锥的时频分析可以通过ft_freqanalysis来实现。该函数使用滑动时间窗,在给定的频率下计算其功率。在通过离散傅里叶变换计算功率之前,数据是“锥形的”。每个时间窗可以使用几个正交锥形。计算每个锥形数据段的功率,然后进行合并。参数设置如下:

    (1)Cfg.foi,感兴趣的频率,从1Hz到30Hz,以2Hz为梯度。

    (2)Cfg.toi,兴趣的时间间隔。决定了计算功率值的时间窗的中心时间。Cfg.toi= -0.5:0.05:1.5表示功率值从-0.5到1.5s,以50ms为梯度。

    (3)Cfg.t_ftimwin为滑动时间窗的长度,单位为s(=tw)。选择cfg.t_ftimwin = 5. / cfg.foi,表示每个时间窗有5个周期。

    (4)Cfg.tapsmofrq确定频率平滑的宽度,单位为Hz(=fw)。选择cfg.tapsmofrq = cfg.foi*0.4,即平滑会随着频率的增加而增加。

    设置完这些参数后,呈现的图如下:

    图片

    a)使用多窗口法的TFRs设置的特征图;b)由以上设置参数产生的时间-频率图示例。

    cfg = [];cfg.output     = 'pow';cfg.channel    = 'MEG';cfg.method     = 'mtmconvol';cfg.foi        = 1:2:30;cfg.t_ftimwin  = 5./cfg.foi;cfg.tapsmofrq  = 0.4 *cfg.foi;cfg.toi        = -0.5:0.05:1.5;TFRmult = ft_freqanalysis(cfg, dataFIC)

    绘制结果​​​​​​​

    cfg = [];cfg.baseline     = [-0.5 -0.1];cfg.baselinetype = 'absolute';cfg.zlim         = [-2e-27 2e-27];cfg.showlabels   = 'yes';cfg.layout       = 'CTF151_helmet.mat';cfg.colorbar     = 'yes';figureft_multiplotTFR(cfg, TFRmult)
    

    图片

    使用多窗口法计算功率的时频图。

    时频分析④

    Morlet小波

    用多窗口法计算TFR的另一种方法是使用Morlet小波。该方法等效于使用高斯形状的锥体计算时间窗随频率变化的TFR。这里有一个关键参数是cfg.width,它以周期数确定小波的宽度。给定频率F的频谱带宽等于F/width*2(因此,在30 Hz和宽度为7时,频谱带宽为30/7*2= 8.6 Hz),而小波持续时间等于width/F/pi(在这种情况下,7/30/pi = 0.074s = 74ms)。

    利用Morlet小波计算TFR。​​​​​​​

    cfg = [];cfg.channel    = 'MEG';cfg.method     = 'wavelet';cfg.width      = 7;cfg.output     = 'pow';cfg.foi        = 1:2:30;cfg.toi        = -0.5:0.05:1.5;TFRwave = ft_freqanalysis(cfg, dataFIC);

    绘制结果​​​​​​​

    cfg = [];cfg.baseline     = [-0.5 -0.1];cfg.baselinetype = 'absolute';cfg.zlim         = [-2e-25 2e-25];cfg.showlabels   = 'yes';cfg.layout       = 'CTF151_helmet.mat';cfg.colorbar     = 'yes';figureft_multiplotTFR(cfg, TFRwave)

    图片

    用Morlet小波计算功率的时频图。

    参考资料:

    1.胡理.脑电信号处理与特征提取[M].科学出版社.2020.

    2.Percival, D. B. , &  Walden, A. T. . (1993). Spectral analysis for physical applications (multitaper and conventional univariate techniques) || references. , 10.1017/CBO9780511622762, 546-561.

    3.Tallon-Baudry, C. , &  Bertrand, O. . (1999). Oscillatory gamma activity in humans and its role in object representation. Trends in Cognitive Sciences.

    4.Mitra, P. P. , &  Pesaran, B. . (1998). Analysis of dynamic brain imaging data. Biophysical Journal, 76(2), 691-708.

    5.https://www.fieldtriptoolbox.org/tutorial/timefrequencyanalysis/

    展开全文
  • 汉宁窗的性质

    万次阅读 多人点赞 2016-05-14 14:31:21
    1、 为什么要加窗?对数字信号进行快速傅里叶变换,可得到数字信号的分析频谱。...常见的函数有矩形(即不加窗)、三角汉宁窗、汉明窗、高斯等。除了矩形窗外,其他的在时域上体现为中间高,两端低。

    1、 为什么要加窗?

    对数字信号进行快速傅里叶变换,可得到数字信号的分析频谱。分析频谱是实际频谱的近似。傅里叶变换是对延拓后的周期离散信号进行频谱分析。如果采样不合适,某一频率的信号能量会扩散到相邻频率点上,出现频谱泄漏现象。

    为了减少频谱泄漏,通常在采样后对信号加窗。常见的窗函数有矩形窗(即不加窗)、三角窗、汉宁窗、汉明窗、高斯窗等。除了矩形窗外,其他的窗在时域上体现为中间高,两端低。

    傅里叶分析的频率分辨率主要是受窗函数的主瓣宽度影响,而泄漏的程度则依赖于主瓣和旁瓣的相对幅值大小。矩形窗有最小的主瓣宽度,但是在这些最常见的窗中,矩形窗的旁瓣最大。因此,矩形窗的频率分辨率最高,而频谱泄漏则最大。不同的窗函数就是在频率分辨率和频谱泄漏中作一个折中选择。

    在电机故障诊断领域,需同时考虑频率分辨率和频谱泄漏。应用最广泛的窗函数是汉宁窗。

    2、MATLAB 中的汉宁窗

    汉宁窗的英文写法有两种: hann 窗和 hanning 窗。正确写法是 hann,但是在实际使用过程中和汉明窗 (hamming)混淆而慢慢变成了 hanning (参见维基百科 Hann Function 条目)。目前,这两种表述都可以。在 MATLAB 中,也存在 hann 和 hanning 两个函数。每一个窗函数都可以选择 ‘symmetric’ 或 ‘periodic’ 类型。’symmetric’ 类型表示窗函数是对称的,对称的窗函数主要用于滤波器的设计。’periodic’ 类型表示窗函数是周期性的,常用于频谱分析。因此,这里只比较 ‘periodic’ 类型的 hann 和 hanning。

    在 MATLAB 中, 可通过w = hann(N,'periodic')w = hanning(N,'periodic') 来获得长度为 N 的窗函数。实际上,上述两个函数得到的窗函数是完全一样的,均等价于

    ω(n)=12[1cos(2π(n1)N)]

    其验证过程如下:

    N = 20;%窗函数的长度
    w1 = hann(N,'periodic');
    w2=zeros(N,1);
    for n=1:N
        w2(n) = 0.5*(1-cos(2*pi*(n-1)/N));
    end
    figure(1);
    subplot(2,1,1);
    plot(w2);
    title(['hann(N,','periodic',')']);
    subplot(2,1,2);
    plot(w1-w2);
    
    w3 = hanning(N,'periodic');
    figure(2);
    subplot(2,1,1);
    plot(w3);
    title(['hanning(N,','periodic',')']);
    subplot(2,1,2);
    plot(w3-w1);
    ylim([-2e-16, 2e-16]);
    title(['hann(N,','periodic',') 和 ', 'hanning(N,','periodic',') 的误差'])
    

    其输出的波形如下:
    hann_period

    hanning_period

    值得注意的是, w = hann(N,'symmetric')w = hanning(N,'symmetric')并不是一回事。前者等价于

    ω(n)=12[1cos(2π(n1)N1)]

    而后者则等价于

    ω(n)=12[1cos(2πnN+1)]

    3、汉宁窗对频谱的影响

    3.1 加窗可减小频谱泄露

    %% 信号
    % 信号参数
    fs = 2500; %采样频率
    N=fs*10;
    t=(1:N)/fs;
    w1=49.85*2*pi;
    w2=w1+2*pi*1;
    w3=w1-2*pi*1;
    x = 10*cos(w1*t) + 0.005*cos(w2*t)+0.03*cos(w3*t);
    
    %% 窗函数对信号频谱的影响
    % 矩形窗
    x1 = x;
    MyPlotf=(0:(N-1))*fs/N;
    FF1=fft(x1,N);
    y1=abs(FF1)*2/N;%FFT幅值
    y1(1)=y1(1)/2;
    figure(3);
    plot(MyPlotf,20*log10(y1));
    xlim([40 60]);
    title('矩形窗后的频谱');
    
    % 汉宁窗
    w = hanning (N,'periodic');
    x2 = w'.*x;%加窗
    
    FF2=fft(x2,N);
    y2=abs(FF2)*2/N;%FFT幅值
    y2(1)=y2(1)/2;
    figure(4);
    plot(MyPlotf,20*log10(y2));
    xlim([40 60]);
    title('汉宁窗后的频谱');
    

    不加窗(矩形窗)时的频谱为

    不加窗时的频谱

    加汉宁窗时的频谱为

    加汉宁窗时的频谱

    从上述两个图可以看到,加入汉宁窗后,频谱泄露减小。原来被泄露的能量所掩盖而看不到的频率分量也可以清晰地看到。

    3.2 加窗对频谱幅值的影响

    波形为 x=Asin(2πft) 的信号,加汉宁窗后进行傅里叶分析,其傅里叶频谱中频率为 f 的分量幅值为 A2 (不考虑频谱泄露问题)。
    例:

    fs = 1000;%采样频率
    t = 1/fs:1/fs:0.2;%分析时间0.2s
    A = 10; %幅值
    f = 50; %频率
    x = A * sin(2*pi* f*t);
    N = numel(t);
    w = hann(N,'periodic');%生成窗函数
    x_window = w'.*x;
    
    MyPlotf=(0:(N-1))*fs/N;
    FF=fft(x,N);
    y=abs(FF)*2/N;%FFT幅值
    FF=fft(x_window,N);
    y_window=abs(FF)*2/N;%加窗后FFT幅值
    
    figure(5);
    plot(MyPlotf,y,'r',MyPlotf,y_window,'k');
    legend('不加窗(矩形窗)','加汉宁窗');
    title('加汉宁窗对信号频谱频谱幅值的影响');
    xlim([0 100]);
    

    得到的结果如下图所示:

    加入汉宁窗对频谱幅值的影响

    从图上可以看到,幅值为 10 的信号,不加窗时得到的幅值也为 10 (由于恰好能取到50 Hz 这个频率点,所以不存在频谱泄露), 加入汉宁窗后的幅值变为了原来的一半。但是,会在该频率点两侧各引入一个本不存在的频率点,且这些点的幅值为中心点幅值的一半。这是由汉宁窗本身的频谱决定的。

    4、结论

    上述结果表明:

    1. MATLAB 中,w = hann(N,'periodic')w = hanning(N,'periodic')是完全一样的;
    2. 加窗后频谱泄漏减小;
    3. 加汉宁窗后,其幅值减为原来的一半,且会在改频率点两旁各引入一个本不存在的点,且这两个点的幅值为中心点幅值的一半。

    申明:本博文来自 xinhuasz 的博客,地址为 http://blog.csdn.net/xinhuasz

    展开全文
  • matlab汉宁窗代码工程-振动 用于工程振动工程问题分析的 Matlab 代码文件。 P1 - 四个阻尼比的自由振动图。 (ζ = 0.01, 0.1, 1, 10) P2 - 考虑线性和非线性情况的简单钟摆运动图。 P3 - 具有初始条件的阻尼振动系统...
  • 汉明窗、矩形、三角汉宁窗等简单的仿真和各类函数的性能比较
  • 常用函数的特点

    千次阅读 2021-05-21 07:55:24
    2.汉宁窗汉宁窗的频谱时间上是由三个矩形经相互平移叠加二乘,汉宁窗的第一旁瓣幅值是主瓣的0.027%,这样旁瓣可以最大限度地互相抵消,从而达到加强主瓣的作用,使泄漏得到较为有效的抑制。采用汉宁窗可以...
  • 余弦(汉宁窗)的作用——图像预处理

    万次阅读 多人点赞 2017-09-25 15:12:53
    汉宁(Hanning)窗可以看成是升余弦窗的一个特例,汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是 3个 sinc(t)型函数之和,而括号中的两项相对于第一个谱窗向左、右各移动了π/T,从而使旁瓣互相抵消,消去...
  • ②在时域内,语音信号具有“短时性”的特点,即在总体上,语音信号的特征是随着时间而变化的,但在一段较短的时间间隔内,语音信号保持平稳。在浊音段表现出周期信号的特征,在清音段表现出随机噪声的特征。
  • 参考:如何理解FFT中时间窗与RBW的关系 - 知乎 - 如何理解FFT中时间窗与RBW的关系 hanmming窗和hamming窗的作用_西檬饭-CSDN博客_hamming - hanning窗和hamming窗的作用 FFT(fast Fourier transform)- 快速傅立...
  • Hamming或者Hanning的傅里叶变换 在书上看到Hamming在时域和频域的图如下: 自己复现一下: N=50 x=np.linspace(-N//2,N//2,N) ham=0.54+0.46*np.cos(2*np.pi*x/N) plt.plot(x,ham,'.-') 对应的频域为 ...
  • 信号处理的基本概念

    千次阅读 2021-01-12 17:26:49
    用于信号处理的函数很多,工程上常用的是矩形汉宁窗、汉明窗、余弦等,各种的特点如下说明: l 矩形的特点是容易获得主瓣窄,但旁瓣大,尤其第一旁瓣太高,为主瓣的21%,所以泄露很大。 l 汉宁窗...
  • 用于信号处理的函数很多,工程上常用的是矩形汉宁窗、汉明窗、余弦等,各种的特点如下说明: l 矩形的特点是容易获得主瓣窄,但旁瓣大,尤其第一旁瓣太高,为主瓣的21%,所以泄露很大。 l 汉宁窗...
  • -1-第一章绪论1.1概述机械信号是指机械系统在运行过程中各种随时间变化的动态信息,经各种测试仪器拾取并记录和存储下来的数据或图像。机械设备是工业生产的基础,而机械信号处理与分析技术则是工业发展的一个重要...
  • 检测窗口相关特点

    千次阅读 2020-06-23 00:03:24
    矩形特点:矩形使用最多,习惯上不加窗就是使信号通过了矩形。这种的优点是主瓣比较集中,缺点是旁瓣较高...汉宁窗特点:主瓣加宽并降低,旁瓣则显著减小,从减小泄漏观点出发,汉宁窗优于矩形。但汉宁窗主瓣
  • 谱分析中的选取

    2021-04-20 00:42:32
    信号截断及能量泄漏效应数字信号处理的主要数学工具是傅里叶变换,而傅里叶变换是研究整个时间域和频率域的关系。然而,当运用计算机实现工程测试信号处理时,不可能对无限长的信号进行测量和运算,而是取其有限的...
  • Python 实现函数

    万次阅读 2019-02-23 23:21:18
    在数字信号处理中,加窗是音频信号预处理重要的一步,以下使用 Python 实现三种常见的函数:...汉宁窗(Hanning)的定义为: 如果 0 ≤\leq≤ n ≤\leq≤ M - 1, W(n) = 0.5[1−cos(2πnM−1)]0.5[1-cos(\frac{2\pi ...
  • 下面介绍几种常用函数的性质和特点。(1)矩形矩形使用最多,习惯上不加窗就是使信号通过了矩形。这种的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣...(3)汉宁窗汉宁(Hanning)又称升余弦汉宁窗可...
  • 函数在图像处理中的应用

    千次阅读 2019-01-02 00:07:14
    函数在图像处理中的应用 1. 频谱混乱的三角函数图像 下图是一个45度倾斜的单一频率的余弦函数图像,请注意图中的边界都不是均匀过渡到外界的,全是不连续的跳变。 下面来看看这幅图的频谱会是什么样? ...
  • 滤波器中的窗口

    千次阅读 2018-07-03 10:53:12
    在设计有限脉宽响应的滤波器中,除了之前提过的等波纹滤波器去,还可以使用函数实现滤波器。matlab下使用fdatool,使用函数设计FIR滤波器,截止频率下衰减默认为6分贝。部分函数如下:具体函数的实现形式,...
  • %采样时间 gauss_time=exp(-0.5*(2*sqrt(2*log(2))*(t-2.5e-9)/FWHM).^2); %高斯脉冲,中心位于2.5ns处。 plot(t*1e+9,gauss_time,'linewidth',2.5); xlabel('Time/ns'); ylabel('Amplitude/V'); title('Gauss ...
  • 函数法是设计数字滤波器的一种方法,本文采用各种矩形汉宁窗、哈明、布莱克曼等不同形式对滤波器性能的影响.最后运用Matlab进行仿真比较.​ 2 完整代码 function y = plot_freq(Fs,L,x,s,i) % 绘制...
  • MTM法简单地采用一个参数:时间带宽积(Time-bandwidth product)NW,这个参数用以定义计算功率谱所用的数目,为2*NW-1。NW越大,功率谱计算次数越多,时间域分辨率越高,而频率域分辨率降低,使得功率谱估计的...
  • 《基于MATLAB结合矩形设计FIR滤波器》由会员分享,可在线阅读,更多相关《基于MATLAB结合矩形设计FIR滤波器(16页珍藏版)》请在人人文库网上搜索。1、MATLAB吉合矩形设计FIR滤波器郑州航空工业管理学院电子信息...
  • 函数

    千次阅读 2021-03-15 15:41:28
    什么是函数? - linmue-谭祥军的文章 - 知乎 https://zhuanlan.zhihu.com/p/24318554 本文首发于公众号《模态空间》。 似乎每次做FFT都需要加窗函数,很少有不加函数的时候。那为什么要加窗函数,加窗有什么...
  • MTM法简单地采用一个参数:时间带宽积(Time-bandwidth product)NW,这个参数用以定义计算功率谱所用的数目,为2*NW-1。NW越大,功率谱计算次数越多,时间域分辨率越高,而频率域分辨率降低,使得功率谱估计的...
  • matlab中函数的使用(一)

    千次阅读 2021-04-24 12:15:51
    快速傅里叶变换假定了时间信号是周期无限的。但在分析时,我们往往只截取其中的一部分,因此需要加窗以减小泄露。函数可以加在时域,也可以加在频域上,但在时域上加窗更为普遍。截断效应带来了泄漏,函数是为了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 782
精华内容 312
关键字:

汉宁时间窗