信号截断及能量泄漏效应

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

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

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

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

窗函数基本概念.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))

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

矩形窗及其频谱特性

三角窗 (w = triang(n))

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

三角窗及其频谱特性

广义余弦窗

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

这些窗都是频率为 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。由以上比较可知,从减小泄漏观点出发,汉宁窗优于矩形窗。但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。

汉宁窗及其频谱特性

海明窗

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

海明窗及其频谱特性

其它窗函数

高斯窗

是一种指数窗,高斯窗谱无负的旁瓣,第一旁瓣衰减达一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%.

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.

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

几个好的参考阅读内容

滤波后噪声增大

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

Paste_Image.png

matlab汉明窗dft,谱分析中窗的选取相关推荐

  1. matlab的dft谱分析,数字信号处理基于matlab(用DFT作谱分析,窗函数的设计)

    数字信号处理基于matlab(用DFT作谱分析,窗函数的设计) 1实验一用DFT作谱分析X11111X212344321N108X3COSN1PI/4N208X4SINN2PI/8FIGURESUBP ...

  2. matlab的dft谱分析,[转载]Matlab中DFT在连续信号谱分析中的应用

    本来是想用Matlab做通信课的模拟调制分析的,结果弄一个时频变换就吭哧了两三天时间,把原来的老底信号系统.DSP的书又翻出来看,总算稀里糊涂画出来了..... 所谓信号的谱分析,就是时频域转换,变成 ...

  3. matlab 电动力学,MATLAB在电动力学教学中的应用研究

    2017年 第 6期 物理 通报 大学物理教 学 MATLAB在 电动力学教学 中的应 用研 究 李佳伟 王 婕 张 中月 王恒通 (陕西 师范大学物理学与信息技术学院 陕西 西安 71Ol19) ( ...

  4. matlab fft实现dft,matlab实现dft和fft

    对任意长度的序列进行傅里叶变换 DFT 与 FFT 的运算时间比较 设计要求 利用 Matlab 或者 C 语言设计 DFT 和 FFT 程序,比较两种频谱分析方法的 计算速度,并与...... DF ...

  5. 脑电功率谱分析matlab,基于matlab的功率谱分析方法研究 毕业论文.doc

    基于matlab的功率谱分析方法研究 摘 要 数字信号处理(DSP)重要的应用领域之一,是建立在周期信号和随机信号基础上的功率谱估计.在实际应用中往往不能获得具体信号的表达式,需要根据有限的数据样本来 ...

  6. MATLAB图像去噪在医学图像中的应用

    摘要:根据扫描工程图像的特点,研究了图像中噪声产生的机理和消除方法:提出了利用中值滤波法消除医学图像噪声的实用方法.使用软件工具MATLAB快速地实现了图像的中值滤波. 结果表明,利用中值滤波法消除图 ...

  7. 高阶谱分析 matlab,matlab高阶谱分析实例

    第15卷第 1993年 1期 3月铁道学报 J()IJR写入IJ()FTI万F('壬雀INARAll_WAYS(X一IFTYVol.15N0.1Mareh1993 高阶谱及其在信号处理中的应用'黄绣坤 ...

  8. matlab在输电线路故障测距中应用,Matlab在输电线路故障测距中的应用.doc

    Matlab在输电线路故障测距中的应用 毕业设计(论文) 题目 Matlab在输电线路故障测距中的应用 二级学院 电子信息与自动化学院 专 业 电气工程及其自动化 班 级 110070401 学生姓名 ...

  9. 【 MATLAB 】DFT的性质讨论(二)序列的循环移位及其 MATLAB 实现(频域方法)

    上篇博文:[ MATLAB ]DFT的性质讨论(二)序列的循环移位及其 MATLAB 实现(时域方法) 提到了对序列x(n)做循环移位后的DFT形式为: 上篇博文已经讨论过了第一种实现循环移位的方法, ...

  10. MATLAB在通信系统仿真中的注意

    原文链接:(更多文章移步链接) MATLAB在通信系统仿真中的注意 - 子木的文章 - 知乎 https://zhuanlan.zhihu.com/p/46668425 1.调用函数fourier和i ...

最新文章

  1. python自动华 (十四)
  2. 玩转Android之二维码生成与识别
  3. nexus搭建maven私服
  4. 【人物】徐小平:既然做老大,你就得让兄弟们有肉吃
  5. 2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - C. 三羊献端
  6. springboot拦截请求路径_SpringBoot整合Ant Design Pro进行部署
  7. 自行车实现无人驾驶,背后究竟有何“天机”?
  8. Power Platform之Power Automate新增RPA功能
  9. php邮件中文乱码,phpmailer 发送邮件中文乱码问题的解决方法总结
  10. python协程等待执行完成_当循环运行时,如何运行协同程序并等待同步函数的结果?...
  11. MATLAB实现一个简单的车牌识别小程序
  12. con和com开头单词规律_con和com的前缀区别。背单词时总是搞不清什么时候是con什么时候是com之后找到了不同之处,c...
  13. java作品_50幅惊艳的分形艺术作品
  14. GTK+:GTK+的简介、安装、使用方法之详细攻略
  15. 2009年1月高等教育国际金融全国统一命题考试
  16. [深度学习]动手学深度学习笔记-6
  17. int类型变量的取值范围?
  18. Event Driven Class OSAL 基于事件驱动的模拟操作系统
  19. 【Arduino笔记】超声波传感器的使用
  20. python中setup是什么意思_python中setuptools指的是什么

热门文章

  1. python usb通信测试
  2. 蛋糕店选址该注意什么,如何了解客群画像和竞品情况
  3. STM32 直流电机 转速比
  4. minist数据集的获取方法
  5. usb转rs485 linux驱动下载,USB转485万能驱动下载
  6. 淘宝帝国是如何创建的连载02
  7. 拨开字符编码的迷雾--字符编码转换
  8. obs源码分析【四】:obs录制的窗口截图与视频编码
  9. freeimage.dll
  10. HICE第四天笔记 12月8日