Tl; dr : Если я напишу это с выводом, заданным в документации SciPy: Sxx = Zxx ** 2
Объяснение :
Спектрограмма и кратковременное преобразование Фурье - это два разных объекта, но они действительно близко друг к другу.
Кратковременное преобразование Фурье (STFT), связанное с Фурье
преобразование используется для определения синусоидальной частоты и фазового состава
локальных участков сигнала, как он меняется со временем. На практике,
процедура для вычисления STFT состоит в том, чтобы разделить более длинный сигнал времени
на более короткие отрезки равной длины , а затем вычислить Фурье
преобразовать отдельно на каждом более коротком сегменте. Это раскрывает Фурье
спектр на каждом более коротком сегменте. Затем обычно наносят изменения
спектры как функция времени. Википедия
С другой стороны,
Спектрограмма - это визуальное представление спектра
Частоты сигнала, как это меняется со временем. Википедия
Спектрограмма в основном обрезает ваш сигнал в маленьких окнах и отображает диапазон цветов, показывающих интенсивность той или иной конкретной частоты. Точно так же, как STFT. На самом деле он использует STFT.
Теперь для разности по определению спектрограмма представляет собой квадратичную величину кратковременного преобразования Фурье (STFT) сигнала s(t)
:
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)