Я попытался создать спектрограмму величин, используя scipy.signal.spectogram
. К сожалению, у меня не получилось.
Мой тестовый сигнал должен быть синусоидальным с частотой 400 Гц и амплитудой 1. Результат для величины спектрограммы, похоже, равен 0,5 вместо 1,0. Я понятия не имею, в чем может быть проблема.
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
# 2s time range with 44kHz
t = np.arange(0, 2, 1/44000)
# test signal: sine with 400Hz amplitude 1
x = np.sin(t*2*np.pi*440)
# spectogram for spectrum of magnitudes
f, t, Sxx = signal.spectrogram(x,
44000,
"hanning",
nperseg=1000,
noverlap=0,
scaling="spectrum",
return_onesided=True,
mode="magnitude"
)
# plot last frequency plot
plt.plot(f, Sxx[:,-1])
print("highest magnitude is: %f" %np.max(Sxx))