函数
spicy.signal.spectrogram
:https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.spectrogram.html
和
spicy.signal.stft
:https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.stft.html
似乎在做类似的事情。
这两个功能有什么区别?
答案 0 :(得分:2)
Tl; dr :如果我用SciPy文档给出的输出来写:Sxx = Zxx ** 2
说明: 频谱图和短时傅立叶变换是两个不同的对象,但它们实际上是紧密相连的。
短时傅立叶变换(STFT)与傅立叶相关 用于确定正弦频率和相位含量的变换 随时间变化的信号局部部分的变化。在实践中, 计算STFT的过程是分割更长的时间信号 分成等长的较短段,然后计算傅立叶 在每个较短的片段上分别进行变换。这揭示了傅立叶 每个较短段的频谱。然后通常会绘制变化 光谱随时间变化。 Wikipedia
另一方面
光谱图是视觉光谱的 信号的频率随时间变化。 Wikipedia
频谱图基本上是在小窗口中切断信号,并显示一系列颜色,显示该频率或该特定频率的强度。与STFT完全相同。实际上,它使用的是STFT。
现在,对于差异,按照定义,频谱图是信号s(t)
的短时傅立叶变换(STFT)的平方幅度:
spectrogram(t, w) = |STFT(t, w)|^2
scipy.signal.stft
页面底部显示的示例显示:
>>> plt.pcolormesh(t, f, np.abs(Zxx), vmin=0, vmax=amp)
它正在运行,您可以看到一个色标。但这是线性的,因为有abs
操作。
实际上,要获得真实的频谱图,应该写:
>>> plt.pcolormesh(t, f, Zxx ** 2, vmin=0, vmax=amp)