У меня есть набор данных. Очевидно, он носит периодический характер. Я хочу узнать, какую частоту он использует, используя преобразование Фурье и запечатлеть его.
Вот мой снимок, но это кажется не очень хорошим.
Это соответствующий код, я не понимаю, почему он терпит неудачу:
import numpy
from pylab import *
from scipy.fftpack import fft,fftfreq
import matplotlib.pyplot as plt
dataset = numpy.genfromtxt(fname='data.txt',skip_header=1)
t = dataset[:,0]
signal = dataset[:,1]
npts=len(t)
FFT = abs(fft(signal))
freqs = fftfreq(npts, t[1]-t[0])
subplot(211)
plot(t[:npts], signal[:npts])
subplot(212)
plot(freqs,20*log10(FFT),',')
xlim(-10,10)
show()
Мой вопрос: Поскольку исходные данные очень периодические, и я ожидаю увидеть, что в частотной области пик очень острый; как я могу сделать пик приятнее?
Это проблема анализа данных.
xlim(0,max(freqs))
.ИЗМЕНИТЬ. с:
dataset = numpy.genfromtxt(fname='data.txt',skip_header=1)[::30];
t,signal = dataset.T
(...)
plot(freqs,FFT)
xlim(0,1)
ylim(0,30)
спектр
Для наилучшего качества спектра просто повторно закрепите сигнал в течение длительного долгого времени (для красивых пиков) с частотой дискретизации 1 Гц, что даст вам шкалу частоты [0, 0.5 Гц] (см. критерий Найквиста).