功率谱密度估计中的泄漏

信息处理 自由度 功率谱密度 信号功率
2022-02-03 16:38:11

对于表现出从一个频率槽到另一个频率槽的泄漏的功率谱密度来说,这意味着什么。

我正在读一本书,其中陈述了以下内容:

“通常,我们用作算法输入的时间序列将具有非零 DC 平均值,甚至可能会随着时间缓慢变化。这样的 DC 平均值将显示在结果频谱的第一个频率区间 (m = 0) 中. 如果使用窗函数或平均值随时间变化,它也会泄漏到相邻的频率区间,可能会掩盖低频信号。

有人可以解释这是什么意思吗?为什么窗口会将功率泄漏到相邻的频率槽中?

我还阅读了以下可能具有类似联系的内容,并且最好对此进行解释:

“如果我们简单地从包含正弦信号的时间序列中取出一段长度 N 并执行 DFT,我们很可能会发现我们可能天真地期望仅在一个频率仓中产生尖峰的正弦信号,反而会显示为丑陋的东西,原因是 DFT 隐含地假设信号是周期性的,即长度为 N 的时间序列以循环方式无限重复自身。如果正弦输入信号的频率不是精确的频率分辨率 fres 的倍数,即不落在频率仓的确切中心,这个假设不正确,并且由于循环延续,DFT 将“看到”最后一个样本和第一个样本之间的不连续性。不连续性会在整个频谱范围内传播功率”

DFT“看到”如上所述的不连续性意味着什么?

编辑:接受答案后:

我运行了一个 MATLAB 模拟(下面的代码),其中正弦的频率恰好是 PSD 分辨率的倍数,因此直接落在频率仓的中心,仍然有泄漏到相邻的仓(右边 3 个和三个在正弦曲线所在的这个 bin 的左侧)。随着我增加窗口长度,这种溢出得到越来越多的解决。这似乎表明,即使是直接落在频率区间中心的频率也会泄漏到相邻的频率区间中,并且泄漏量将取决于窗口的形状和窗口的长度。这种理解正确吗?

MATLAB代码:

%%%%%%%%%%%%%%%%%%%% PSD Estimation%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


close all;
N=50; %number of periods

Fs= 4096;
snr=10;

M=256; %length of FFT

Fres=Fs/M;

Mul_factor=20;

F_c=Fres*Mul_factor;  %in Hz%

Window_length=128;

Overlap=floor(0.4*Window_length);
x=0:1/Fs:N*(1/F_c);
y=sin(2*pi*x*F_c) + 1/sqrt(snr).*randn(1,length(x));

[ppx,w]=pwelch(y,Window_length,Overlap,M,Fs);


figure;
hold on;
subplot(2,1,1);
plot(x,y);
subplot(2,1,2);
plot(w,ppx);
hold off;

在此处输入图像描述

1个回答

有人可以解释这是什么意思吗?为什么窗口会将功率泄漏到相邻的频率槽中?

您可以将频率箱视为强加一个人工频率网格,它只允许某些频率很好地适应其中(产生一个尖锐的峰值),而所有其他频率都被涂抹在相邻的箱中,从而产生频谱泄漏。

这意味着只有那些恰好以 bin 频率为中心的频率才不会产生泄漏。

由于 bin 的带宽(即频率分辨率)只是采样率除以 dft 长度,因此我们可以得出结论,只有精确为频率分辨率整数倍的频率才会产生频谱泄漏。

例如,如果采样频率为 8000 Hz,dft 长度为 1024,则频率分辨率计算为

 frequency_resolution = 8000 / 1024 = 7,8125 Hz

因此,如果您的信号包含的频率是 7,8125 的整数倍,则不会出现泄漏(例如 1*7,8125、2*7,8125、3*7,8125 等)

但是,如果您的信号包含介于 2 个相邻分档之间的频率,您将得到频谱泄漏,我认为这是直观的,因为没有一个分档可以完全适合该频率分量。

更新(试图回答下面的评论):

确实,窗口化本身确实会引入一些额外的泄漏。但即使你根本不使用窗口(对应于矩形窗口),你仍然会得到频谱泄漏(前提是检查的频率不是频率分辨率的整数倍)。事实上,由于使用矩形窗口(根本没有窗口)会产生最严重的泄漏,因此使用矩形以外的重叠窗口有助于减少频谱泄漏。

那么,为什么我们首先会出现频谱泄漏?

请记住,DFT 假设信号是周期性的。由于每个 bin 的频率分辨率是固定的(例如上面示例中的 7,8125 Hz),在这种情况下恰好对应于 1024 个样本,我们可以看到单个 bin 可以恰好保持 7,8125 Hz 频率的一个周期, 15,625 Hz 频率的 2 个周期,24,4375Hz 频率的 3 个周期等等。对于每个 bin 来说都是如此,这意味着在一个 bin 内或相邻的 bin 之间不会有不连续性。

但是,如果我们现在将频率更改为适合两个箱之间的频率,事情就会发生变化。这个新频率将采用多于(或少于)1024 个样本(一个或多个周期),这意味着我们将在一个 bin 内或相邻 bin 之间获得不连续性,这反过来又会产生频谱泄漏。

希望这可以帮助。