了解scipy.signal.spectrogram()的输出

时间:2018-12-22 18:32:32

标签: python python-3.x scipy spectrogram

我试图了解scipy.signal.spectrogram()的输出是什么,以及如何使用它们。目前,我读取了一个.wav文件并生成了一个频谱图。

from scipy.io import wavfile as wav
from scipy import signal

sample_rate, data = wav.read('sound.wav')
f, t, Sxx = signal.spectrogram(data, sample_rate)

-

如果理解这是完全错误的,我对频谱图的想法是一个3D图,其中包括:

x-axis: time
y-axis: frequency
pixel colour/brightness: amplitude

所以我想知道ftSxxtimefrequencyamplitude的关系。

感谢阅读,感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

f是频率阵列,包含fft每个频带的频率。可以用作图形的标签

t是时间数组,包含相对于源信号进行此FFT的时间。再次可以用作标签。

Sxx数组包含振幅,是一个二维数组,其形状为f的长度乘以t的长度。

因此,与时间数组长度匹配的轴是时间轴,另一个是频率。

如果要标准化显示,则需要自己找到Sxx数组的最小值和最大值。