Scipy / Numpy FFT Frequency Analysis

Я ищу, как повернуть ось частот в fft (взятом через 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!).

Есть мысли о том, что я здесь делаю не так?

32
задан nathan lachenmyer 26 February 2012 в 19:33
поделиться