2026. június 21., vasárnap

Fourier-transzformáció

Az alábbi kód bemutatja, hogyan generálhatunk egy 

összetett jelet, majd végezhetünk rajta Fourier-transzformációt.
-----------
import numpy as np
import matplotlib.pyplot as plt

# 1. Időtartomány beállítása
mintavetelezesi_frekvencia = 1000  # Hz
T = 1.0  # Teljes időtartam (másodperc)
t = np.linspace(0, T, int(mintavetelezesi_frekvencia * T), endpoint=False)

# 2. Összetett jel generálása
frekvencia1 = 50
frekvencia2 = 120
jel = np.sin(2 * np.pi * frekvencia1 * t) + 0.5 * np.sin(2 * np.pi * frekvencia2 * t)

# 3. Fourier-transzformáció végrehajtása
jel_fft = np.fft.fft(jel)
frekvenciak = np.fft.fftfreq(len(jel), 1 / mintavetelezesi_frekvencia)

# 4. Csak a pozitív frekvenciák megtartása
pozitiv_frekvenciak = frekvenciak[:len(frekvenciak)//2]
amplitudok = 2.0 / len(jel) * np.abs(jel_fft[:len(jel_fft)//2])

# 5. Eredmény kiírása
top_indexek = np.argsort(amplitudok)[-5:][::-1]
print("Legnagyobb FFT csúcsok:")
for i in top_indexek:
    print(f"{pozitiv_frekvenciak[i]:.1f} Hz -> {amplitudok[i]:.3f}")

# 6. Ábrázolás
plt.figure(figsize=(12, 6))

plt.subplot(2, 1, 1)
plt.plot(t[:200], jel[:200])
plt.title("Eredeti jel az időtartományban")
plt.xlabel("Idő (s)")
plt.ylabel("Amplitúdó")

plt.subplot(2, 1, 2)
plt.plot(pozitiv_frekvenciak, amplitudok)
plt.title("Frekvenciaspektrum (FFT)")
plt.xlabel("Frekvencia (Hz)")
plt.ylabel("Amplitúdó")
plt.grid(True)

plt.tight_layout()
plt.show()
-------------
Legnagyobb FFT csúcsok:
50.0 Hz -> 1.000
120.0 Hz -> 0.500
119.0 Hz -> 0.000
121.0 Hz -> 0.000
128.0 Hz -> 0.000

Nincsenek megjegyzések:

Megjegyzés küldése