吉布斯现象(英语:Gibbs phenomenon),由Henry Wilbraham于1848年最先提出[1],并由约西亚·吉布斯于1899年证明[2]。在工程应用时常用有限正弦项正弦波叠加逼近原周期信号。所用的谐波次数N的大小决定逼近原波形的程度,N增加,逼近的精度不断改善。但是由于对于具有不连续点的周期信号会发生一种现象:当选取的傅里叶级数的项数N增加时,合成的波形虽然更逼近原函数,但在不连续点附近会出现一个固定高度的过冲,N越大,过冲的最大值越靠近不连续点,但其峰值并不下降,而是大约等于原函数在不连续点处跳变值的9%,且在不连续点两侧呈现衰减振荡的形式

图像

维基百科

在做信号处理时,经常涉及到“泄漏”。那泄漏是什么,是什么原因造成了泄漏呢?在这将告诉您答案。

1.信号截断

一次FFT分析截取1帧长度的时域信号,这1帧的长度总是有限的,因为FFT分析一次只能分析有限长度的时域信号。而实际采集的时域信号总时间很长,因此,需要将采样时间很长的时域信号截断成一帧一帧长度的数据块。这个截取过程叫做信号截断

假设有一段10s的时域信号,取1帧的长度T=1s,无重叠,则该信号将被截断为10帧,如下图所示。按此规律进行FFT计算,将得到10个瞬时频谱,如果将这些瞬时频谱进行平均,那么平均次数为10次,最终的FFT分析结果为这10个瞬时频谱的平均结果。

信号截断分为周期截断和非周期截断。周期截断是指截断后的信号为周期信号,而非周期截断是指截断后的信号不再是周期信号,哪怕原始信号本身是周期信号。

2. 周期截断

我们知道周期信号最明显的特征是信号的起始和结束时刻的幅值相等,哪怕是一个周期。在这假设采样时间很长的信号为单频正弦波(周期信号),若1帧的时间长度等于这个正弦波周期的整数倍,那么,截断后的信号仍为周期信号。取1帧的时间长度T等于原始信号的1个周期长度,那么截断后的信号仍为周期信号,如下图所示。

将这个截断后的信号再重构,可以得到原始的正弦波,如下图所示。

对截断的这一帧信号做FFT分析,得到它的频谱如下图所示。从图中可以看出,得到的频率成分为原始信号的真实频率,并且幅值与原始信号的幅值相等(100%幅值)。

假设原始信号的频率为f Hz,则周期为1/f s。因为截取的时间长度T为信号周期的整数倍(假设为k倍),即

T=k/f

而频率分辨率为1/T,即

f=1/Tf/k

因而,信号的频率成分

f =k*f

即信号的频率成分为频率分辨率∆f的整数倍,也就是说频谱图中有一条谱线与信号的频率成分相同,这也就是所谓的信号“压谱线”。因而,对这个周期信号进行FFT分析时,信号的频谱样子与实际情况完全相同,与我们预期的样子相同。

3. 周期截断

倘若信号截断的长度不为原始正弦信号周期的整数倍,那么,截断后的信号则不为周期信号,哪怕原始信号是周期信号。并且现实世界中,我们进行FFT分析时,绝大多数情况都是非周期截断。

对之前的正弦信号进行非周期截断,如下图所示。截断后的信号起始时刻和结束时刻的幅值明显不等,将这个信号再进行重构,在连接处信号的幅值不连续,出现跳跃,如图中黑色圆圈区域所示。

对截断后的信号做FFT分析,得到的频谱如下图所示。这时的FFT频谱已远远不是我们预期的那种单条离散谱线了(周期截取的频谱样子)。对比周期截断的频谱,可以看出,此时频谱在整个频带上发生“拖尾”现象。峰值处的频率与原始信号的频率相近,但并不相等。另一方面,峰值处的幅值已不再等于原始信号的幅值,为原始信号幅值的64%(矩形窗的影响)。而幅值的其他部分(36%幅值)则分布在整个频带的其他谱线上。

由于非周期截断的时间长度不等于信号周期的整数倍,因此,信号的频率成分f≠k*f,也就是说,在频谱图中,没有一条谱线与信号的频率成分完全相同。

4. FFT变换

在作进一步说明之前,让我们回顾一下FFT变换。FFT变换要求为:信号要么从-∞到+∞,要么为周期信号。现实世界中,不可能采集时间从-∞到+∞的信号,只能是有限时间长度的信号。

回想以前学过有关傅立叶级数的一些基本知识。对于一条单频正弦波,我们知道用傅立叶级数描述该信号是非常容易的。通常用傅立叶级数中的一项就可以描述了,形如Asinωt。但是对于一些信号,比如矩形脉冲信号,其傅立叶级数展开会是什么样的呢?我想你应该记得傅立叶级数展开项是一系列不同频率和不同幅值的正弦信号之和。对于矩阵脉冲,傅立叶级数要包含很多项,才能近似这个信号,这是因为矩形脉冲信号不连续,不像平滑的正弦波。

5. 泄漏

由于信号的非周期截断,导致频谱在整个频带内发生了拖尾现象。这是非常严重的误差,称为泄漏,是数字信号处理所遭遇的最严重误差。但是为什么会出现这种误差呢?原始实际信号为一条单频正弦波,它的频谱怎么会变得如此失真?这个问题很容易解释。这是因为截断后的信号不再是周期信号。

对比一下正确的频谱与发生泄漏的频谱,如下图所示,可以看出,泄漏后的频谱的幅值更小,频谱拖尾更严重。当截断后的信号不为周期信号时,就会发生泄漏。而现实世界中,在做FFT分析时,很难保证截断的信号为周期信号,因此,泄漏不可避免。

现在返回到非周期截断的正弦波,可以看出在截断时间长度内没有捕捉到整数倍个周期正弦波,导致波形发生了失真,似乎在信号周期的末端波形出现了不连续。这就解释了为什么FFT会在整个频带上发生拖尾现象了。本质上,这需要多个傅立叶展开项(多条谱线)去近似这个明显不连续的信号,因此,频谱出现了拖尾现象。

6. 窗函数

为了将这个泄漏误差减小到最小程度(注意我说是的减少,而不是消除),我们需要使用加权函数,也叫。加窗主要是为了使信号似乎更好地满足FFT处理的周期性要求,减少泄漏。(关于窗函数,完全可以写一篇长长的文章了,在这只简单介绍)

如下图所示,若周期截断,则FFT频谱为单一谱线。若为非周期截断,则频谱出现拖尾,如图中部所示,可以看出泄漏很严重。为了减少泄漏,给信号施加一个窗函数(如图中红色曲线所示),原始截断后的信号与这个窗函数相乘之后得到的信号为右侧上面的信号。可以看出,此时,信号的起始时刻和结束时刻幅值都为0,也就是说在这个时间长度内,信号为周期信号,但是只有一个周期。对这个信号做FFT分析,得到的频谱如右侧下边所示。相比较之前未加窗的频谱,可以看出,泄漏已明显改善,但并没有完全消除泄漏。因此,窗函数只能减少泄漏,不能消除泄漏

希望通过以上的解释说明,使您明白了什么是泄漏。

更多精彩内容敬请关注公众号:模态空间

频谱泄露和吉布斯现象相关推荐

  1. FFT频谱泄露和加窗 (一)

    我们分析的信号,如果只含整数次谐波的话,用FFT分析信号的频谱和相位是非常准确的,如果信号含有确定的间谐波,比如信号含有60HZ和65HZ的频率,那我们也可以准确的分析出信号的频谱和相位,我们只要用矩 ...

  2. 基于Python的频谱分析(二)——频谱泄露

    1.频谱泄露   对于频率为fs的正弦序列,它的频谱应该只是在fs处有离散谱.但是,在利用DFT求它的频谱时,对时域做了截断,结果使信号的频谱不只是在fs处有离散谱,而是在以fs为中心的频带范围内都有 ...

  3. 关于MATLAB FFT频谱泄露和加窗

    我们分析的信号,如果只含整数次谐波的话,用FFT分析信号的频谱和相位是非常准确的,如果信号含有确定的间谐波,比如信号含有60HZ和65HZ的频率,那我们也可以准确的分析出信号的频谱和相位,我们只要用矩 ...

  4. 频谱泄露 振动 matlab,关于MATLAB FFT频谱泄露和加窗

    我们分析的信号,如果只含整数次谐波的话,用FFT分析信号的频谱和相位是非常准确的,如果信号含有确定的间谐波,比如信号含有60HZ和65HZ的频率,那我们也可以准确的分析出信号的频谱和相位,我们只要用矩 ...

  5. 【DFT leakage 频谱泄露现象】

    前言 最近在做跟一维信号相关的项目,所以复习一下DFT中leakage的问题. 文章目录 1. No leakage 2. Leakage 1. No leakage 采样点经过的时长必须是被采样信号 ...

  6. FFT频谱泄露和加窗 (二)

    学习信号时域和频域.快速傅立叶变换(FFT).加窗,以及如何通过这些操作来加深对信号的认识. 1. 理解时域.频域.FFT 傅立叶变换有助于理解常见的信号,以及如何辨别信号中的错误. 尽管傅立叶变换是 ...

  7. matlab画矩形窗的频域图,矩形窗的频谱泄露

    数字信号处理中,会考虑截断数据时频谱泄露和加窗,对这个东西学过好几次了,总是弄得不清不楚,这次又讲,争取搞清楚.留了到题目,如下 信号y=2*cos(20*pi*t)+5*cos(100*pi*t), ...

  8. 如何理解FFT中的频谱泄露效应?

    快速傅里叶变换(FFT)实现了时域到频域的转换,是信号分析中最常用的基本功能之一.FFT变换时,总是从离散数据中选取一部分处理,将其称为一帧数据.而且FFT是在一定假设下完成的,即认为被处理的信号是周 ...

  9. FFT频谱分析(补零、频谱泄露、栅栏效应、加窗、细化、频谱混叠、插值),Matlab、C语言代码

    文章目录 引言 Matlab FFT函数 频谱混叠 栅栏效应 细化技术 什么是细化技术? 细化FFT技术的应用: Zoom-FFT算法介绍及MATLAB实现 Zoom-FFT根本没有实现"细 ...

  10. 有关FFT频谱泄露与整周期采样问题v1.0(待修)

    Title:有关FFT频谱泄露与整周期采样问题的总结整理内容 Date:2022.6.21 //内容部分为从网上摘抄整理,未含有严谨的数学证明,较为易懂.   在实际的数字信号分析中,我们处理的数据都 ...

最新文章

  1. hal库选择滴答时钟函数_STM32入门 : HAL库、标准外设库、LL库
  2. Verilog功能模块——串行数据转并行数据
  3. VTK:可视化之FlatShading
  4. access统计没有选课的人数_当代大学生发愁求职就业,更发愁“选课”,自主选课变成了负担...
  5. 前端工程师和设计师必读文章推荐【系列三十六】
  6. android 时间格式 各种转换
  7. java+lua互相调用_Lua学习 2) —— Android与Lua互调
  8. 基本完成的重力空间的对任意形状的碰撞子系统
  9. for 循环中实现多个点击事件
  10. 拿了工资就要干活,不干活不是成了骗钱?
  11. nova.api.openstack.auth解析(ocata版本)
  12. 局域网查询在线计算机ip地址,教你利用局域网快速查询电脑IP地址的详细步骤...
  13. MATLAB——DEMATEL代码(转载)
  14. 算法竞赛入门经典 排列
  15. 由膳食纤维选择性促进的肠道细菌缓解二型糖尿病
  16. 程序语言翻译: 2.1在以阶段划分的编译器中,贯穿于编译器工作始终的是( )。2.2 对高级语言程序进行翻译时,源程序中的变量不可能映射到( )
  17. 易捷行云EasyStack与火星高科完成产品互认证,保护云上数据
  18. 计算机中正斜杠/与反斜杠\的区别
  19. 传说中最贵的跑车: 布加迪威龙
  20. 微型计算机联想c325,寓教于乐一体机 联想IdeaCentre B325评测

热门文章

  1. Linux移植libmodbus
  2. 机器人学——3.2-正运动学
  3. 【备忘】老男孩IT教育_徐培成_大数据
  4. 射极跟随器实验报告数据处理_射极跟随器实验报告 -
  5. CS 61A FALL 2020 Project-cats
  6. MySQL5.7导出数据表
  7. 最近京东抢茅台的很火啊,但是必须要京东plus会员。天猫超市抢茅台插件来咯
  8. Linux的SSH安装与配置OpenSSH
  9. Java String 常量池
  10. 弘辽科技:拼多多运营做好竞品分析。