gma*_*aru 5 signal-processing fft scipy spectrogram
我正在关注scipy.signal.spectrogram 上的教程示例。是否可以限制我们想要计算频谱图的频率,假设在 1000-2000Hz 范围内。根据 FFT,我们将获得一半的采样频率。如果不是,那么我可以对输出进行切片以获得 3D 矩阵,t,f,Sxx其中我将频率限制为 1000-2000 Hz?在我的情况下,我的信号仅包含特定范围的频率,并且保留所有频率对我的分析来说代价高昂。
除非您要分析很小比例的频谱,否则使用 FFT 计算整个频谱(并丢弃您不想要的部分)通常仍然是获得部分频谱的相当有效的方法。
然后,您可以找到感兴趣的频率下f使用numpy.where(以下此答案由askewchan)。下一步是简单地对输出进行切片,提取 1D 阵列中的所需频率值f和 2D 阵列中的相关功率谱值Sxx。这可以按如下方式完成:
...
f, t, Sxx = signal.spectrogram(x, fs)
fmin = 1000 # Hz
fmax = 2000 # Hz
freq_slice = np.where((f >= fmin) & (f <= fmax))
# keep only frequencies of interest
f   = f[freq_slice]
Sxx = Sxx[freq_slice,:][0]
| 归档时间: | 
 | 
| 查看次数: | 1753 次 | 
| 最近记录: |