定义 STFT 输出频率的间隔



如您所知,STFT有一个矩阵结果,其维度由下式给出:

number of frequency bins * number of time frames. 

例如,假设我有一个具有特征的信号,我想应用具有以下输入参数的 STFT 方法:

  • 采样率 : 250,000 Hz;
  • 数据长度:498900个样本;
  • 窗口长度:nftt=625样品;
  • 跳大小:125个样本

使用这些参数,我的 STFT 将有一个大小为:313*3987的输出(计算这些值的方法存在于某些网站中(

现在,我的问题是如何定义 STFT 输出的频率维度限制?我想我应该将我的阈值计算为 STFT 输出中的索引号,如果是这样,我该怎么做?

我有频率分辨率,但是当我将其乘以nfft时,它是采样率值的一半。

您尚未提供如何计算频率分辨率,但应该是:

frequency_resolution = sampling_rate / nfft;

在您的特定情况下,采样率为 250,000Hz 和 nfft=625 ,这应该为您提供 400Hz 的频率分辨率。您可以验证625*400确实等于 250000

然后,如果要将 0Hz 到不大于 max_frequency 的频率作为 STFT 输出的一部分,则沿频率轴的最大尺寸应由下式给出:

size_frequency_axis = 1 + floor(max_frequency / frequency_resolution);

作为特殊情况,您还可以验证当max_frequency设置为奈奎斯特频率(250000/2 = 125000(时,计算的大小是否1+floor(125000/400) = 313(与您的全频谱STFT输出大小相匹配(。

概括地说,如果要包含不是从 0Hz 开始的频率范围,则可以以类似的方式计算最小和最大频率的索引,并通过以下方式获得相应的大小:

min_frequency_index = 1 + floor(min_frequency / frequency_resolution);
max_frequency_index = 1 + floor(max_frequency / frequency_resolution);
size_frequency_axis = max_frequency_index - min_frequency_index + 1;

最新更新