Vizsgáljuk meg a ../data/zenebona
nevű file-ban található zajos adatsor Fourier-spektrumát. Határozzuk meg azokat a pozitív frekvenciákat, melyek dominánsan szerepelnek ! Az file két oszlopot tartalmaz: az első oszlop az idő, a második pedig a jel.
Előszöt betöltjük a szükséges csomagokat
%pylab inline
from numpy.fft import *
Majd megnyitjuk az adatfájlt, és ábrázoljuk az adatokat.
adatok = loadtxt("../data/zenebona.txt")
plot(adatok[:,0], adatok[:,1])
xlabel("idö", size=12)
ylabel("Jelerösség", size=12)
title("Az adatfájl tartalma", size=18, y=1.05)
Ezután elvégezzük a Fourier-transzformációt, és a transzformált jelben megkeressük a domináns frekvenciákat, ezeket eltároljuk egy új listában
Fjel = fft(adatok[:,1])
freq = fftfreq(len(adatok[:,0]), d=adatok[1,0] - adatok[0,0])
dom = [[], []]
for i in range(len(abs(Fjel))):
if abs(Fjel)[i] > 300: # Azt tekintjük dominánsnak, aminek a jele 300-nál nagyobb.
dom[0] += [abs(freq)[i]]
dom[1] += [abs(Fjel)[i]]
dom[0]
Tehát, a domináns frekvenciák a 0,0957 Hz és a 0,2934 Hz. Végül ábrázoljuk a transzformált függvényt, és a domináns frekvenciák helyét.
plot(abs(freq), abs(Fjel), label="A jel transzformáltja")
plot(dom[:][0], dom[:][1], "ro", label="A domináns frekvenciák")
xlabel("frekvencia", size=12)
ylabel("transzformált jelerösség", size=12)
title("A transzformált jel", size=18, y=1.05)
legend(loc=(1, 0.81))