Az ifft
fügvény segítségével kaphatjuk meg egy függvény inverz Fourier transzformáltját. Alkalmazva ezt a függvényt, szűrjük ki a ../data/zenebona
fileban található hangmintából a 20Hz-nél magasabb frekvenciájú komponenseket!
Először betöltjük a szükséges csomagokat
%pylab inline
from numpy.fft import *
Majd betöltjük az adatokat az adatfájlból
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)
Eztuán transzformáljuk a jelet, és a 20 Hz-nél magasabb összetevőket lenullázzuk:
Fjel = fft(adatok[:,1])
freq = fftfreq(len(adatok[:,0]), d=adatok[1,0] - adatok[0,0])
plot(abs(freq), abs(Fjel), label="elötte")
for i in range(len(Fjel)):
if abs(freq[i]) > 20:
Fjel[i] = 0
plot(abs(freq), abs(Fjel), label="utána")
title("A transzformált jel a frekvenciaszürés elött és után", size=18, y=1.05)
xlabel("frekvencia", size=12)
ylabel("transzformált jelerösség", size=12)
legend()
A szűrt jelet visszatranszformálva az inverztranszformációva, egy másik jelet kapunk, amiben már nincsenek 20 Hz-nél magasabb frekvenciák.
ujjel = ifft(Fjel)
plot(adatok[:,0], ujjel)
xlabel("idö", size=12)
ylabel("Jelerösség", size=12)
title("A szürt jel")