如何优化 STFT 中的窗口长度?

信息处理 傅里叶变换 stft
2022-01-11 03:47:15

我有许多 EEG 信号,我想使用线性方法分析它们,例如 STFT(短时傅里叶变换)。在 STFT 中,如何优化分析窗口长度,以适当的方式反映每个分析窗口的频谱?

4个回答

这就是傅里叶变换的经典“不确定性原理”。您可以在时间上具有高分辨率或在频率上具有高分辨率,但不能同时具有两者。窗口长度允许您在两者之间进行权衡。

如果您想以 10 毫秒的分辨率检测 EEG 信号中的“事件”,那么这应该是您的窗口长度。这将为您提供大约 100 Hz 的频率分辨率。

最佳窗口长度取决于您的应用。如果您的应用程序需要更准确的时域信息,请减小窗口的大小。如果应用程序需要更具体的频域信息,则增加窗口的大小。正如希尔玛所说,这Uncertainty Principle真的让你别无选择。您无法同时在两个域中获得完美的分辨率。您可以仅在一个域中获得完美的分辨率,而代价是另一个域(时域和频域)或中间分辨率(但在两个域中)的分辨率为零。

我不知道这是否回答了您的问题,因为您专门询问了 STFT。您可以尝试使用wavelet transforms来获取信号中的信息。Wavelet transforms通过在多个窗口分辨率下分析信号,将为您提供更大范围内的分辨率。

我不知道 EEG,但使用 STFT 时的基本(也许我应该说基本)问题是选择合适的窗口长度。如果您的 EEG 是周期性的,并且您想要解析基波和谐波,您应该使用“长”窗口。如果您想检测某个事件的开始或存在,或者您对频谱的包络更感兴趣,则可以使用“短”窗口。

我花了很多时间优化时频分析或滤波器组中的窗口可以针对检测、去噪、信号分离对它们进行优化……这非常依赖于应用程序。由于时频分析通常是多余的,优化分析或综合窗口是不同的任务。而长度只是窗户设计中的一个参数。

这个问题甚至更加复杂,因为最优性的离散化公式比连续时域情况复杂得多(参见例如局部时频分量的最优集中 Gabor 变换)。

所以我目前的实用经验法则是:从看起来可以的窗口形状和长度开始。然后用两个长度为两倍半的窗口重复分析,并合并结果。