Vous êtes sur la page 1sur 2

Représentation fréquentielle Université de Genève, CUI

CVML, Imagerie Numérique


http://vision.unige.ch/
Fév 2003, Julien Kronegg

de signaux 1D avec Matlab


Un signal sinusoïdal est représenté par l’expression suivante :

x ( t ) = sin ( 2 ⋅ π ⋅ f ⋅ t ) avec f : fréquence du sinus [Hz]


t : temps [s] = k ⋅ Te
Te : période d'échantillonnage [s] = 1/ Fe
Fe : fréquence d'échantillonnage [Hz]

Dans Matlab, ce signal sera représenté par :

Fe=44100; % fréquence d'échantillonnage 44.1 kHz (standard audio)


Te=1/Fe; % période d’échantillonnage en [s]
f=440; % fréquence du signal de 440 Hz (en musique, la note la)
t=0:Te:5; % intervalle de temps de 0 à 5 secondes échantillonné à Te
x=sin(2*pi*f*t); % signal sinusoidal x(t)
sound(x,Fe); % jouer le son (l'affichage avec plot n'est pas conseillé
% car il y a ~200'000 échantillons)

La période d’échantillonnage va définir la fréquence maximale du signal (cf théorème de


Shanon : fmax=Fe/2).

La transformée de Fourier de ce signal est réalisée sur un certain nombre d’échantillons Nf.
Le résultat de la TF est un signal 1D de Nf coefficients. Chaque coefficient représente
l'amplitude d'un signal sinusoïdal d'une fréquence correspondant à la position de ce
coefficient. La précision de la TF (=plus petite différence notable entre deux fréquences) est la
largeur d'une bande de fréquence qui représentée par un coefficient. En effet, lorsque deux
signaux ont une fréquence qui est trop proche l'une de l'autre, ils sont représentés sur la TF par
le même coefficient. La précision de la TF, qui correspond à la est donnée par :

Fe
∆f = [Hz]
Nf

Le Nf ne doit pas être choisit trop grand pour deux raisons. La première, c'est que la TF est
relativement coûteuse en temps de calcul (O(n⋅log n)), ce qui fait que, pour un signal
échantillonné à 44.1 kHz, il faut 65'536 échantillons pour identifier une fréquence avec une
précision inférieure à 1 Hz. La seconde, c'est que la TF n'a de sens que si le signal est
périodique sur un grand nombre d'échantillons, ce qui n'est pas toujours le cas (p.ex. 65'536
échantillons = 1.5 seconde de signal).
Amplitude
La transformée de Fourier étant
d d
symétrique, elle possède une partie
positive et une partie négative. Un
fftshift est donc nécessaire pour
obtenir un graphique ressemblant à celui
0 Nf/2 Nf-1 fréq [éch.]
ci-contre.
-fmax 0 fmax fréq [Hz]
La fréquence de chaque pic d de la TF est donc donnée par :

freq= d ⋅ ∆f [Hz]

Etant donné la symétrie de la norme de la TF, seuls Nf/2 coefficients sont significatifs. La
fréquence maximale (correspondant bien au théorème de Shanon) est donc donnée par :

fmax=(Nf/2-1)*∆f ≅ Fe/2

Avec Matlab, cela donne :

i=1; % position de départ de l’analyse fréquentielle


Nf=8192; % 8192 échantillons
df=Fe/Nf % largeur de bande de freq d'un coef.
fmax=(Nf/2-1)*df; % fréquence maximale en Hz
ft=abs(fft(x(i:i+Nf-1))); % norme de la TF
plot(1:Nf, fftshift(ft)); % peut être affiché en Hz avec 0:df:fmax
[dummy d]=max(ft(1:Nf/2)); % recherche du coef maximum (=signal dominant)
d=d(1)-1; % -1 car les tableaux matlab débutent à 1
freq=d*df % freq dominante trouvée par la TF en Hz

En augmentant le nombre Nf, on peut obtenir la fréquence de départ (440 Hz) avec la
précision désirée (p.ex. Tableau 1 et Figure 1).

Nf ∆f
128 344.5
256 172.2
512 86.1
1024 43.1
2048 21.5
4096 10.8
8192 5.4
16384 2.7
32768 1.3
65536 0.67
131072 0.34
262144 0.17
524288 0.08
Tableau 1 – Exemple de précision pour un Fe=44.1 kHz et plusieurs valeurs de Nf

Figure 1 – A gauche, TF du signal sinusoïdal à 440 Hz. A droite, un agrandissement de la partie centrale. La
fréquence 0 Hz est en 4096=Nf/2, les deux pics en 4096±d (d=82). L'axe horizontal est en échantillons.

Vous aimerez peut-être aussi