对于表现出从一个频率槽到另一个频率槽的泄漏的功率谱密度来说,这意味着什么。
我正在读一本书,其中陈述了以下内容:
“通常,我们用作算法输入的时间序列将具有非零 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;