频谱泄露与傅里叶变换尤其是离散时间傅里叶变换有关,对于频谱泄露,通常的解释是这样的:
信号为无限长序列,运算需要截取其中一部分(截断),于是需要加窗函数,加了窗函数相当于时域相乘,于是相当于频域卷积,于是频谱中除了本来该有的主瓣之外,还会出现本不该有的旁瓣,这就是频谱泄露!为了减弱频谱泄露,可以采用加权的窗函数,加权的窗函数包括平顶窗、汉宁窗、高斯窗等等。而未加权的矩形窗泄露最为严重。
我们把无限长序列分为两种情况:
一、无限长序列为非周期信号
非周期的无限长序列,任意截取一段有限长的序列,都不能代表实际信号,分析结果当然与实际信号不一致!
道理是显而易见的:
你分析的信号根本就不能代表实际信号,结果当然也与实际信号不一致,更准确的说法,结果是错误的,造成错误结果的原因是分析方法是错误的!
二、无限长序列为周期信号
对于周期性的无限长序列,假设截取的是正好一个或整数个信号周期的序列,这个有限长序列就可以代表原无限长序列,假设分析的方法得当的话,分析结果应该与实际信号一致!
这里,我们作了两个假设,第二个假设是伟大的傅里叶作出的伟大论断!是成立的!
如果第一个假设也成立,是不是就不会发生频谱泄露呢?
答案是肯定的!
从无限长序列中截取一个或整数个周期,我们称为整周期截断,反之,称为非整周期截断。
整周期截断,不会造成频谱泄露!
非整周期截断,必然造成频谱泄露!
换言之:
整周期截断是不发生频谱泄露的充分且必要条件!或 非整周期截断是发生频谱泄露的充分且必要条件!
为什么非整周期截断就会发生频谱泄露呢?且看下图:
图1.从无限长序列中截取有限长序列
图1所示为无限长周期信号,我们截取了其中一段(有限长序列),这一段不是一个完整周期。傅里叶变换仍然将信号当成无限长序列,傅里叶变换又是如何将其当成无限长呢?
这里采用了一种被称为周期延拓的技术,所谓周期延拓,就是把截取的有限长序列当成是无限长序列的一个周期,然后不断的复制,得到一个新的无限长序列。
图2.有限长序列经过周期延拓构建的新的无限长序列
如图2所示,从图1所示无限长序列中截取的有限长序列,经过周期延拓后,得到一个新的无限长序列,显然,这个新的序列与原序列是不一样的!
图2的信号与图1的信号不同,分析得到的频谱自然也不同!不同之处在于,图1是单一频率信号,只有一根谱线,而图2中,除了图1信号包含的这根谱线(不妨称为主谱线)外,出现了其它频率的谱线,通常,这些谱线要比主谱线短很多,如果把这些原信号不包含的谱线理解为是主谱线泄露出来的,那么,这种现象就被称为频谱泄露!
采用合适的窗函数(常见的窗函数有汉宁窗、三角窗、海明窗和高斯窗等等)可以一定程度上抑制频谱泄露。
窗函数的概念,非常抽象,然而,窗函数的作用,是非常有限的,我们可以这样理解:
如图2中的信号,由于突然截断造成周期延拓时两个周期相邻处出现了信号突变,这种突变,代表的是信号包含了高次谐波。加上合适的歘窗函数,可以把这个突变变得圆滑一些,从而抑制高次谐波。
但是,我们也可以这样想,假设图2的信号就是真实信号,那么,加上这样的窗函数反而得到了错误的结果!
因此,避免频谱泄露的根本还是要从源头出发,尽可能做到准确的整周期截断,这种情况下,窗函数可以选择最简单的矩形窗。