Vous êtes sur la page 1sur 16

Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

III. Transformée de Fourier Discrète (TFD)

Dans la réalité, les signaux n'ont pas toujours une forme simple sen raison de la nature de l'information
qu'ils portent. Dans de tels cas, la représentation du signal en fonction de la fréquence est très utile. Pour cela,
on fait appel à la transformée de Fourier. Elle a pour but de mettre en évidence des caractéristiques du signal
non évidentes dans la représentation temporelle : les propriétés fréquentielles (spectrales). L’utilisation de cette
description fréquentielle permet en outre de caractériser simplement les filtres linéaires, et faciliter leur étude.

Dans le but de calculer la transformée de Fourier S(f) d’un signal s(t) à l’aide d’un ordinateur, celui-ci
n’ayant qu’un nombre limité de mots de taille finie, on est amené à discrétiser le signal (échantillonnage), à
tronquer temporellement ce signal et à discrétiser sa transformée de Fourier.

1. Transformée de Fourier à temps discret (TFTD)

Lorsque le signal à traiter n’est plus analogique mais numérique, la relation de la TF devient :
. +∞
TF {s (t )} = S ( f ) = ∫ s(t ) e − 2π j f t dt
−∞

+∞ +∞ +∞ +∞

⇒ S e ( f ) = ∫ se (t ) e −2π j f t dt = ∫ ∑ s(nTe )δ (t − nTe ) e −2π j f t dt = ∑ s(nT )e e


− 2π j f nTe

−∞ − ∞n = −∞ n = −∞

L'échantillonnage périodise le spectre du signal avec une période de répétition fe Se(f)=Se(f+fe), par
ailleurs, l'amplitude est multiplié par un facteur fe. Sachant que tout signal périodique peut être décomposé en
séries de Fourier, on a :
fe / 2
+∞ 1
s (nTe ) = C n = ∫S ( f ) e 2π j n Te f df
Se ( f ) = ∑ C n e −2π j n Te f
n = −∞
Avec
fe − fe / 2
e

Cette transformée de Fourier appliquée aux signaux discrets est donc une fonction à fréquence continue,
périodique de période fe. Il est d’usage de la représenter sur un intervalle de longueur fe, de -fe/2 à +fe/2.

Cependant, si on veut calculer la TF d'un signal discret à l'aide d'un calculateur, on se retrouve confronté
aux problèmes suivants : Le calcul de la TF nécessite une infinité de points de mesures s(n) (pas toujours
possible dans la pratique : contraintes temps réel, etc.). En outre, le calculateur ne peut calculer une TFTD car sa
réponse fréquentielle est forcément discrète = un nombre fini de points fréquentiel alors que f varie
continûment. La solution est de limiter la durée de s(n) i.e. considérer un nombre fini N de points temporels et
de discrétiser la fréquence (considérer un nombre fini L de points fréquentiels) ⇒ TFD.

2. Transformée de Fourier discrète (TFD)

Cette transformée, popularisée par son calcul rapide (TFR ou FFT : Fast Fourier Transform), fait
correspondre une suite de N valeurs à une autre de suite de N valeurs numériques également.

22
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

On considère un signal numérique s(n) défini par N échantillons temporels, obtenus par échantillonnage
avec la période Te. La numérisation du signal S(f) passe par l'échantillonnage de S(f). On divise l'intervalle fe
par N, ainsi S(f) est échantillonné à la cadence ∆f=fe/N=1/NTe. Ce dernier résultat entraîne une périodicité du
signal temporel de T0=1/∆f = NTe.

Sachant que fe = N.∆f, les formules précédentes deviennent :


N −1
N −1 N −1 
S e (kf e / N ) = ∑ s (n)e − 2π j n Te k fe / N
= ∑ s ( n )e − 2π j n k / N
= S e (k )  S k = ∑ s n e − 2π j n k / N
n =0 n =0 ⇒ n =0
 1 N / 2−1

Et s ( n) =
1 N / 2−1

∑S e (k ) e 2π j n k / N
.∆f =
1 N / 2−1

∑S e (k ) e 2π j n k / N 

sn =
N
∑S
k =− N / 2
k e 2π j n k / N
fe k =− N / 2 N k =− N / 2

Ce qui nous permet d'obtenir la TFD et la TFD inverse :

N −1

 S k = ∑
n =0
s n e − 2π j n k / N
 1 N / 2 −1
 sn =
 ∑
N k =− N / 2
S k e 2π j n k / N

Il faut bien remarquer que l’on perd toute référence aux valeurs des instants correspondant aux
échantillons. Nous avons une relation entre une suite indexée par une variable entière n et une suite indexée par
k. Les N termes S(k) correspondent à une approximation (à un facteur multiplicatif Te près) de la transformée
de Fourier de ce signal aux N points de fréquence k ∆f, avec k entre 0 et N −1, c'est-à-dire f entre 0 et fe.

23
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

Exemple

Soit le signal s(n)= 1 pour n = 0 et n= 3 et 0 ailleurs. Calculons la TFD d'ordre 4 de s(n)

Calcul de la TFD sur 4 échantillons (4 échantillons de la TFD à partir de 4 échantillons du signal)

Modules de ces 4 échantillons :

Arguments de ces quatre échantillons :

Remarques

sn est périodique de période N et Sk est périodique de période N :

N −1 2π ( n + N ) k N −1 2πnk 2πNk
1 j 1 j j
sn + N =
N
∑ Sk e
k =0
N
=
N
∑ Sk e
k =0
N
e N
= sn

24
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

N −1 N −1
1
∑ = ∑S
2 2
Par ailleurs, comme l'énergie se conserve, on obtient : sn k
0 N 0

Autres propriétés :Toutes les propriétés se déduisent des propriétés de la transformée continue en se rappelant
que chaque signal manipulé, de durée finie, doit être considéré comme une période d'un signal périodique, et
cela en temps et en fréquence. La conséquence en est que la translation d'un signal (qui intervient aussi dans les
opérations de convolution ou de corrélation) se traduit par un décalage circulaire

o Linéarité : ax1 (n) + bx2 (n) → aX1 (k ) + bX 2 (k )


TF

− 2π j k m
o Décalage temporel : x(n − m) →
TF
X ( f )e N

2π j k 0 n
o Décalage fréquentiel : x ( n )e N
→
TF
X (k − k 0 )

o Dualité temps-fréquence : x(n) → X (k ) ⇒ X (n) → N.x(−k )


TF TF

1
o Changement d'échelle : x(an) →
TF
X (k / a )
a

o Convolution périodique : x(n) ∗ h(n) → X (k ).H (k )


TF

o δ (n) →1
TF

2. TFD des signaux de longueur illimitée

Le nombre d’éléments d’une séquence transformée par la TFD est implicitement limité, la fenêtre
intrinsèque à la transformée discrète de Fourier est donc la fenêtre rectangulaire de durée T0=NTe. En termes de
contenu spectral, le fenêtrage n’est pas neutre et il introduit nécessairement une distorsion des composantes. La
troncation du signal échantillonné par une fenêtre de largeur T0 a pour effet de convoluer le spectre avec un
sinus cardinal qui s’annule tous les 1/T0 avec T0 = NTe soit tous les fe/N.

Exemple 1 : Module de la TFD de {s(n) = e2πjf0n}, pour n= {0, . . . ,N −


1}, avec N = 16 et f0 = 0,2. En pointillé, le module de la TFTD de s(n).
L’allure de S(k) fait apparaître un lobe principal de largeur 2/N (ou
2fe/N) autour de la fréquence f0 et des lobes secondaires de largeur
1/N (ou fe/N).

Exemple 2:

25
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

Dans le cas d’un signal périodique, le spectre, obtenu par transformée de Fourier discrète, est donc un
ensemble de fonctions sinc(T0 f ) centrées sur les fréquences qui composent le signal théorique initial. Ainsi cette
qualité du résultat peut être incommode pour l’étude du spectre, en particulier lorsque le spectre est composé
de nombreuses raies, proches les unes des autres. L'importance de ses lobes peut être réduite par l'emploi
d'autres fenêtres.

La précision fréquentielle dépend du nombre de points adoptés pour le calcul. Les points en fréquences,
sont espacés de 1/N (ou fe/N). Considérons l'exemple suivant:

s(n)= A0 e2πjf0n + A0 e2πjf11n pour n (0:N-1) où f0 et f1 ∈ [-fe/2, fe/2]

Le tracé du spectre par TFD montre que si l'écart en valeur absolue entre f0 et f1 est supérieur à fe/N, il
sera possible de distinguer les deux fréquences sur le tracé. Cette résolution en fréquence est liée au nombre de
points du signal.

Quant à la précision, elle peut être améliorée par la technique du zéro-padding : on calcule la TFD sur un
nombre N pouvant être largement supérieur au nombre de points disponible du signal.

Exemple

On considère maintenant l'exemple suivant :

s(n)= A0 e2πjf0n + A0 e2πjf11n pour n (0:N-1) où A0> A1

26
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

Un masquage du lobe principal de la composante en f1 peut survenir en raison des ondulations présentes
dans le spectre de A0 exp(2j̟f0n). Une « fréquence » d’amplitude faible au voisinage d’une d’amplitude plus
élevée sera masquée par le premier lobe secondaire. La séparation dans ce cas peut être améliorée par l’emploi
de fenêtres de pondération (Hamming…). Mais c’est au détriment de la séparation de « fréquences » très
voisines mais d’amplitude semblables car les 2 raies seront confondues dans un lobe principal élargi par la
fenêtre (la fenêtre rectangulaire a le lobe principal le plus étroit de toutes les fenêtres).

3. Fenêtres de pondération

Lors de l’analyse spectrale d’un signal de longue durée, nous n’avons accès, en pratique, qu’à une portion
limitée de ce signal. Le spectre obtenu correspond donc au spectre du signal à analyser auquel une « fenêtre » a
été préalablement multipliée. Pour ne pas altérer le spectre original, il faudrait que WR (f) (spectre de la fenêtre)
se rapproche le plus possible d’une distribution de Dirac. La distribution de Dirac étant l’élément neutre du
produit de convolution. Il y a deux éléments importants pour se rapprocher de la distribution de Dirac. La
finesse du lobe principale et la hauteur des lobes secondaires.

En effet, plus la largeur du pic principal est fine, plus la résolution est
grande, c’est-à-dire que l’on peut séparer des raies proches. Et plus les
lobes secondaires sont élevés plus on dégrade la forme du spectre. Il peut y
avoir apparition de pics fantômes. En outre, l’amplitude des lobes latéraux
détermine l’étalement spectral de la fenêtre. Un étalement spectral trop
grand nuira à la détection d’un signal d’amplitude faible en présence d’un
signal d’amplitude élevée.

- Fenêtre rectangulaire

Pour la fenêtre rectangulaire, on voit que la finesse du lobe principale peut être
réglée par le nombre d’échantillons N. Ainsi, plus on observe le signal
longtemps, plus la résolution du spectre augmente ce qui parait logique. Par
contre, λR varie très peu en fonction de N (-13dB), ce qui signifie qu’une fenêtre
rectangulaire apporte toujours une distorsion du spectre.

- Fenêtre Triangulaire

Pour obtenir la transformée de Fourier de la fenêtre triangulaire de largeur N,


rappelons que la convolution de deux signaux rectangulaires donne un signal
triangulaire. Ainsi, on peut exprimer cette fenêtre sous la forme dune
convolution de deux rectangles de largeur N/2. On observe une atténuation
des lobes secondaires (-24dB) par rapport à la fenêtre rectangulaire.
Malheureusement, ceci se fait au prix de l’élargissement du pic central (4/N).

- Autres fenêtres

 2πn 4πn N −1
0.42 + 0.5 cos( ) + 0.08cos( ) pour n ≤
wBlack (n) =  N −1 N −1 2
0 ailleurs
27
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

 2πn N −1
0.54 + 0.46 cos( ) pour n ≤
wHam (n) =  N −1 2
0 ailleurs

 I 0 (β ) N −1
 pour n ≤
wKais (n) =  I 0 (α ) 2
0
 ailleurs

2
+∞ 
1  x 
k
2n 2
où α est un paramètre, β =α 1 − ( ) et I 0 ( x) = 1 + ∑    
N −1  k!  2  
k =1 

28
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

Dans un problème d’analyse spectrale, on utilise généralement plusieurs fenêtres l’une après l’autre afin
d’obtenir un bon compromis résolution/déformation.

4. Calcul de la FFT ou TFR

La TFD est restée un outil peu utilisée jusqu’à l’apparition d’algorithmes « rapides » permettant son
calcul. Le plus connu est du à Cooley et Tuckey et date de 1965. Le calcul direct de la TFD sur N points nécessite
2N2 multiplications et 2N(N-1) additions. L’algorithme proposé réduit à Nlog2(N) le nombre d’opérations. Sans
nuire à la généralité, prenons le cas de N=8. Il faut calculer :

N −1 2π n k 7 2π n k
−j −j
S k = ∑ sne N
= ∑ sn e N

n =0 n =0

 2π  7
Soit : WN = exp − j  alors S k = ∑ s nWNnk
 N  n =0
Pour N=8, explicitons la relation précédente :

 S 0   W80 W80 W80 W80 W80 W80 W80 W80   s0 


S   0  
 1   W8 W81 W82 W83 W84 W85 W86 W87   s1 
 S 2   W80 W82 W84 W86 W88 W810 W812 W814   s2 
   0  
 S 3  =  W8 W83 W86 W89 W812 W815 W818 W821   s3 
S   W 0 W84 W88 W812 W816 W820 W824 W828   s4 
 4   80  
 S 5   W8 W85 W810 W815 W820 W825 W830 W835   s5 
S   W 0 W86 W812 W818 W824 W830 W836 W842   s6 
 6  8  
 S 7   W80 W87 W814 W821 W828 W835 W842 W849   s7 

Les facteurs Wn présentent un certain nombre de propriétés dont certaines sont mises à profit dans
l’algorithme : n+ N
nN
WN = 1, WN
N /2 n
= −1, WN = WN

 S 0  W80 W80 W80 W80 W80 W80 W80 W80   s0 


   0  
 S1  W8 W81 W82 W83 W84 W85 W86 W87   s1 
 S 2  W80 W82 W84 W86 W80 W82 W84 W86   s2 
   0  
 S 3  = W8 W83 W86 W81 W84 W87 W82 W85   s3 
 S  W 0 W84 W80 W84 W80 W84 W80 W84   s4 
 4   80  
 S 5  W8 W85 W82 W87 W84 W81 W86 W83   s5 
 S  W 0 W86 W84 W82 W80 W86 W84 W82   s6 
 6  8  
 S 7  W80 W87 W86 W85 W84 W83 W82 W81   s7 

L’algorithme suppose que N est pair : posons N=2 P. Introduisons les 2 sous-suites de sn en fonction de la

un = {s2 n }
parité de n.
n = 0 ,..., P −1

vn = {s2 n +1}
n = 0,..., P −1 29
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

N −1 P −1 P −1
On obtient ainsi : S k = ∑ snWNnk = ∑ uiW22Pik + ∑ viW2(P2i +1) k
n=0 i =0 i =0
P −1 P −1
S k = ∑ uiWPik + WNk ∑ viWPik
i =0 i =0

S k = U k + W Vk k
N

N −1 P −1 P −1
Par ailleurs, S ( k + P ) = ∑ snWN( k + P ) n = ∑ uiW22Pi ( k + P ) + ∑ viW2(P2i +1)( k + P )
n =0 i =0 i =0
P −1 P −1
S ( k + P ) = ∑ uiWPikWPiP + WNkWNP ∑ viWPikWPiP
i =0 i =0
P −1 P −1
S ( k + P ) = ∑ uiWPik .1 + WNk (−1)∑ viWPik .1
i =0 i =0

S ( k + P ) = U k − W Vk k
N

Le calcul de la FFT revient donc à calculer Uk et Vk qui sont les TFD sur P points des suites de termes de
rang pair et impair. Le calcul revient au schéma suivant :

N/2 Rxy( t
- -1 n
n - 3
k)
N/ N
2
k

-
3N/ N/2
N/2
Sin

On s’aperçoit sur le schéma précédent qu’il ne reste qu’à exprimer les Uk et Vk. Or, ce sont des TFD sur P
points, qui peuvent reprendre le même schéma que précédemment. Cela est faisable si P est pair. On peut
réitérer le processus à chaque sous-étage, si cette condition est à chaque fois vérifiée, donc si N au départ est
une puissance de 2. En pratique, lorsque cela n’est pas le cas, les suites d’échantillons sont complétées par des
zéros jusqu’à la puissance de 2 immédiatement supérieure. (zero padding).

Il y a d’autres algorithmes qui ne présentent pas cette contrainte (mais en


présentent d’autres). L’algorithme ainsi mis en œuvre présente des motifs à
croisement appelé « algorithme papillon ». Notons l’entrelacement temporel qui
« bouscule » l’ordre d’apparition des échantillons.

30
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

Avec cette représentation, l’algorithme FFT se représente par :

L’algorithme de FFT peut s’écrire sous forme matricielle. On obtient :

Notons aussi que l’algorithme présenté est dit à entrelacement temporel. Une version tout à fait
symétrique et au même coût, opère les permutations sur les S et non les s : l’algorithme est dit à entrelacement
fréquentiel. Il y a d'autres variantes de l'algorithme FFT (base 4, etc.)

31
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

Série n°3

1.Calculer la transformée de Fourier à temps discret (TFTD) de x(n)=δ(n) + 6δ(n –1) + 3δ(n –2)

2. Calculer la TFD du signal s(n)=n pour N=2, 3, 4, 8.

3.Calculer la transformée de Fourier discrète (TFD) de la suite x(n) formée de N = 8 points (n ∈ [0,7]),obtenue en
échantillonnant à la fréquence fe = 16 Hz le signal s(t) = 2sin(8̟t)+8cos(4̟t)

4. Etant donné les signaux s(n)={1,-2,3,2} et v(n) ={-2,1,2,3}, déterminer w(n)=s(n)*v(n) par
- la méthode directe
- la méthode de la TFD

5.On a le signal suivant x(n)=e-anU(n), avec U(n) l’échelon unité, échantillonné à Te = 1.


- Calculer la TFTD
- Calculer la TDF et comparer

6. Soit x(n)=1/N pour 0 ≤ n ≤N-1 et 0 ailleurs.


- Calculer et tracer la TFTD
- Calculer sa TFD X(k) pour N=4.

Solutions

1. X(f)=1+6.e-2πjf+3.e-4πjf

2.N=2, Xk=[1, -1] N=3, Xk= 3, 3 (−1 − 3 j ), 3 (−1 + 3 j ) N=4, Xk= [6, 2 j − 2 , − 2, − 2 − 2 j ]
 2 
 2 

 S 0   W80 W80 W80 W80 W80 W80 W80 W80   s0   S 0  W80 W80 W80 W80 W80 W80 W80 W80   s 0 
S   0       
 1   W8 W81 W82 W83 W84 W85 W86 W87   s1   S1  W80 W81 W82 W83 W84 W85 W86 W87   s1 
 S 2   W80 W82 W84 W86 W88 W810 W812 W814   s2   S 2  W80 W82 W84 W86 W80 W82 W84 W86   s 2 
3.  S3   W 0 W83 W86 W89 W812 W815 W818
    
W821   s3  =  S 3  W80 W83 W86 W81 W84 W87 W82
 
W85   s3 
 = 8 =
S   W 0 W84 W88 W812 W816 W820 W824 W828   s4   S 4  W80 W84 W80 W84 W80 W84 W80 W84   s 4 
 4   80        
 S 5   W8 W85 W810 W815 W820 W825 W830 W835   s5   S 5  W80 W85 W82 W87 W84 W81 W86 W83   s5 
S   W 0 W86 W812 W818 W824 W830 W836 W842   s6   S 6  W80 W86 W84 W82 W80 W86 W84 W82   s 6 
 6  8       
 S 7   W80 W87 W814 W821 W828 W835 W842 W849   s7   S 7  W80 W87 W86 W85 W84 W83 W82 W81   s 7 

[
Avec s n = 8 2 + 4 2 0 − 2 − 4 2 − 8 2 − 4 2 0 − 2 + 4 2 ]
et W8k = 1 2
(1 − j ) − j
2
(−1 − j ) − 1
2
(−1 − j ) j
2 
(1 + j )
 2 2 2 2 

4.Convolution circulaire w(n)=s(n)*v(n) =[0, 18, 0, -2]


32
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

W40 W40 W40 W40  W40 W40 W40 W40  1 1 1 1 


 0 1   3 1 − j − 1 j 
W4 W4 W42 W43  W40 W41 W42 W4   
= =
W40 W42 W44 W46  W40 W42 W4à W42  1 − 1 1 − 1 
 0     
W4 W4
3
W46 W49  W40 W43 W42 W41  1 j − 1 − j 

Sk=[4, 4j-2, 4, -2-4j] Vk=[4, -4+2j, -4, -4-2j] Wk=[16, -20j, -16, 20j]⇒ w(n)=[0, 18, 0, -2]

1 1 − e − aN
5. TFTD X(f )= TFD X (k ) =
1 − e − a − 2π j f 1 − e − a − 2π j k / N

1 sin(πk ) −π j k ( N −1) / N 1 sin(πk ) −3 π j k / 4


6. X (k ) = e X (k ) = e
N sin(πk / N ) 4 sin(πk / 4)

Exercices supplémentaires

1. Calculer la Transformée de Fourier Discrète de la suite comportant N = 16 termestels que :


x (0) = x (1) = x (2) = x (14) = x (15) = 1 x (n) = 0 pour 3 ≤ n ≤ 13
et de la suite :x (0) = x (1) = x (2) = x (3) = x (4) = 1x (n) = 0 pour 5 ≤ n ≤ 15
- Comparer les résultats obtenus.
- Effectuer la Transformée inverse sur ces résultats.

2.Calculer la TFD de la suite x(n) formée de N =24 points obtenus en échantillonnant le signal
x(t)=3.sin(8̟t)+4.cos(6̟t) à la fréquencefe = 24 Hz.

3. Calculer et tracer le module de la TFD des signaux suivants :

 (n + 1) 0 si n = 4k
 si n = 0,..,3 
h(n) =  10 h(n) = 1 si n = 4k + 1,4k + 3
 0 aileurs 2 si n = 4k + 2

33
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

TP n°2 : TFD

Rappels

1. Transformée de Fourier Discrète


La TFD d’ordre N d’un signal numérique s(kTe), k=0…N-1 est définie par :
 k  N −1
S (k ) = S  f e  = ∑ s (nTe )e − 2π j k n / N , k = − N / 2.......N / 2
 N  n =0

Sa transformée inverse est donnée par:


1 N / 2−1
s(n) = s (nTe ) = ∑ S (kf e / N )e 2π j k n / N , n = 0.......N − 1
N k =− N / 2
Par abus d’écriture et pour simplifier on note s(k) et S(n) le signal et sa TFD en omettant les facteurs Te et
Fe. N est souvent une puissance de 2 et dans ce cas il ya un algorithme rapide de calcul des N coefficients
de la TFD. On parle alors de FFT (Fast Fourier Transform). Matlab fournit la fonction fftpour calculer la
transformée de Fourier complexe d’un vecteur. Ainsi aux coefficients s(1)…s(N) correspondent par TFD les
coefficients S(1)…S(N). Il suffit d'écrire fft(s,N). La transformée inverse est donnée par ifft(s,N). Le vecteur
signal étant de dimension finie, c'est la transformée discrète qui est calculée. Si N est la longueur du signal,
le spectre sera un vecteur complexe de même longueur qui pourra être représenté en coordonnées
cartésiennes (partie réelle et imaginaire fonction real et imag), ou en coordonnées polaires (module et
phase, fonction matlab abs et angle ou unwrap).

Prenons le cas d’une sinusoïde, les fréquences vont être graduées en Hz en supposant une
fréquence d’échantillonnage fe de 1Kz, les fréquences supérieures à 500Hz correspondent aux fréquences
négatives du spectre. Pour approximer la Transformée de Fourier continue d’un signal x(t), représenté
suivant un pas Te, on utilise la commande : fx= fftshift( fft(x)). On remarquera que la TF est une fonction
complexe et que la fonction ainsi obtenue décrit la TF de x(t) entre –1/(2 Te) et 1/(2 Te) par pas de 1/(nTe)
où n est le nombre de points constituant le signal x(t). La commande fftcodant les fréquences positives sur
les n/2 premières valeurs du signal et les valeurs négatives entre n/2+1 et n, la commande fftshift permet
de les inverser.

2. Exemple d'utilisation de la FFT sous matlab


Taper le programme suivant et commenterles graphes obtenus

clc; clear all


N=100; fo=1000; Fe=8000; Te=1/Fe;
n=0:1:N-1;
x=sin(2*pi*fo*n*Te);
subplot(2,2,1);
t=Te*[0:1:N-1];
34
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

plot(t,x,'gx:'); grid;
y=fft(x);
axe_FF=Fe*(0:1/N:1-(1/N));
subplot(2,2,2);plot(axe_FF,abs(y/N),'b.:'); grid;
title('Transformée de Fourier Discrète par FFT du signal entre 0 et fe')
xlabel('fréquence'); ylabel('Module du spectre');
subplot(2,2,3);
y_dec=fftshift(y);
axe_freq=Fe*(-1/2:1/N:1/2-(1/N));
plot(axe_freq,abs(y_dec/N),'b.:'); grid;
title('Transformée de Fourier Discrète par FFT du signal entre -fe/2 et fe/2')
xlabel('fréquence'); ylabel('Module du spectre');
%FFT inverse %
FFT_INV=ifft(y);
subplot(2,2,4);
plot(t,FFT_INV,'bx:'); grid;
title('Transformée de Fourier Discrète inverse du signal N=100')
xlabel('temps'); ylabel('Amplitude');

−a t
I. Soit la fonction x(t ) = e a>0
1- Tracer le signal x(t) entre –5 et 5 pour a = 1, avec un pas de temps Te = 0.01 s (Utiliser la fonction length pour
connaitre la taille (N) de x)
2- Tracer le module de la transformée de Fourier.
3- Illustrer la propriété de décalage fréquentiel de la TF en représentant le module de la TF de x(t) × e2Πjfotavec
fo=5 Hz.
4- Vérifier la relation de Parseval.

II. Transformée de Fourier d'une porte


clc; clear all
N=10; Fe=1 ; Te=1/Fe;
t=Te*[1:1:N]; x=ones(1,N);
subplot(2,1,1); plot(t,x,'gx:'); grid;
NF=100; y=fft(x,NF); y_dec=fftshift(y);
subplot(2,1,2); axe_freq=Fe*(-1/2:1/NF:1/2-(1/NF));
plot(axe_freq,abs(y_dec/N),'b.:'); grid;
1- Quelle est la largeur ∆f du lobe principal ? (utiliser ginput)
2- Afficher le module de la transformée de Fourier en décibels. Utiliser la fonction 'log10' pour afficher les
échelles sur le graphique.
3- Vérifier que l'on a bien environ 13 dB entre le max du lobe principal et le max du lobe secondaire.
4- Vérifier que pour une porte de largeur P = 50 échantillons, on a toujours environ 13 dB.

III. Transformée de Fourier d'une fenêtre triangulaire


clc; clear all
N=10; Fe=1 ; Te=1/Fe;
x=conv(ones(1,N/2),ones(1,N/2));
subplot(2,1,1); plot(x); grid;
NF=100; y=fft(x,NF); y_dec=fftshift(y);
subplot(2,1,2); axe_freq=Fe*(-1/2:1/NF:1/2-(1/NF));
plot(axe_freq,abs(y_dec/N),'b.:'); grid;
1- Afficher le module de la transformée de Fourier sur une échelle linéaire puis en dB.
2- Quelle est la largeur du lobe principal ?
3- Quel est le rapport en dB entre le max du lobe principal et le max du lobe secondaire ?

35
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

TP n°3 : Fenêtrage

But : Mettre en évidence les propriétés du fenêtrage (Triangulaire, Hanning, Blackman, etc.)

Prog1Commenter les graphes obtenus par ce programme :


clear all; close all;
Nt=50; Fe=8000; Te=1/Fe; f0=1680;
t=(0:Nt-1)*Te; x=exp(2*pi*j*f0*t);
y=fft(x); yy=fftshift(y/Nt); axe_f=Fe*(-1/2:1/Nt:1/2-(1/Nt));
subplot(2,2,1); stem(axe_f,abs(yy)); grid; title('TFD sur 50 pts')
N=100;
y=fft(x,N); yy=fftshift(y/Nt); axe_f=Fe*(-1/2:1/N:1/2-(1/N));
subplot(2,2,2); plot(axe_f,abs(yy)); grid; title('TFD sur 100 pts')
N=1000;
y=fft(x,N); yy=fftshift(y/Nt); axe_f=Fe*(-1/2:1/N:1/2-(1/N));
subplot(2,2,3); plot(axe_f,abs(yy)); grid; title('TFD sur 1000 pts')
N=50;
f0=1600;
x=exp(2*pi*j*f0*t);
y=fft(x); yy=fftshift(y/Nt); axe_f=Fe*(-1/2:1/N:1/2-(1/N));
subplot(2,2,4); stem(axe_f,abs(yy)); grid; title('TFD sur 50 pts')

1. Quelle fenêtre est utilisée par ce programme ? Citer ses caractéristiques (résolution fréquentielle,
atténuation lobes secondaires), avantages et inconvénients.
2. Que est l‘intérêt d’augmenter N ? Comment appelle-t-on cette technique ?
3. Expliquer la TFD obtenue pour f0=1600(disparition des lobes secondaires).
4. Notez que la résolution fréquentielle est toujours la même (elle dépend de Nt et non de N).

Prog 2
clc; clear all; close all;
Nt=50; Fe=8000; Te=1/Fe; f0=1680;
t=(0:Nt-1)*Te; x=exp(2*pi*j*f0*t);
figure;
N=500;
y=fft(x,N); yy=fftshift(y/Nt); axe_f=Fe*(-1/2:1/N:1/2-(1/N));
plot(axe_f,abs(yy),'b'); grid; title('TFD Fenêtre réctangulaire'); hold on;
fen=hanning(Nt);
xx=x.*fen'; y=fft(xx,N); yy=fftshift(y/Nt);
plot(axe_f,abs(yy),'r'); grid; title('TFD Fenêtre Hanning')
fen=triang(Nt);
xx=x.*fen'; y=fft(xx,N); yy=fftshift(y/Nt);
plot(axe_f,abs(yy),'g'); grid; title('TFD Fenêtre triangulaire ')
fen=blackman(Nt);
xx=x.*fen'; y=fft(xx,N); yy=fftshift(y/Nt);
plot(axe_f,abs(yy),'m'); grid; title('TFD Fenêtre Blackman ')

1. Faites varier N (100 et 1000) et commenter. Quel est le rôle de N ?


1. Calculer la largeur du lobe principale pour chaque fenêtre en fonction de fe et Nt
2. Comparer et commenter les différents graphes.

36
F.E.I., U.S.T.H.B.
Analyse et Filtrage des signaux numériques M1 ST/TRM (2014/2015)

Prog 3 : Calculer la transformée de Fourier discrète d'une paire d'exponentielles complexes.


On générer 100 échantillons d'une somme de deux exponentielles complexes de fréquences F1 = 1680 Hz et F2 =
1780 Hzéchantillonnées à Fe = 8 kHz, et de même amplitude.
On calculer la TFD du signal sur N=128, 256 et 1024points fréquentiels, et on affiche le module.
clc; clear all; close all;
Nt=100; Fe=8000; Te=1/Fe; f0=1680; f1=1880;A1=1; A2=0.2;
t=(0:Nt-1)*Te; x=A1*exp(2*pi*j*f0*t)+A2*exp(2*pi*j*f1*t);
figure (1);subplot(2,2,1); plot(t,real(x)); grid;
N=128;
y=fft(x,N); yy=fftshift(y/Nt); axefreq=Fe*(-1/2:1/N:1/2-(1/N));
subplot(2,2,2); plot(axefreq,abs(yy)); grid; title('TFD sur 128 pts')
N=256;
y=fft(x,N); yy=fftshift(y/Nt); axefreq=Fe*(-1/2:1/N:1/2-(1/N));
subplot(2,2,3); plot(axefreq,abs(yy)); grid; title('TFD sur 256 pts')
N=1024;
y=fft(x,N); yy=fftshift(y/Nt); axefreq=Fe*(-1/2:1/N:1/2-(1/N));
subplot(2,2,4); plot(axefreq,abs(yy)); grid; title('TFD sur 1024 pts')

1. Pour quelle valeur de N, les sinusoïdes sont résolues ?


2. Calculer la TFD de x pour N=1024 en employant d'autres fenêtres (triang, hanning, blackman)
3. Reprendre la question 2 en prenant F1 = 1680 Hz et F2 = 1880 Hz avec des amplitudes A1=1 et A2=0.2
4. Commenter les graphes obtenus en 2 et 3.

37
F.E.I., U.S.T.H.B.

Vous aimerez peut-être aussi