如何区分 FFT 功率泄漏或关闭频率

信息处理 fft 采样
2022-02-02 00:23:19

这周我正在接受研究生院教授的采访。他问了一堆与信号处理相关的问题,这些问题导致了一些关于 FFT 频谱上的功率泄漏的问题。到目前为止一切都很好,但是当他问这些问题时,他抓住了我:

“只给定一个 FFT 频谱,没有关于信号或采样频率的先验信息,如何区分两个靠近在一起的 bin 是功率泄漏的情况还是两个不同的频率?”

面试时什么都没有想到,所以我只是回答说不可能,但从那以后我想知道是否有办法做出这种区分。我尝试在网上查找,但找不到任何可以回答此问题的材料,因此将不胜感激。

谢谢!

3个回答

假设频谱被充分插值以查看分辨率带宽内的细节(考虑到问题,这是一个合理的假设),并且波形没有进一步窗口超出矩形窗口(因为我认为应用的任何此类窗口是等价于存在多个音调紧密间隔给定的窗口是应用幅度调制),那么快速区分这两种情况的一种明显方法是观察主瓣的宽度(以及所有其他特征,例如零位置或非- 零点的存在,但主瓣宽度在噪声条件下是稳健的) - 给定矩形窗口的内核(窗口的 DFT)在频率上与每个音调卷积。如果有一种音调,我们将只看到内核。如果有两个音调靠得更近,那么这两个音调都会与内核卷积,从而扩大结果。(矩形窗口的时间核是频率上的狄利克雷核,基本上是一个混叠的 Sinc 函数,所以如果光谱峰值与狄利克雷核的宽度相同,这是已知的,而不是计算的,那么我们可以很容易地声明那个峰值成为单音)。

如果插值充分且无噪声,那么我们还可以通过缺少频率零点来快速检测到这一点(尽管零点很快就会被任何噪声掩盖,因此这不是一个稳健的测试)。如果未对频谱进行插值且频率非常接近以至于 bin 宽度增加不明显,那么我们可以将所有其他 bin 中泄漏值的相位和幅度与底层 Dirichlet 内核的预期值进行比较,如下在噪声条件下,我们可以使用所有的 bin 以及与单个音调预期的相关性来提供一个音调的置信度。

有关使用主瓣宽度测量的更多详细信息

形式的单个指数音调的情况下,这种主瓣宽度测量过程可以精确地确认单个音调下降到非常小的频率偏移,但对于实音的情况是由于每个实音包含的两个指数音的相互作用(ejωtcos(ωt)=0.5(ejωt+ejωt)). 在这种情况下,即使是单音,我们也会看到主瓣宽度与频率的微小变化,当我们接近奈奎斯特边界时,这种变化变得更加明显。如果在计算 DFT 之前对波形进行窗口化(不能根据 OP 所述的内容进行假设,并且正如我已经提到我会争辩说,将单个音调开窗的结果会导致出现多个紧密间隔的音调!)。为了显示使用主瓣宽度方法的实际范围,我在帖子底部绘制了矩形窗口案例的主瓣宽度与频率的变化,这提供了我们可以区分多接近的实际限制的洞察音调(非常接近!

为了演示在插值频谱的情况下简单测量主瓣宽度的效果,以及它对噪声的相对不敏感性以解决 hotpaws 评论,请参见下面的示例,其中包含一个矩形窗口和两个相同水平的音调,它们位于一个 bin 内宽度(矩形窗口的分辨率带宽为 1 bin,因此对于“关闭”而言,超过该带宽是不够的):

F1、F2、F1+F2的DTFT

这是有噪声和无噪声的复合信号的比较,其中噪声仅低 6 dB:

F1+F2 有无噪音

(在这种情况下,即使没有对频谱进行插值,这意味着唯一可用的样本位于整数 bin 位置;我们可以通过检查看到主瓣宽度的增加仍然是显而易见的)

有关实音的主瓣宽度测量限制的更多详细信息,下图显示了矩形窗口 128 点 DFT 的主瓣频段宽度在 -3 dB 处的变化(通过补零插值到 12800 点),其中单个指数音调给出的“真值”对于大接近 0.886 个 bin (其中是样本数,源自对于,并且可以从 Dirichlet Kernel中精确确定任何大小 N ,对于 ,从,其中:NN2ω/πSinc(ω)=sin(ω)/ω=0.707D(ω)2ω/πD(ω)=0.707

D(ω)=sin(Nω/2)Nsin(ω/2)

并且是以弧度/样本为单位的归一化弧度频率: forωω[0,2π)N[0,N)

结果如下图所示:

D(x) 的 bin 宽度

正如卷积给出的那样,这个 bin 宽度将通过相隔小于 1 bin 的两个音调的频率分离来增加,并且只要该间隔大于单个音调可变性的两倍,它就可以被检测到(对于例如,当我们距离奈奎斯特边界超过 10 个 bin 时,可变性小于 0.01 个 bin,这随着 N 的增加而成立)。下图是模拟的,但可以通过底层 Sinc 函数的干涉图案进行分析预测,该函数通过混叠成为狄利克雷核。这证明了使用它来区分单个音调和紧密间隔的多个音调的实用性。

仓宽变化

一种方法是从 DFT 值估计音调(纯正弦信号)参数,然后生成匹配的 DFT(通过公式或通过生成信号并获取 DFT),然后测量实际和理论之间的变化。任何变化都是由于两个(或更多)接近的音调、附近的音调、纯度的变化或噪音造成的。所以,它可能会变得复杂。


丹的答案是一种可靠的理论方法来看待它。我的基于一组不同的理论。两种方法都基于测量中心瓣宽度与单音的预期值相比的原理。我会从实用的角度指出,我的计算效率要高得多,并且不需要事先了解预期的波瓣宽度(因为你每次都在计算它)。对 DFT 进行插值以获得 DTFT 在计算上非常昂贵。

这是在信号而不是频谱中完成的等效插值。数学是一样的:

重采样和去除高频噪声?

更深入:

周期 sinc 插值的绝对收敛

推测:

如果您在尝试回答之前问过您的面试官,如果只有两种音调存在以及预期有多少噪音,那么您结结巴巴的程度无关紧要,他们会认为“他明白了”并只是听到“废话” blah blah”,因为他们正在低头看下一个问题。

到目前为止,我发现实际测量两个紧密间隔的音调之间差异的最佳方法,假设幅度相同,是从频谱中消除其他音调的影响,采用逆 DFT,并使用明显音调的频率(两个音之间的中间)和包络的频率(与两个音的频率差异有关)。它可以通过频谱中的数值模型(先验知识)来完成,但有几次我尝试推导方程时我最终不得不做出近似,所以我停止了。代数很快变得复杂。搜索“节拍现象”以获取有关两个纯音之和的音调上波动包络的更多详细信息。

如果两个正弦曲线的相位(根据奇偶比重铸)不相同,并且您有复频谱,那么两个 bin 的相位将被扭曲。对于一个正弦曲线,(奇数/偶数或中心对齐)相位将是相同的。