Я ищу, как превратить ось частоты в БПФ (взятую через scipy.fftpack.fftfreq) в частоту в герцах, а не в двоичные или дробные бины.
Я пытался кодировать нижедля проверки БПФ:
t = scipy.linspace(0,120,4000)
acc = lambda t: 10*scipy.sin(2*pi*2.0*t) + 5*scipy.sin(2*pi*8.0*t) + 2*scipy.random.random(len(t))
signal = acc(t)
FFT = abs(scipy.fft(signal))
FFT = scipy.fftpack.fftshift(FFT)
freqs = scipy.fftpack.fftfreq(signal.size)
pylab.plot(freqs,FFT,'x')
pylab.show()
Частота дискретизации должна составлять 4000 выборок / 120 секунд = 33,34 выборки / сек.
Сигнал имеет сигнал 2,0 Гц, сигнал 8,0 Гц,и некоторый случайный шум.
Я беру БПФ, беру частоты и строю график.Цифры довольно бессмысленные.Если я умножу частоты на 33,34 (частоту дискретизации), то получу пики примерно на 8 Гц и 15 Гц, что кажется неправильным (также частоты должны быть с коэффициентом 4, а не 2!).
Есть мысли о том, что я здесь делаю не так?