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

Understanding scipy.signal.spectrogram()'s output

我想了解 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 有什么关系。

感谢阅读,如有任何帮助我们将不胜感激!

f是频率数组,包含fft的每个波段的频率。可以用作图形的标签

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

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

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

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