Szukam, jak obrócić osi częstotliwości w fft (podjęte przez scipy.fftpack.fftfreq) na częstotliwość w hercach, a nie pojemniki lub frakcje częściowe.Scipy/Numpy FFT Analiza częstotliwości
że próbował kodu poniżej przetestować FFT:
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()
Częstotliwość próbkowania powinna 4000 120 próbek/s = 33,34 próbek/sek.
Sygnał ma sygnał 2,0 Hz, sygnał 8,0 Hz i niektóre zakłócenia losowe.
Podejmuję FFT, łapię częstotliwości i kreślę. Liczby są dość bezsensowne. Jeśli pomnożę częstotliwości przez 33,34 (częstotliwość próbkowania), otrzymuję szczyty o wartości około 8 Hz i 15 Hz, co wydaje się błędne (również częstotliwości powinny być 4-krotnie oddalone, a nie 2!).
Jakieś myśli o tym, co robię źle tutaj?
Dziękuję za tak kompletną odpowiedź. hyry, dlaczego zdecydowałeś się wydrukować 20 * scipy.log10 (FFT) zamiast FFT? – Archie1986
HYRY dostarczył wykres z osią Y w skali dB, a 20log10 zapewnia poprawną konwersję widma wielkości. – OldTinfoil