频谱为什么会泄漏?


频谱会泄漏?

频率的定义:物质在1s内完成周期性变化的次数叫做频率,常用f表示。

在通信与信号处理中的频谱,主要通过傅里叶级数和傅里叶变换得到。

其中满足狄里赫利条件的周期信号可以分解为若干不同频率的正弦波。这些正弦波中,频率最低的称为信号的基波,其余称为信号的谐波。以谐波的频率为横坐标,幅值(大小)为纵坐标,绘制的系列图,称为频谱。频谱能够准确反映信号的内部构造。见图1。

图1 方波信号的傅里叶级数展开

你见与不见,频谱就在那里

有一种情况,我们需要考虑。

那就是当我们用计算机处理信号之时,总会截取一段信号。

这很容易理解,因为你不能分析无限长的周期信号。即使是非周期信号,也只能截取一小段。

这还与传感器灵敏度和存储器容量有关。

那么问题就来了,我们用截取的信号去做频谱分析,那么得到的频谱是截取信号的。并不是原始信号的。

图2 实际的信号被截取一部分,这一部分信号作为频谱分析的输入

这两者频谱之前的差别,可以看做是泄漏

官方的解释是这样的:

信号为无限长序列,运算需要截取其中一部分(截断),于是需要加窗函数。加了窗函数相当于时域相乘,也相当于频域卷积,于是频谱中除了本来该有的主瓣之外,还会出现本不该有的旁瓣,这就是频谱泄露!为了减弱频谱泄漏,可以采用加权的窗函数,加权的窗函数包括平顶窗、汉宁窗、高斯窗等等。而未加权的矩形窗泄漏最为严重。

这个解释,涉及到时域、频域、窗函数、卷积、主瓣、旁瓣等抽象概念。

但是意思和我的解释一样。

图3 信号的截取过程

直观的表示

在现实中,信号是测量工具测量得到的,必然具有时间限制,超出测量间隔的信号不能被知道。

例如,如果测量一个无限长的正弦波连续序列,在某个时候,我们需要终止我们的观测来做进一步的分析。

除了其他因素外,测量系统本身的限制(例如:缓冲区大小)也对时间造成了限制。

图4为一个无限长的周期信号,现在我们选取一段信号,图4中为黑色虚线中间的信号,作为分析信号。

频谱分析通常使用快速傅里叶FFT函数,具体可以参考我之前的文章,见文章最后。

图4 截取信号的过程,往往会造成一定的“缺陷”

FFT实际上是假设信号在测量的间隔之周期重复,因此FFT假设信号是连续的(在概念上或者在存储器内,重复地并列测量信号)。

这导致假定信号中的缺陷(见图4中箭头部分),就是尖锐部分,会在时间域内不断的重复。

而这些尖锐的不连续性将在频域中扩散,导致频谱与原始的信号的频谱不一致.

这种不一致,直观的看,就像泄漏一样。

现在再举一次正弦波的例子,见图5。

图5 3Hz与2.5Hz正弦序列的频谱对比

图5为Matlab软件绘制。

左上方为正弦序列,频率为3Hz,周期为1/3秒,序列总时长为1秒钟。

在1秒钟内,正好完整的3个周期。

这个序列为单一频率3Hz,没有其他谐波频率。

对其进行FFT分析,必然在频率轴3Hz处有幅度值谱线。在0 1 2 4 5 6Hz频率处幅度值为0。

现在略微调整,序列总时长还是1秒钟,频率改为2.5Hz,周期为1/2.5=0.4秒,那么正好有2.5个周期。

这个序列为单一频率2.5Hz,是不是它的频谱线在2,5Hz处呢?

看右下图,很明显不是。

频率还是分布在0 1 2 3 4 5 6Hz这些整数倍的频率处,却都有一定的幅度值了。

如果把2.5Hz的正弦序列展开,可以看到更清楚,如图6所示。

图6 2.5Hz截取信号的周期延拓

图6中已经不是一个连续的正弦序列了,而是在1s、2s、…等整数秒处都会有不连续。

这些不连续隐藏着其他频率,就会带入到频域中去。

和抽样点N数有关?

考虑频率f_x=10Hz的纯正弦信号,并在计算机内存中表示,该信号被观察1秒,采样频率f_s=100Hz。

现在,缓冲器中将有100个样本,缓冲器包含波形周期的整数倍,在这种情况下是10个周期。

用n点DFT对信号样本进行了分析。

这里考虑了两种情况进行研究:

  1. FFT大小n与信号样本的长度相同,即n=100;
  2. FFT大小设置为2的下一次幂,该次幂符合信号样本,即n=128;

结果绘制如下:

图7 正弦序列在不同N下的频谱图

为什么频谱在n=100时和n=128时,在10Hz附近会有一个明显的尖峰。

这是由于不同的频率分辨率——分辨不同、相邻频率能力的度量。

对于情况1,频率分辨率为△f=f_s/n =100/10=1Hz。这意味着频率间隔1赫兹,所以比较在整数10Hz处有峰值。

对于情况2,频率分辨率为△f=f_s/128=100/128=0.7813Hz。在这种频率分辨率下,频率图7的x轴不能具有10Hz的精确值。

相反,最近的相邻频率间隔分别为9.375Hz和10.1563Hz。

因此,频谱不能表示10Hz处的值,信号的能量被泄漏到相邻的频率点处,导致频谱泄漏。

理论分析

图8 DFS/DFT的示意图

要想理解DFT或者FFT,图8是我每次必放的图形。

这幅图就是离散傅里叶级数、离散傅里叶变换的形象展示。

时域、频域都是离散的,

时域的周期为T1,对应频域的△f为图中的f1,△f = f1=1/T1;

时域的采样周期为Ts,对应频域的周期为fs=1/Ts;

且采样频率fs/f1=fs/△f=N,N为主值区间的点数,就是常说的多少多少点FFT。

fs、△f、N这三者的取值,会影响频谱的形状与是否泄漏。

图9 为频谱泄漏的示意图。

图9 频谱泄漏示意图

参考文献

[1]为了便于计算机处理,离散傅里叶变换DFT就是这样被定义出来

[2]傅里叶变换FT-FS-DTFT-DFS复杂?理解了离散周期的概念,就懂了!

[3]傅里叶变换,是如何让我们抓狂的?

[4]https://www.gaussianwaves.com/2011/01/fft-and-spectral-leakage-2/

[5]https://community.sw.siemens.com/s/article/windows-and-spectral-leakage

(0)

相关推荐

  • 全相位FFT算法的实现

    原文地址:全相位FFT算法的实现作者:wounder 传统FFT利用三角函数的正交性,将信号分离出来,从而将时域的信号变换到频域.但是,它有一个很重要的前提:输入的序列必须是周期内等间隔采样的值,这样 ...

  • 使用 FFT 进行频谱分析

    下面的示例说明了如何使用 FFT 函数进行频谱分析.FFT 的一个常用场景是确定一个时域噪声信号的频率分量. 首先创建一些数据.假设是以 1000 Hz 的频率对数据进行的采样.首先为数据构造一条时间 ...

  • 窗函数介绍

    文章内容主要来源于 怎样用通俗易懂的方式理解窗函数 Wikipedia:Window function 窗函数-减少傅里叶变换泄漏 Fast Fourier Transform Introductio ...

  • 教你如何给U盘设置密码,再也不用担心隐私会泄漏了!

    我们经常用U盘来拷贝东西或是存放一些重要文件和数据,U盘用起来确实方便,但带来的隐患也不小,万一哪天不小心丢了被别人捡到我们的文件和数据就会泄漏,特别有些女孩子还会存放一些私密照,一旦泄漏后果不堪设想 ...

  • 图解:15类39个机械振动故障及其特征频谱

    15类常见的振动故障及其特征频谱: 不平衡.不对中.偏心转子.弯曲轴.机械松动.转子摩擦.共振.皮带和皮带轮.流体动力激振.拍振.偏心转子.电机.齿轮故障.滚动轴承.滑动轴承. 一.不平衡 不平衡故障 ...

  • 【电磁频谱作战支持百科】雷达警告系统

    雷达告警接收机(RWR)是最简单.最轻便的电子支援告警传感器,因此通常被安装在需要保护的武器平台之上.它通常由四个各覆盖90 ° 的测向(DF)接收(Rx)天线和一个接收机/处理单元(RPU) 组成, ...

  • 1986年切尔诺贝利发生核泄漏,35年过去了,当地变什么样了?

    核元素是一把双刃剑,有利有弊.它能给人类带来发展,同时也能摧毁人类.比如用于经济发展的核电站,用于战场作战的核武器.而且核这种物质,它能产生巨大的辐射能量,让生物细胞发生畸形病变致死.核武器的爆炸,可 ...

  • 管道泄漏如何不停车解决?一文让你搞懂带压堵漏技术

    在化工企业的生产过程中,管道是生产装置的主要运输手段,其物料的供应,工艺过程的流转均要靠不同规格.不同压力等级和形状的管道来实现,在延绵弯转的化工管道中,有无数的法兰.弯头.焊缝等接口,其中若有一处焊 ...

  • 管道泄漏如何不停车解决?本文将和你分享带压堵漏技术

    在化工企业的生产过程中,管道是生产装置的主要运输手段,其物料的供应,工艺过程的流转均要靠不同规格.不同压力等级和形状的管道来实现,在延绵弯转的化工管道中,有无数的法兰.弯头.焊缝等接口,其中若有一处焊 ...

  • 国外电磁频谱监测与定位卫星星座发展概况

    导读:2019年12月11日,美国国家侦察局(NRO)宣布授予美国射频信号监测与定位创企Hawkeye 360公司一份商业射频(RF)遥感的数据集成研究合同.通过合同,HawkEye 360将研究将其 ...

  • 美国日本俄罗斯都有核事故,国产第三代核电站怎样防范核泄漏

    美国日本俄罗斯都有核事故,国产第三代核电站怎样防范核泄漏

  • 深入分析 ThreadLocal 内存泄漏问题

    总结:由于ThreadLocalMap的生命周期跟Thread一样长,如果没有手动删除对应key就会导致内存泄漏,我觉得是这种数据结构导致,会产生内存溢出的问题Java为了最小化减少内存泄露的可能性和 ...