import numpy as np
import [Link] as plt
from [Link] import get_window
# Paramètres du signal
fs = 1000 # Fréquence d'échantillonnage (Hz)
N = 1024 # Nombre d'échantillons
t = [Link](N) / fs
f0 = 50.5 # Fréquence du signal sinusoïdal non multiple de fs/N
# Génération du signal sinusoïdal
signal = [Link](2 * [Link] * f0 * t)
# Appliquer les fenêtres
window_rect = [Link](N) # Fenêtre rectangulaire (pas de fenêtrage)
window_hann = get_window("hann", N) # Fenêtre de Hanning
# Fenêtrage du signal
signal_rect = signal * window_rect
signal_hann = signal * window_hann
# Calcul des FFT
fft_rect = [Link](signal_rect)
fft_hann = [Link](signal_hann)
# Fréquences associées
freqs = [Link](N, 1/fs)
# Spectres (on ne garde que la moitié utile)
half = N // 2
[Link](figsize=(12, 6))
[Link](freqs[:half], 20*np.log10([Link](fft_rect[:half]) / [Link]([Link](fft_rect))),
label='Rectangulaire')
[Link](freqs[:half], 20*np.log10([Link](fft_hann[:half]) / [Link]([Link](fft_hann))), label='Hanning')
[Link]("Comparaison de la fuite spectrale : Hanning vs Rectangulaire")
[Link]("Fréquence (Hz)")
[Link]("Amplitude (dB)")
[Link]()
[Link]()
plt.tight_layout()
[Link]()