Académique Documents
Professionnel Documents
Culture Documents
I. BUT DE LA MANIPULATION
Le but de la manipulation est d’étudier la transformée de Fourier en temps discret à l’aide de
Matlab, d’étudier les effets d'une fonction de fenêtrage sur le spectre d'un signal, de
comprendre les méthodes principales d’analyse temps-fréquence et de se familiariser avec
leur utilisation dans des cas concret, comme la détermination d’un numéro de téléphone ou la
vitesse d’un train à partir d’un enregistrement sonore.
L
L
f1 f2 f1 f2
Δf = f2 – f1 Δf = f2 – f1
(a) (b)
La hauteur des lobes secondaires agit directement sur la résolution en amplitude c'est-à-dire la
capacité à distinguer des raies spectrales de faibles amplitudes (figure 2). Plus leur hauteur est
grande, plus l’erreur est importante.
f1
f1
f2
f2
f1 f2 f1 f2
(a) (b)
Sous Matlab, des fonctions calculant les paramètres des fenêtres les plus courants sont
disponibles :
Boxcar pour une fenêtre rectangulaire, bartlett, hamming, hanning, blackman…
Hanning(N) est un vecteur colonne de taille N. Par exemple, hanning(5), retourne les 5
coefficients d’une fenêtre hanning.
>> hanning(5)
ans =
0.2500
0.7500
1.0000
0.7500
0.2500
1
On the use of windows for harmonic analysis with the discrete Fourier transform, F. J. Harris, Proceedings of
the IEEE, vol 66, N° 1, january 1978.
Transformée de Fourier discrète 55
II.2 Spectrogramme
II.2.1 Principe
Le spectrogramme est un diagramme associant à chaque instant τ d’un signal son spectre de
fréquence. C’est une représentation temps-fréquence.
Le spectrogramme représente le carré du module de la transformée de Fourier à court terme
(TFCT).
La TFCT découpe le signal en segment d’analyse au moyen d’une fenêtre w(t) où l’indice τ
représente le positionnement temporel de cette fenêtre. Sur chacune des segments obtenus on
applique la transformée de Fourier classique. τ représente également le positionnement du
spectre correspondant (figure 4). On obtient alors un ensemble de spectres locaux. La
juxtaposition de ces spectres locaux donne l’évolution du spectre en fonction du temps.
τ1 τ2 τ3 τ4 τ5 temps
chevauchement segment
segment
FFT
f FFT FFT
r FFT FFT
é
q
u
e
n
e
τ1 τ2 τ3 τ4 τ5 temps
x : le signal dont on souhaite trouver le spectrogramme. Par défaut, x est divisé en huit
segments. Chaque segment contient une estimation du contenu fréquentiel de x à court-terme
et localisé dans le temps.
window : décompose le signal en segments et chaque segment a une largeur spécifiée. La
fenêtre définit la largeur de chaque segment en termes d’échantillons.
noverlap : définit le nombre d’échantillons qui se chevauchent entre les segments adjacents.
La valeur de noverlap doit être inférieure à la longueur des segments. La valeur par défaut de
noverlap est la longueur (window)/2.
Nfft : spécifie le nombre de points de fréquence utilisés pour calculer la transformée de
Fourier discrète. Un nombre plus élevé de points de FFT donne une résolution de fréquence
plus élevée et montre des détails fins le long de l’axe des fréquences du spectrogramme.
Fs : La fréquence d’échantillonnage du signal. La valeur par défaut est 1Hz.
La touche 0 sur le clavier correspond donc au doublet (941 Hz, 1336 Hz). Le signal produit
est donc : s(t) = sin(2π 941 t) + sin(2π 1336 t).
2) Le signal xz[n] = [zeros(1,3) x zeros(1,3)], composé du signal x(n] précédent complété par
des zéros de manière à porter la durée totale à 16. Tracer son spectre.
3) Même question si la durée du signal est 32. Quel est l’intérêt d’ajouter des zéros ?
Transformée de Fourier discrète 57
M = 64 ;
hr = boxcar(M) ; plot(hr) ;
2) Compléter le script suivant pour trouver la transformée de Fourier discrète de ces fenêtres
sur N=1024 points fréquentiels. Tracer le module de la transformée de Fourier discrète en
linéaire et en dB.
N = 1024 ;
f = … ;
HR = fft(hr,N) ;
plot… ;
HRdB = 20*log10(abs(HR)) ;
plot… ;
b) Étudier l’effet des différentes fenêtres sur la séparation de ces deux signaux. Que vaut la
taille minimale Mmin théorique pour chaque fenêtre, qui permet de séparer les deux raies ?
%fonction de transfert
%signal filtré
figure(2)
plot(t,x);
xlabel('t','FontSize',12);
hold on
plot(t,y-x,'r');grid;