如您所知,STFT具有矩阵结果,其维度由下式给出:
number of frequency bins * number of time frames.
例如,假设我有一个具有特征的信号,我想使用以下输入参数应用STFT方法:
nftt=625
个样本; 使用这些参数,我的STFT将有一个大小为313*3987
的输出(在某些网站中存在计算这些值的方法)
现在,我的问题是如何定义STFT输出频率维度的限制?我想我应该将我的阈值计算为STFT输出中的索引号,如果是,我该怎么办呢?
我有频率分辨率,但当我乘以nfft
时,它是采样率值的一半。
答案 0 :(得分:3)
您还没有提供计算频率分辨率的方法,但这里应该是:
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;