Я очень новичок в Python, и у меня есть основная проблема понимания. Для меня кажется, что результат БПФ основан только на том, что выбранное вами linspace.FFT-результат в зависимости от python от выбранного linspace?
# Number of samplepoints
N = 600
# sample spacing
T = 1.0/800.0
x = p.linspace(0.0, N*T, N)
y = p.sin(50.0 * 2.0*p.pi*x) + 0.5*p.sin(80.0 * 2.0*p.pi*x)
yf = p.fft(y)
xf = p.linspace(0.0, 1.0/(2.0*T), N/2)
plt.plot(xf, 2.0/N * np.abs(yf[0:N/2]))
plt.grid()
plt.show()
Запустив этот fft в качестве примера, я получаю два пика при 50 и 80 Гц. Когда я меняю xf на:
xf = p.linspace(0.0, 5.0/(2.0*T), N/2)
Шипы около 250 и 400 Гц.
Не означает ли это, что я должен знать правильные результаты заранее (в этом случае частоты двух синусоидных волн, из которых состоит входной сигнал), так что я могу позже настроить масштабирование оси, чтобы она соответствовала эти результаты? Наверное, нет, поэтому я был бы рад, если бы кто-нибудь мог объяснить эту проблему.