定义 STFT 输出频率的间隔
define an interval for frequency of STFT outputs
如您所知,STFT 有一个矩阵结果,其维度为:
number of frequency bins * number of time frames.
例如,假设我有一个具有特征的信号,我想应用具有以下输入参数的 STFT 方法:
- 采样率:250,000 Hz;
- 数据长度:498900 个样本;
- window 长度:
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;
如您所知,STFT 有一个矩阵结果,其维度为:
number of frequency bins * number of time frames.
例如,假设我有一个具有特征的信号,我想应用具有以下输入参数的 STFT 方法:
- 采样率:250,000 Hz;
- 数据长度:498900 个样本;
- window 长度:
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;