了解 scipy.signal.spectrogram() 的输出
Posted
技术标签:
【中文标题】了解 scipy.signal.spectrogram() 的输出【英文标题】:Understanding scipy.signal.spectrogram()'s output 【发布时间】:2018-12-22 18:32:31 【问题描述】:我想了解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
所以我想知道f
、t
和Sxx
与time
、frequency
和amplitude
的关系。
感谢阅读,感谢任何帮助!
【问题讨论】:
【参考方案1】:f 是频率数组,包含 fft 的每个频段的频率。可以用作图表的标签
t 是时间数组,包含进行此 FFT 相对于源信号的时间。再次可用于标签。
Sxx 数组包含幅度,是一个二维数组,其形状是 f 的长度乘以 t 的长度。
因此与时间数组长度匹配的轴是时间轴,另一个是频率。
如果您想标准化显示,您需要自己找到 Sxx 数组的最小值和最大值。
【讨论】:
以上是关于了解 scipy.signal.spectrogram() 的输出的主要内容,如果未能解决你的问题,请参考以下文章