MST : Ingénierie des Systèmes Embarqués, Réseaux
et Télécommunications (ISERT)
Module : TNS&DSP
Travaux Pratiques
TP 1 : TFD, FFT et convolution discrète
TP 2 : Filtres numériques RII classiques et fenêtres de
pondération
TP 3 : Analyse et synthèse des filtres numériques et filtrage
Adaptatif
Travaux Master
ISERT
Pratiques
TP 1 : Analyse spectrale par TFD et
Convolution discrète
Partie 1 : Transformées de Fourier discrète (TFD) et rapide (FFT)
1- Transformée de Fourier discrète (TFD) :
La transformée de Fourier discrète est définie traditionnellement par une somme de produits. Pour un
signal discret xp[n], sa TFD correspondante à Xp[k] est calculée par :
1
𝑋 [𝑘] = 𝑥 [𝑛]𝑒
𝑁
Où N est le nombre d’échantillons à considérer pour le calcul de la TFD et 0 ≤ 𝑘 ≤ 𝑁 − 1
1-- Ecrire une fonction MATLAB réalisant la TFD d’un signal discret quelconque en utilisant la définition
ci-dessus. Nommer cette fonction par « TFD ».
2-- Ecrire un script qui permet d’appliquer la TFD aux signaux suivants, de tracer dans le même graphe
leurs spectres (Annexe 1).
L'impulsion de Dirac.(T=1s, N=20 points)
Fonction porte. (N=11, Nf=512)
Signal sinusoïdale de fréquence f=10Hz (T=1, fe=150Hz, Nf=1024, N= ?)
Signal somme de 3 sinusoïdes de fréquences 5, 6 et 30 Hz avec des amplitudes respectives de
1, 0.5 et 0.2.
Prendre le nombre d’échantillons de ce signal Nf=512, Nf=1024 et Nf=2048.
3-- Interpréter les résultats obtenus dans la question précédente. C’est quoi l’effet du nombre
d’échantillons sur la résolution fréquentielles ?
2- Transformée de Fourier rapide (FFT) :
L’algorithme rapide de calcul de la TFD s’appelle la transformation de Fourier Rapide (Fast Fourier
Transform (FFT)). Pour calculer la FFT, le nombre de points N de la transformée doit être une puissance
de 2. La FFT réduit le nombre d’opérations nécessaires au calcul de la TFD. En effet, la complexité de la
TFD passe de N2 à N/2*log2(N). Ainsi, le gain en complexité se calcule par le rapport :
𝑁 2𝑁
=
𝑙𝑜𝑔 𝑁 𝑙𝑜𝑔 𝑁
4-- Utiliser la fonction FFT de MATLAB puis l’appliquer au signal « piano » (prendre N=512, 1024 et
2048). Comparer les résultats avec ceux obtenus par la fonction TFD.
Indication : La Commande de la FFT sur Matlab : S=fft(s)
2
Intervenants : Pr. Aïcha SAHEL
Hicham QABOUCHE 2022/2023 TNS&DSP
Travaux Master
ISERT
Pratiques
5-- Avec les commandes TIC et TOC de MATLAB, donner le temps de calcul pour la TFD et la FFT, puis
interpréter les résultats obtenus en explicitant la complexité des deux méthodes.
Partie 2 : Convolution discrète
Soit la réponse impulsionnelle d’un filtre h(n) représentée par la figure 1 sur M = 7 points. Nous allons
dans cette partie étudier le filtrage d’un signal x(n) de N échantillons par une convolution discrète, et
ceci au moyen de trois différentes méthodes :
Temporelle directe à l’aide de commande MATLAB prédéfinie,
Temporelle à l’aide d’une fonction MATLAB réalisée depuis sa définition théorique,
Fréquentielle.
Figure. 1 – Réponse impulsionnelle h(n)
La définition théorique d’un produit de convolution discrète temporelle d’un signal x(n) par un filtre de
réponse impulsionnelle h(n) est :
𝑦(𝑛) = ℎ(𝑖)𝑥(𝑛 − 𝑖) , n = 0 . . .N +M - 1
6-- Concevoir une fonction qui permet de réaliser la convolution dans le domaine temporel discret en se
référant à sa définition. Appeler cette fonction « conv_func ».
7-- Sachant que x(n) est une impulsion rectangulaire de longueur N = 11, écrire un script qui permet de :
Générer ce signal en l’affectant à un vecteur nommé « x »,
Définir la fonction de transfert du filtre h(n) et l’affecter à un vecteur « h »,
Calculer leur produit de convolution par la fonction « convolution » conçue dans la question 6
puis par la fonction prédéfinie sous Matlab conv(x,h) ;
Tracer les résultats obtenus.
Comparer les résultats obtenus.
8-- Ecrire un script MATLAB qui permet de faire une convolution dans le domaine fréquentiel par
l’utilisation de la fonction FFT des vecteurs « h » et « x ». Retourner le résultat de la convolution dans le
domaine temporel en utilisant la fonction FFT inverse, puis de le tracer.
Indication : La commande de la FFT inverse sur Matlab est ifft(x)
9-- Interpréter les résultats obtenus, en comparaison avec la convolution dans le domaine temporel.
3
Intervenants : Pr. Aïcha SAHEL
Hicham QABOUCHE 2022/2023 TNS&DSP
Travaux Master
ISERT
Pratiques
10-- Développer numériquement le produit de convolution pour comparer les résultats avec ceux
théoriques.
11-- Changer la réponse impulsionnelle h(n) du filtre illustré dans la Figure 1 de telle façon à avoir une
forme rectangulaire de longueur N = 11 (Au lieu de triangulaire). Ecrire un script pour calculer et tracer
le produit de convolution de la nouvelle fonction de transfert « h » par le même signal « x » (Impulsion
rectangulaire de longueur N = 11). Développer numériquement le produit de convolution pour
interpréter le résultat obtenu.
4
Intervenants : Pr. Aïcha SAHEL
Hicham QABOUCHE 2022/2023 TNS&DSP