精华内容
下载资源
问答
  • 汉明窗matlab
    2021-04-20 00:42:39

    笔者学识有限。 本博客旨在对mitre_sfr核心代码进行简单注解, 详细内容读者仁者见仁智者见智。

    SFR算法对ESF曲线进行差分得到LSF;

    给LSF加上汉明窗, 降低干扰;

    对加窗后的LSF曲线进行DFT, 得到SFR。

    /*****************************************************************************/

    /* This has been modified from Annex A, to more closely match Annex D and

    reduce finite difference errors. Now allows either [-1 1] derivative

    (when separation = 0) or [-1/2 0 1/2] derivative (when separation=1)

    Inputs: len length of ESF array

    AveEdge array of ESF values

    separation type of derivative

    0 = [-1 1]

    1 = [-1/2 0 1/2]

    Outputs: AveTmp array of original ESF values

    AveEdge array of derivative (LSF) values

    centroid centroid of the derivative

    */

    // 计算ESF的差分图像LSF, 并计算LSF的质心

    void calculate_derivative(unsigned int len, double *AveTmp, double *AveEdge,

    double *centroid,int separation)

    {

    unsigned long i;

    double dt, dt1;

    dt = 0.0;

    dt1 = 0.0;

    for (i=0; i< len; i++)

    AveTmp[i] = AveEdge[i];

    for (i=1; i< len-separation; i++) {

    /* Not wasting time with division by 2 since constant factors don't

    change SFR computation */

    AveEdge[i] = (AveTmp[i+separation]-AveTmp[i-1]);

    if (separation == 1)

    AveEdge[i] /= 2.0;

    dt += AveEdge[i] * (double)i;

    dt1 += AveEdge[i];

    }

    *centroid = dt/dt1;

    AveEdge[0] = AveEdge[1];

    if (separation == 1) AveEdge[len-1] = AveEdge[len-2];

    }

    /*****************************************************************************/

    void apply_hamming_window( unsigned short alpha,

    unsigned int oldlen,

    unsigned short newxwidth,

    double *AveEdge, long *pcnt2)

    {

    long i,j,k, begin, end, edge_offset;

    double sfrc;

    /* Shift the AvgEdge[i] vector to centre the lsf in the transform window */

    // 将LSF的最大值移到中心位置, 两边由于移动造成的空位由0补齐

    edge_offset = (*pcnt2) - (oldlen/2);

    if (edge_offset != 0) {

    if (edge_offset < 0 ) {

    for (i=oldlen-1; i > -edge_offset-1; i--)

    AveEdge[i] = (AveEdge[i+edge_offset]);

    for (i=0; i < -edge_offset; i++)

    AveEdge[i] = 0.00; /* last operation */

    } else {

    for (i=0; i < oldlen-edge_offset; i++)

    AveEdge[i] = (AveEdge[i+edge_offset]);

    for (i=oldlen-edge_offset; i < oldlen; i++)

    AveEdge[i] = 0.00;

    }

    }

    /* Multiply the LSF data by a Hamming window of width NEWXWIDTH*alpha */

    // 在当前上下文中, 下面这段代码应该不会起任何作用, 不知道为什么会有这么复杂而冗余的逻辑

    begin = (oldlen/2)-(newxwidth*alpha/2);

    if (begin < 0) begin = 0;

    end = (oldlen/2)+(newxwidth*alpha/2);

    if (end > oldlen ) end = oldlen;

    for (i=0; i< begin; i++)

    AveEdge[i] = 0.0;

    for (i=end; i< oldlen; i++)

    AveEdge[i] = 0.0;

    // 给begin和end之间的数据加上汉明窗

    // 汉明窗 W(n,α ) = (1 -α ) - α cos(2*PI*n/(N-1)) ,(0≤n≤N-1)

    // 一般情况下,α取0.46

    // 下面计算方法等于窗发生了平移(故符号发生了变化), 结果是一样的

    for (i=begin,j = -newxwidth*alpha/2; i < end; i++,j++) {

    sfrc = 0.54 + 0.46*cos( (M_PI*(double)j)/(newxwidth*alpha/2) );

    AveEdge[i] = (AveEdge[i])*sfrc;

    }

    // 将有效数据平移到起始位置

    // 在当前上下文中, 下面这段代码应该不会起任何作用, 不知道为什么会有这么复杂而冗余的逻辑

    if (begin != 0) /* Shift LSF to begin at index 0 (rather than begin) */

    for (k=0, i=begin; k

    /*****************************************************************************/

    /* This is the DFT magnitude code */

    unsigned short ftwos(long number, double dx, double *lsf,

    long ns, double ds, double *sfr)

    {

    double a, b, twopi, g;

    long i,j;

    // n-1 k

    // DFT ==> X[k] = Σ x[n]e^(-j2π - n)

    // n=0 N

    twopi = 2.0 * M_PI;

    for (j = 0; j < ns; j++){

    g = twopi * dx * ds * (double)j;

    for (i = 0, a = 0, b = 0; i < number; i++) {

    a += lsf[i] * cos(g * (double)(i));

    b += lsf[i] * sin(g * (double)(i));

    }

    sfr[j] = sqrt(a * a + b * b);

    }

    return 0;

    }

    更多相关内容
  • 利用matlab工具箱函数,分别画出长度为15的矩形窗、汉宁窗、汉明窗和布莱克曼窗的幅频(dB)特性曲线,观察它们的主要参数(主瓣宽度、过渡带宽度、旁瓣峰值幅度)的差别。
  • 基于MATLAB的滤波器设计,能对所给内容进行矩形窗,汉明窗等加窗滤波处理。
  • 汉明窗MATLAB设计

    2011-01-08 15:57:58
    MATLAB设计
  • 窗函数(三角窗,汉明窗,汉宁窗,矩形窗)的实现
  • %使用窗函数设计低通滤波器 %经过计算N=40使用汉宁窗时有最小的长度 %author clc; clear all; N=40; wc=0.5; w=hanning(N+1; b = fir1(N,0.5,w; [h,omega] = freqz(b,1; plot(omega/pi,20*log10(abs(h;...
  • 汉明窗、矩形窗、三角窗、汉宁窗等简单的仿真和各类窗函数的性能比较
  • 这个简单的脚本计算汉明窗的幅度校正。
  • 时域窗函数

    2021-04-24 10:39:54
    时域窗函数数字信号处理领域,“窗”是用处广泛意义重大的一个数学模型。我觉得很有必要来探究一下它的本质,所以在这篇文章里先给出常见的几种时域窗函数的数学模型,我将在后面的文章里陆续讲出窗的用途。...

    时域窗函数

    数字信号处理领域,“窗”是用处广泛意义重大的一个数学模型。我觉得很有必要来探究一下它的本质,所以在这篇文章里先给出常见的几种时域窗函数的数学模型,我将在后面的文章里陆续讲出窗的用途。

    本文将陆续介绍如下几个窗,他们分别是。矩形窗,三角窗,汉宁窗,哈明窗,布莱克曼窗,凯塞窗。

    一,矩形窗

    时域表达式和频域表达式如下:

    a4c26d1e5885305701be709a3d33442f.png

    强调一点,千万不要纠结于这些表达式,给出表达式的目的是为了存个档方便日后查阅,切不可沉迷于茫茫多的表达式,这个矩形窗表达式算是比较简单的,后面一些牛逼窗口的表达式将会非常复杂。研究窗口的重点在于看他们频域的差别,更确切的说很多时候我们仅仅是为了看他们频率的两个指标----主瓣宽度,旁瓣衰减。

    矩形窗的时域波形图和频谱图(N=50):

    a4c26d1e5885305701be709a3d33442f.png实际测得矩形窗两个关键参数值----主瓣宽度为4pi/N,旁瓣衰减为-13dB。

    二,三角窗

    三角窗时域表达式和频域表达式如下:

    a4c26d1e5885305701be709a3d33442f.png

    注:式中WR(w)为矩形窗频谱,后文依旧引用,不再赘述。

    三角窗的时域波形和频谱图(N=50):

    a4c26d1e5885305701be709a3d33442f.png

    实际测得三角窗两个关键参数值----主瓣宽度为8pi/N,旁瓣衰减为-27dB。

    三,汉宁窗(Hanning)

    汉宁窗时域表达式和频域表达式如下:

    a4c26d1e5885305701be709a3d33442f.png

    汉宁窗的时域波形和频谱图(N=50):

    a4c26d1e5885305701be709a3d33442f.png

    实际测得汉宁窗两个关键参数值----主瓣宽度为8pi/N,旁瓣衰减为-31dB。

    四,哈明窗(Hamming)

    汉宁窗时域表达式和频域表达式如下:

    a4c26d1e5885305701be709a3d33442f.png

    哈明窗的时域波形和频谱图(N=50):

    a4c26d1e5885305701be709a3d33442f.png

    实际测得哈明窗两个关键参数值----主瓣宽度为8pi/N,旁瓣衰减为-41dB。

    五,布莱克曼窗(Blackman)

    布莱克曼窗时域表达式和频域表达式如下:

    a4c26d1e5885305701be709a3d33442f.png

    布莱克曼窗的时域波形和频谱图(N=50):

    a4c26d1e5885305701be709a3d33442f.png

    实际测得哈明窗两个关键参数值----主瓣宽度为16pi/N,旁瓣衰减为-57dB。

    六,凯塞窗(Kaiser)

    凯塞窗时域表达式和频域表达式如下:

    a4c26d1e5885305701be709a3d33442f.png

    凯塞窗的时域波形和频谱图(N=50):

    a4c26d1e5885305701be709a3d33442f.png

    不得不说明这个凯塞窗是不通与上面所有窗口的,因为凯塞窗的主瓣宽度和旁瓣衰减可以依据用户自己的需要去改变beta的值去实现。

    七,总结

    为了初步认识窗,以上我给出了6种常见的窗的时域频域表达式及波形。前已述及,很多时候我们只需要查询频域波形两个关键参数而已,即主瓣宽度,旁瓣衰减。下面,我将这些参数做成一个表格,这样方便以后查阅需要。

    a4c26d1e5885305701be709a3d33442f.png

    a4c26d1e5885305701be709a3d33442f.png

    展开全文
  • Matlab中加汉明窗 ahmming 作用

    千次阅读 2021-04-18 05:05:50
    转自:http://www.cnblogs.com/lxy2017/p/4049124.html1.什么是汉明窗?语音信号一般在10ms到30ms之间,我们可以把它看成是平稳的。为了处理语音信号,我们要对语音信号进行加窗,也就是一次仅处理窗中的数据。因为...

    9a2a0ebc865f8658577bc92fd40c77c7.png

    转自:http://www.cnblogs.com/lxy2017/p/4049124.html

    1.什么是汉明窗?

    语音信号一般在10ms到30ms之间,我们可以把它看成是平稳的。为了处理语音信号,我们要对语音信号进行加窗,也就是一次仅处理窗中的数据。因为实际的语音信号是很长的,我们不能也不必对非常长的数据进行一次性处理。明智的解决办法就是每次取一段数据,进行分析,然后再取下一段数据,再进行分析。

    怎么仅取一段数据呢?一种方式就是构造一个函数。这个函数在某一区间有非零值,而在其余区间皆为0.汉明窗就是这样的一种函数。它主要部分的形状像sin(x)在0到pi区间的形状,而其余部分都是0.这样的函数乘上其他任何一个函数f,f只有一部分有非零值。

    为什么汉明窗这样取呢?因为之后我们会对汉明窗中的数据进行FFT,它假设一个窗内的信号是代表一个周期的信号。(也就是说窗的左端和右端应该大致能连在一起)而通常一小段音频数据没有明显的周期性,加上汉明窗后,数据形状就有点周期的感觉了。

    因为加上汉明窗,只有中间的数据体现出来了,两边的数据信息丢失了,所以等会移窗的时候,只会移1/3或1/2窗,这样被前一帧或二帧丢失的数据又重新得到了体现。

    简单的说汉明窗就是个函数,它的形状像窗,所以类似的函数都叫做窗函数。

    2.加Hanmming窗的作用

    现在在看G.723.1,对语音编码刚入门,

    发现在对信号进行LPC分析前,对信号乘以一个Hamming 窗,

    典型的窗口大小是25ms,帧移是10ms。汉明窗函数为

    W(n,α ) = (1 -α ) - α cos(2*PI*n/(N-1)),0≦n≦N-1

    一般情况下,α取0.46 。

    转自:https://ww2.mathworks.cn/help/signal/ref/hamming.html

    用法:

    hamming

    Hamming window

    collapse all in page

    Syntax

    w = hamming(L)

    w = hamming(L,sflag)

    Description

    w = hamming(L)                returns an L-point symmetric Hamming window.

    w = hamming(L,sflag)                returns a Hamming window using the window sampling specified by                     sflag.

    Examples

    Hamming Window

    Create a 64-point Hamming window. Display the result using wvtool.

    L = 64;

    wvtool(hamming(L))

    30a2bbf2b78578b55880a23162d000e0.png

    Input Arguments

    L — Window length positive integer

    Window length, specified as a positive integer.

    Data Types:single | double

    sflag — Window sampling 'symmetric' (default) | 'periodic'

    Window sampling, specified as one of the following:

    'symmetric' — Use this option when using                                    windows for filter design.

    'periodic' — This option is useful for                                    spectral analysis because it enables a windowed signal to have                                    the perfect periodic extension implicit in the discrete Fourier                                    transform. When 'periodic' is specified,                                         hamming computes a window of length                                         L + 1 and returns the first                                         L points.

    Output Arguments

    w — Hamming window column vector

    Hamming window, returned as a column vector.

    Algorithms

    The following equation generates the coefficients of a Hamming window:

    w(n)=0.54−0.46cos(2πnN),0≤n≤N.

    The window length L = N + 1.

    References

    [1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck.                 Discrete-Time Signal Processing. Upper Saddle River, NJ:            Prentice Hall, 1999.

    Extended Capabilities

    C/C++ Code Generation Generate C and C++ code using MATLAB® Coder™.

    Introduced before R2006a

    展开全文
  • MATLAB窗函数设计_;汉明窗_matlab_主瓣_主瓣宽度_源码
  • matlab下窗函数调用源代码汉宁窗,汉明窗,凯撒窗,矩形窗
  • 数字信号处理中DSP中的matlab编程,有关汉明窗函数,汉宁窗以及凯撒窗的编写。
  • 谱分析中窗的选取

    2021-04-20 00:42:32
    Matlab中有的窗函数 @bartlett - Bartlett window. @barthannwin - Modified Bartlett-Hanning window. @blackman - Blackman window. @blackmanharris - Minimum 4-term Blackman-Harris window. @bohmanwin - ...

    信号截断及能量泄漏效应

    数字信号处理的主要数学工具是傅里叶变换,而傅里叶变换是研究整个时间域和频率域的关系。然而,当运用计算机实现工程测试信号处理时,不可能对无限长的信号进行测量和运算,而是取其有限的时间片段进行分析。取用有限个数据,就是将信号进行加窗函数操作,也即信号数据截断的过程。做法是从信号中截取一个时间片段,然后用观察的信号时间片段进行周期延拓处理,得到虚拟的无限长的信号,然后就可以对信号进行傅里叶变换、相关分析等数学处理。周期延拓后的信号与真实信号是不同的,下面从数学的角度来看这种处理带来的误差情况。设有余弦信号x(t)在时域分布为无限长(- ∞, ∞),将截断信号的谱XT(ω)与原始信号的谱X(ω)相比。可以发现截断后数据的谱线已与原始谱线不同,是两段振荡的连续谱。这表明原来的信号被截断以后,其频谱发生了畸变,原来集中在f0处的能量被分散到两个较宽的频带中去了,这种现象称之为频谱能量泄漏。

    信号截断以后产生的能量泄漏现象是必然的,因为窗函数w(t)是一个频带无限的函数,所以即使原信号x(t)是限带宽信号,而在截断以后也必然成为无限带宽的函数,即信号在频域的能量与分布被扩展了。又从采样定理可知,无论采样频率多高,只要信号一经截断,就不可避免地引起混叠,因此信号截断必然导致一些误差,这是信号分析中不容忽视的问题。

    当进行离散傅立叶变换时,时域中的截断是必需的,因此泄漏效应也是离散傅立叶变换所固有的,必须进行抑制。可以通过窗函数加权抑制 DFT 的等效滤波器的振幅特性的副瓣,或用窗函数加权使有限长度的输入信号周期延拓后在边界上尽量减少不连续程度的方法实现。

    如果增大截断长度T,即矩形窗口加宽,则窗谱W(ω)将被压缩变窄(π/T减小)。虽然理论上讲,其频谱范围仍为无限宽,但实际上中心频率以外的频率分量衰减较快,因而泄漏误差将减小。当窗口宽度T趋于无穷大时,则谱窗W(ω)将变为δ(ω)函数,而δ(ω)与X(ω)的卷积仍为H(ω),这说明,如果窗口无限宽,即不截断,就不存在泄漏误差。为了减少频谱能量泄漏,可采用不同的截取函数对信号进行截断,截断函数称为窗函数,简称为窗。泄漏与窗函数频谱的两侧旁瓣有关,如果两侧p旁瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱,为此,在时间域中可采用不同的窗函数来截断信号。

    36cf0ab26715?from=message&isappinstalled=0

    窗函数基本概念.png

    常用窗函数

    实际应用的窗函数,可分为以下主要类型:

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

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

    指数窗。:采用指数时间函数,如e-st形式,例如高斯窗等。

    Why there are so many different window functions is because each of these have very different spectral properties and have different main lobe widths and side lobe amplitudes. There is no such thing as a free lunch: if you want good frequency resolution (main lobe is thin), your side lobes become larger and vice versa. You can't have both. Often, the choice of window function is dependent on the specific needs and always boils down to making a compromise. **This is a very good article that talks about using window functions (http://www.utdallas.edu/~cpb021000/EE 4361/Great DSP Papers/Harris on Windows.pdf ).

    几种常用窗函数的性质和特点

    矩形窗 (w = boxcar(n), 等价于w =ones(n, 1))

    矩形窗使用最多,习惯上不加窗就是使信号通过了矩形窗。这种窗的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。

    36cf0ab26715?from=message&isappinstalled=0

    矩形窗及其频谱特性

    三角窗 (w = triang(n))

    三角窗亦称费杰(Fejer)窗,是幂窗的一次方形式,三角窗与矩形窗比较,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣。

    36cf0ab26715?from=message&isappinstalled=0

    三角窗及其频谱特性

    广义余弦窗

    汉宁窗、海明窗和布莱克曼窗,都可以用一种通用的形式表示,这就是广义余弦窗。这些窗都是广义余弦窗的特例,汉宁窗又被称为余弦平方窗或升余弦窗,海明窗又被称为改进的升余弦窗,而布莱克曼窗又被称为二阶升余弦窗。采用这些窗可以有效地降低旁瓣的高度,但是同时会增加主瓣的宽度。

    这些窗都是频率为 0、2π/(N–1)和 4π/(N–1)的余弦曲线的合成,其中 为窗的长度。可以采用下面的命令来生成这些窗:

    ind = (0:N-1)*2*pi/(N-1)

    window = A-B*cos(ind)+C*cos(2*ind)

    其中,A、B、C 适用于自己定义的常数。根据它们取值的不同,可以形成不同的窗函数:

    ● 布莱克曼窗 Blackman A=0.5,B=0.5,C=0.08;

    ● 汉宁窗 Hanning A=0.5,B=0.5,C=0;

    ● 海明窗 Hamming A=0.54,B=0.54,C=0;

    汉宁窗

    汉宁(Hanning)窗又称升余弦窗,汉宁窗可以看作是3个矩形时间窗的频谱之和,它可以使用旁瓣互相抵消,消去高频干扰和漏能。 汉宁窗与矩形窗的谱图对比,可以看出,汉宁窗主瓣加宽(宽度为8pi/N)并降低,旁瓣则显著减小。第一个旁瓣衰减一32dB,而矩形窗第一个旁瓣衰减-13dB。此外,汉宁窗的旁瓣衰减速度也较快,约为60dB/10oct,而矩形窗为20dB/10oct。由以上比较可知,从减小泄漏观点出发,汉宁窗优于矩形窗。但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。

    36cf0ab26715?from=message&isappinstalled=0

    汉宁窗及其频谱特性

    海明窗

    海明(Hamming)窗也是余弦窗的一种,又称改进的升余弦窗,海明窗与汉宁窗都是余弦窗,只是加权系数不同。海明窗加权的系数能使旁瓣达到更小。分析表明,海明窗和汉宁窗函数的主瓣宽度是一样大,第一旁瓣衰减为-41dB。海明窗的频谱也是由 3个矩形时窗的频谱合成,但其旁瓣衰减速度为20dB/10oct,这比汉宁窗衰减速度慢。海明窗与汉宁窗都是很有用的窗函数。

    36cf0ab26715?from=message&isappinstalled=0

    海明窗及其频谱特性

    其它窗函数

    高斯窗

    是一种指数窗,高斯窗谱无负的旁瓣,第一旁瓣衰减达一55dB。高斯窗谱的主瓣较宽,故而频率分辨力低。高斯窗函数常被用来截断一些非周期信号,如指数衰减信号等。

    除了以上几种常用窗函数以外,尚有多种窗函数,如平顶窗、帕仁(Parzen)窗、布拉克曼(Blackman)窗、凯塞(kaiser)窗等。

    窗函数的选择

    如果在测试中可以保证不会有泄露的发生,则不需要用任何的窗函数。但是如同刚刚讨论的那样,这种情况只是发生在时间足够长的瞬态捕捉和一帧数据中正好包含信号整周期的情况。

    对于窗函数的选择,应考虑被分析信号的性质与处理要求。

    要求

    选择

    备注

    仅要求精确读出主瓣频率,而不考虑幅值精度

    选用主瓣宽度比较窄而便于分辨的矩形窗

    例如测量物体的自振频率等

    如果分析窄带信号,且有较强的干扰噪声

    选用旁瓣幅度小的窗函数

    如汉宁窗、三角窗等

    对于随时间按指数衰减的函数

    可采用指数窗来提高信噪比

    如高斯窗

    如果测试信号有多个频率分量,频谱表现的十分复杂,且测试的目的更多关注频率点而非能量的大小。在这种情况下,需要选择一个主瓣够窄的窗函数,汉宁窗是一个很好的选择。

    如果测试的目的更多的关注某周期信号频率点的能量值,比如,更关心其EUpeak,EUpeak-peak,EUrms或者EUrms2,那么其幅度的准确性则更加的重要,可以选择一个主畔稍宽的窗,flattop窗在这样的情况下经常被使用。

    对冲击实验的数据进行分析时,因为在数据帧开始段的一些重要信息会被一般的窗函数所衰减,因此可以使用force/exponential窗。Force窗也移去了数据帧末端的噪声,对激励信号有用。而exponential窗则确保响应信号在末端的振动衰减为零值。激励信号加力窗是为了减小干扰,而响应信号加指数窗是为了减小泄露。

    如果被测信号是随机或者未知的,选择汉宁窗。

    Matlab中有的窗函数

    @bartlett - Bartlett window.

    @barthannwin - Modified Bartlett-Hanning window.

    @blackman - Blackman window.

    @blackmanharris - Minimum 4-term Blackman-Harris window.

    @bohmanwin - Bohman window.

    @chebwin - Chebyshev window.

    @flattopwin - Flat Top window.

    @gausswin - Gaussian window.

    @hamming - Hamming window.

    @hann - Hann window.

    @kaiser - Kaiser window.

    @nuttallwin - Nuttall defined minimum 4-term Blackman-Harris window.

    @parzenwin - Parzen (de la Valle-Poussin) window.

    @rectwin - Rectangular window.

    @tukeywin - Tukey window.

    @triang - Triangular window.

    加窗的overlap(Noverlap)

    when you use a window function, you have less information at the tapered ends. So, one way to fix that, is to use sliding windows with an overlap as shown below. The idea is that when put together, they approximate the original sequence as best as possible (i.e., the lower figure should be as close to a flat value of 1 as possible). Typical overlap values vary between 33% to 50%, depending on the application.

    Since the window function is close to zero at its edges, the data points at the edges do not contribute as much as points in the middle of a window. With half-overlapping windows this effect is much smaller. Making the overlap bigger than 50% is useless, you will get more averages, but since you will use the same points many times, this does not add any extra information. Just stick to 50%.

    36cf0ab26715?from=message&isappinstalled=0

    Overlap schematic

    You get a cleaner estimate if you use overlap. That is to say, the larger the overlap, the more blurred the spectrogram will look because the segments will be overlapped to a greater degree. The smaller the overlap the more "blocky" the spectrogram will appear because each Fourier transform uses less and less common waveform samples.

    You can also observe the trade-off between main lobe width and side lobe amplitude that I mentioned earlier. Hanning has a thinner main lobe (prominent line along the skew diagonal), resulting in better frequency resolution, but has leaky sidelobes, seen by the bright colors outside. Blackwell-Harris, on the other hand, has a fatter main lobe (thicker diagonal line), but less spectral leakage, evidenced by the uniformly low (blue) outer region.

    36cf0ab26715?from=message&isappinstalled=0

    Comparision

    PS

    The non-stationarity of the signal (where statistics are a function of time, Say mean, among other statistics, is a function of time) implies that you can only assume that the statistics of the signal are constant over short periods of time. There is no way of arriving at such a period of time (for which the statistics of the signal are constant) exactly and hence it is mostly guess work and fine-tuning. Both these methods above are short-time methods of operating on signals.

    Say that your signal is non-stationary. Also assume that it is stationary only for about 10ms or so. To reliably measure statistics like PSD or energy, you need to measure these statistics 10ms at a time. The window-ing function is what you multiply the signal with to isolate that 10ms of a signal, on which you will be computing PSD etc.. So now you need to traverse the length of the signal. You need a shifting window (to window the entire signal 10ms at a time). Overlapping the windows gives you a more reliable estimate of the statistics.

    You can imagine it like this:1. Take the first 10ms of the signal.2. Window it with the windowing function.3. Compute statistic only on this 10ms portion.4. Move the window by 5ms (assume length of overlap).5. Window the signal again.

    PSS

    Usually make the length of the fft (third argument to pwelch) the same as the window length. The only case you want to have this different is when you use zero-padding, which has limited use.

    If you use it like this, there are a few rules to remember:

    The spectral resolution is given by the window length only: df = 1 / t_window.

    The length of a single window is t_window = nfft / f_sample. (nfft: Number of DFT points)

    With half-overlapping windows, the total amount of needed data is t_total = t_window * (n_average + 1) / 2

    For one-sided spectra, the number of spectral bins of the PSD is nfft / 2.

    Nyquist: f_max = f_sample / 2

    几个好的参考阅读内容

    滤波后噪声增大

    有时会出现这样的奇怪情况,目前无解

    36cf0ab26715?from=message&isappinstalled=0

    Paste_Image.png

    展开全文
  • 数字信号处理 加窗处理 MATLAB tukeywin函数,一般的矩形窗/汉明窗/余弦窗等等,均可以参考设计。 主要针对脉冲信号处理,加载各种窗函数均可以在此基础上更改,Verilog语言,注释清晰,占用资源少,可移植性强。 针对...
  • 语音信号加入高斯白噪声,利用切比雪夫Ⅱ,FIR汉明窗方式除噪 matlab
  • 汉明窗处理语声信号中的噪声,降低信号中的噪声,提高语声信号的质量
  • 资源名:MATLAB信号处理 频谱分析加汉宁窗函数 源代码.rar 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:...
  • 下面是几种窗函数归一化DTFT幅度的MATLAB程序:
  • 在进行 DFT 之前将信号乘以汉明窗的效果
  • fft 窗函数分析 matlab 文件
  • 本代码为长度为121的汉明窗Fir滤波器Matlab源代码,仅供参考。
  • 使用汉明窗对信号进行分帧,可自定义窗长及窗间重叠长度,函数输出为分割后的信号帧,作为函数直接调用结课,使用方便
  • 采用汉明窗对语音进行分帧的子程序,程序语言:matlab
  • 什么是汉明窗?加Hanmming窗的作用?下面来学习一下
  • matlab用到的汉宁窗函数,用汉明窗限制的线性系统函数
  • matlab 矩形窗汉明窗幅频特性对比

    千次阅读 2015-12-27 20:36:13
    title('汉明窗时域波形'); xlabel('样点数') ylabel('幅度'); hold on; H=fft(ham,1024); H1=H/H(1); H2=20*log10(abs(H1)); H3=2*[0:511]/1024; H5=[0:1023]/1024; subplot(2,2,4); %plot(W4,...
  • m汉宁窗hanning汉明窗hamming矩形窗-read窗宽的选择 使 能及时地跟踪语音能量的缓慢时变规律 对语音振幅在一个基音周期时间内的瞬时快变化有显著平滑作用 窗宽时间为10~20ms h(n)无限冲激响应滤波器 zero cross ...
  • MATLAB信号处理 频谱分析加汉宁窗函数 源代码.7z
  • 在该项目中,设计了一个汉明窗FIR滤波器,以消除音频信号中的有害噪声。 该代码是用Python和MATLAB编写的。 MATLAB实现 工具和技术 MATLAB-软件:它代表矩阵实验室。 编写MATLAB是为了方便访问LINPACK和EISPACK项目...

空空如也

空空如也

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

汉明窗matlab