Vous êtes sur la page 1sur 3

Travaux pratiques :Applications de la TFR

1 TFD et convolution discrète


On s’int´eresse dans cette section a` l’op´eration de convolution entre deux signaux a` temps discret, dite
convolution discr`ete, et sa relation avec la TFD a` travers le th´eor`eme de Plancherel. On rappelle que
pour deux signaux h[n] et x[n] de longueurs respectives Nh et Nx cette convolution, qu’on note y[n] = h[n] ∗
x[n] = x[n] ∗ h[n], est d´efinie par :

Nh−1 Nx−1

y[n] = X h[k] · x[n − k] = X x[k] · h[n − k], ∀ n ∈ [0,Nh + Nx − 2]. (1)


k=0 k=0

On rappelle ´egalement qu’il existe deux types de convolution discr`ete, suivant l’approche qu’on utilise
pour calculer y[n]. En effet, en consid´erant que nos signaux discrets sont des s´equences num´eriques
causales et de dur´ee limit´ee on parle de convolution dite lin´eaire ou ap´eriodique, et ce par opposition
a` la convolution dite circulaire ou p´eriodique pour laquelle chacun de nos signaux discrets est vu
comme une suite num´erique qui est p´eriodique et donc de dur´ee illimit´ee et non-causale. Dans tout ce
TP on s’int´eresse a` la convolution lin´eaire qui traduit r´eellement l’op´eration de filtrage lin´eaire qu’on
rencontre dans plusieurs domaines de la physique, dont celui de l’´electronique.

1.1 TFD et th´eor`eme de Plancherel


1. (a) En utilisant la fonction ”conv” 1 , calculer le signal y[n] pour h[n] = δ[n−n0] et x[n] un signal
al´eatoire. Utiliser pour cela la syntaxe suivante :
h = [zeros(1,Nh − 1), 1] et x = rand(1,Nx)

(b) Repr´esenter les signaux h[n], x[n] et y[n] sur une mˆeme figure s´epar´ement2. Commenter.

2. Reprendre la question 1 pour h[n] et x[n] des signaux al´eatoires de longueurs quelconques.

3. (a) Compl´eter les signaux h[n] et x[n] par des z´eros pour obtenir les nouveaux signaux h2[n] et
x2[n] d´efinis par la syntaxe suivante :
h2 = [h,zeros(1,Nx − 1)] et x2 = [x,zeros(1,Nh − 1)]

(b) Calculer les TFR des signaux h2[n], x2[n] et y[n], not´ees respectivement H2[k], X2[k] et Y [k].
(c) Comparer le spectre Y2[k] = H2[k] · X2[k] au spectre Y [k]. Conclure.
(d) Calculer la TFR inverse du spectre Y2[k] qu’on note y2[n].

1 Pour calculer yl[n] = h[n] ∗ x[n] la syntaxe `a utiliser est la suivante : y = conv(h,x) ou y = conv(x,h).
2 Utiliser pour cela la commande subplot.
(e) Comparer y2[n] `a y[n] en les repr´esentant sur la mˆeme figure. Conclure (f) Comparer le temps
de calcul3 de y2[n] `a celui de y[n]. Conclure.

1
1.2 TFR et filtrage num´erique
Le but de cette section est d’´ecrire des scripts qui permettent de r´ealiser le filtrage dans le domaine
fr´equentiel de signaux num´eriques uni-dimensionnels (ou 1D) en utilisant la TFR, en exploitant ainsi les
r´esultats de la section pr´ec´edente. Ce type de filtrage num´erique, commun´ement connu sous le nom de
filtrage par fft, peut ˆetre mis en œuvre quelque soit le type de filtre 4. On utilisera comme signaux 1 D des
signaux al´eatoires puis des signaux audio. Dans tous les cas, voici la d´emarche `a suivre :
• Commencer par repr´esenter le spectre d’amplitude (bilat´eral) du signal (avant filtrage) afin d’avoir
une id´ee sur le filtre appropri´e et fr´equence(s) de coupure correspondante(s).
• Repr´esenter le spectre d’amplitude (bilat´eral) du signal filtr´e afin de v´erifier que l’objectif est
atteint.
• Repr´esenter le signal avant et apr`es filtrage pour une comparaison et une deuxi`eme v´erification.
• Pour les signaux audio, penser en plus `a ´ecouter le signal avant et apr`es filtrage, et `a amplifier
le signal filtr´e au besoin.

1. Ecrire deux scripts qui permettent de r´ealiser le filtrage par fft respectivement passe-bas et passe-
haut des signaux suivants :
(a) x(t) un signal blanc mod´elis´e par x(t) = b(t), ou` b(t) est un bruit al´eatoire uniforme. Prendre
pour cela x = rand(1,N) pour N impair puis pair (commencer par des valeurs faibles pour N).
(b) x(t) un signal audio non bruit´e mod´elis´e par x(t) = s(t), ou` s(t) est un signal num´erique
propre (sans bruit additif). Prendre pour cela [x,fe] = wavread(0Audio1.wav0).
(c) x(t) un signal audio bruit´e mod´elis´e par x(t) = s(t) + b(t), ou` b(t) est un bruit additif Haute
Fr´equence, puis Basse Fr´equence. Prendre pour cela [x,fe] = wavread(0Audio2.wav0) puis
[x,fe] = wavread(0Audio3.wav0).
(d) x(t) un signal audio bruit´e mod´elis´e par x(t) = s(t) + b(t), ou` le bruit b(t) est cette fois-ci une
sinuso¨ıde pure. Prendre pour cela [x,fe] = wavread(0Audio4.wav0).

2. Ecrire deux scripts qui permettent de r´ealiser le filtrage par fft respectivement passe-bande et coupe-
bande en utilisant le signal ”Audio4.wav”.

2 TFD et corr´elation discr`ete


On s’int´eresse dans cette section a` l’op´eration de corr´elation entre deux signaux a` temps discret, dite
corr´elation discr`ete, et sa relation avec la TFD a` travers le th´eor`eme de Wiener-Khintchine. On
rappelle que la fonction d’inter-corr´elation de deux signaux x[n] et y[n] de longueurs respectives Nx et Ny,
qu’on note Cxy[n], est d´efinie par : Nx−1

En mettant le code Scilab r´ealisant ce calcul entre les commandes tic et toc.
3

C’est `a dire quelque soit la fonction de transfert H[k] = TFD{h[n]}, en particulier pour les filtres classiques passe-bas, passe-
4

haut, passe-bande ou coupe-bande.


Cxy[n] = X x[k] · y¯[k − n], ∀ n ∈ [0,Nx + Ny − 2]. (2)
k=0

En comparant cette expression (2) `a l’expression (1) on constate que la fonction Cxy[n] n’est autre que
la convolution entre le signal x[n] et le signal5 z[n] = y¯[−n], c’est a` dire qu’on a Cxy[n] = x[n]∗z[n]. Ainsi on
pourra calculer Cxy[n] en passant par le domaine de Fourier, exactement comme dans la section 1.1
1. (a) Calculer la fonction d’inter-corr´elation Cxy[n] de deux signaux x[n] et y[n] qui sont p´eriodiques
de mˆeme p´eriode.
(b) Repr´esenter x[n], y[n] et Cxy[n] sur une mˆeme figure s´epar´ement. Commenter.

2. (a) Calculer la fonction d’inter-corr´elation Cxy[n] de deux signaux x[n] et y[n] qui sont p´eriodiques
de p´eriodes diff´erentes.
(b) Repr´esenter x[n], y[n] et Cxy[n] sur une mˆeme figure s´epar´ement. Commenter.

5 Sous Scilab, on obtient le signal z[n] `a partir du signal y[n] en utilisant la fonction mtlb fliplr `a travers la syntaxe suivante :
z = mtlb fliplr(y). Sous Octave et Matlab la syntaxe est plutˆot la suivante : z = fliplr(y).

Vous aimerez peut-être aussi