Vous êtes sur la page 1sur 14

Chapitre 6

Convolution discrète

La convolution est une méthode mathématique de combiner deux signaux pour en


produire un troisième. C’est la technique la plus importante en traitement des signaux. La
convolution permet de relier l’entrée, la sortie et la réponse impulsionnelle d’un système.
La convolution est la base mathématique de l’analyse des signaux discrets.

6.1 Convolution

On a déjà vu comment un système peut être caractérisé par sa réponse impulsionnelle.


L’entrée à un système discret est une série d’impulsions d’amplitude variable décalées
dans le temps, et donc la sortie peut être représentée comme une série d’impulsions d’am-
plitude variables décalées dans le temps. La réponse globale du système peut être obtenue
en ajoutant ces réponses impulsionnelles ensemble. Si on connaı̂t la réponse impulsion-
nelle d’un système, alors on connaı̂t sa sortie pour n’importe quelle entrée.

La convolution est une opération mathématique, comme l’addition ou la multiplica-


tion. L’addition prend 2 chiffres comme entrée et en produit un troisième ; la convolution
prend 2 signaux comme entrée et en produit un troisième. La convolution est utilisée
dans plusieurs domaines, comme la statistique, mais ici on s’intéresse à elle parce qu’elle
permet de relier l’entrée à la sortie d’un système linéaire. On utilise le symbole ∗ pour
représenter la convolution. Une entrée x[n] appliquée à un système h[n] produira une
sortie y[n] = x[n] ∗ h[n].

Soit une entrée discrète quelconque x[n], qui est tout simplement une série d’impul-
sions d’amplitude variable et décalées dans le temps. Mathématiquement, on représente

1
CHAPITRE 6. CONVOLUTION DISCRÈTE

ceci par :

X
x[n] = x[k]δ[n − k] (6.1)
k=−∞
Par superposition, la sortie y[n] est la somme des réponses impulsionnelles aux entrées
x[n],
X∞
y[n] = x[k]h[n − k] = x[n] ∗ h[n] (6.2)
k=−∞
C’est la définition de la convolution.

La figure 6.1 montre un premier exemple de convolution. L’entrée x[n] est une si-
nusoı̈de additionné d’une rampe. Le système utilisé h[n] est un filtre passe-bas. Le résultat
est un signal où la composante du sinusoı̈de a été fortement atténué : il ne reste que la
rampe. Remarquer aussi la longueur totale de la séquence de sortie : c’est 111 échantillons.
L’entrée est de 81 échantillons, le filtre (le système) est de 31 échantillons. Le nombre
d’échantillons à la sortie est la somme des échantillons de l’entrée et du système, moins 1
(81 + 31 − 1 = 111).

x[n] h[n] y[n]

2
0.04 1
1
0.5
0 0.02
0
−1
0 20 40 60 80 0 10 20 30 0 50 100
n n n

Figure 6.1 – Exemple de convolution : filtre passe-bas

La figure 6.2 montre un deuxième exemple de convolution. L’entrée est la même que
l’exemple précédent. Dans ce cas-ci, le système est un filtre passe-haut. La sortie est le
sinusoı̈de : la rampe a été enlevée du signal d’entrée. La longueur du signal de sortie est
la même que dans le premier exemple : 111 échantillons.

On peut conceptualiser la convolution de deux façons : en considérant l’impact de


l’entrée sur le système, ou en considérant l’impact du système sur l’entrée. Le premier est
le point de vue de l’entrée, tandis que le second est le point de vue de la sortie. Dans les
deux cas, le résultat est le même : ce sont juste deux différentes façons de visualiser ce qui
se passe.

Gabriel Cormier 2 GELE2511


CHAPITRE 6. CONVOLUTION DISCRÈTE

x[n] h[n] y[n]


0.04
2 1

1 0.02 0

0
−1
0
−1
0 20 40 60 80 0 10 20 30 0 50 100
n n n

Figure 6.2 – Exemple de convolution : filtre passe-haut

6.2 Convolution : impact de l’entrée

On regarde en premier l’impact de l’entrée sur le système pour produire une sortie.
On considère la définition de la convolution donnée à l’équation 6.2. On prendra comme
exemple un système simple, où l’entrée est composée d’une séquence de 6 échantillons.
Soit le système de la figure 6.3. L’entrée est une séquence de 6 échantillons, le système est
composé de 4 échantillons. On voit alors le résultat de la convolution.

x[n] h[n] y[n]


2 2 2

1 1 1

0 0 0

−1 −1 −1

−2 −2 −2
0 2 4 0 1 2 3 0 2 4 6 8
n n n

Figure 6.3 – Exemple de convolution : système simple

La longueur de la sortie pour ce système doit être 6 + 4 − 1 = 9, ce qui est le cas (les
échantillons de la sortie varient de n = 0 à n = 8).

Selon l’équation 6.2, la sortie y[n] est obtenue en multipliant chaque échantillon de
l’entrée par le système h[n], puis en faisant la somme. On peut regarder ces contributions
individuelles à la figure 6.4, où on a multiplié h[n] par chaque valeur de l’entrée x[n].

Dans le premier graphe de la figure 6.4, on a multiplié la première valeur de x[n] par

Gabriel Cormier 3 GELE2511


CHAPITRE 6. CONVOLUTION DISCRÈTE

y1 [n] y2 [n] y3 [n]


2 2 2

1 1 1

0 0 0

−1 −1 −1

−2 −2 −2
0 2 4 6 8 0 2 4 6 8 0 2 4 6 8
n n n
y4 [n] y5 [n] y6 [n]
2 2 2

1 1 1

0 0 0

−1 −1 −1

−2 −2 −2
0 2 4 6 8 0 2 4 6 8 0 2 4 6 8
n n n

Figure 6.4 – Contribution de chaque entrée à la sortie

chaque valeur de h[n]. Puisque le premier échantillon de x[n] est zéro, la sortie est zéro.
Les cercles rouge représentent des zéros ajoutés pour compléter la séquence à la bonne
longueur. Ceci est nécessaire pour tous les cas, sauf que l’emplacement des zéros ajoutés
varie. Dans le deuxième graphe, on a multiplié la deuxième valeur de x[n] (x[1] = −1) par
chaque valeur de h[n], et décalé le tout de 1 échantillon. Alors, y2 [0] = 0, y2 [1] = (−1)(1) =
−1, y2 [2] = (−1)(−0.5) = 0.5, y2 [3] = (−1)(−0.25) = 0.25, y2 [4] = (−1)(0) = 0, et les autres
échantillons sont nuls. On répète le processus pour les autres échantillons de l’entrée.
Pour obtenir la sortie globale, il suffit de faire la somme de chaque contribution à la sortie
(y1 +y2 +y3 +y4 +y5 +y6 ). Par exemple, la sortie y[2] = y1 [2]+y2 [2]+y3 [2]+y4 [2]+y5 [2]+y6 [2] =
0 + 1 + 0.5 + 0 + 0 + 0 = 1.5, ce qui est bien le cas dans le graphe de la sortie globale (figure
6.3).

On obtient le même résultat si on fait la multiplication de chaque valeur de h[n] par


la séquence x[n]. La convolution est commutative : x[n] ∗ h[n] = h[n] ∗ x[n]. Mathématique-
ment, les deux sont le même. Pratiquement, il est plus facile de visualiser ce qui se passe
si on considère l’entrée qui multiplie le système h[n] que de considérer h[n] qui multiplie
la séquence d’entrée.

Gabriel Cormier 4 GELE2511


CHAPITRE 6. CONVOLUTION DISCRÈTE

6.3 Convolution : problèmes

Dans cette analyse de la convolution, on regarde comment chaque point de la sortie


est affecté par les entrées et le système. Idéalement, si on connaı̂t l’entrée et le système, on
veut calculer chaque point de la sortie individuellement, et non calculer plusieurs sorties
puis faire la somme.

Comme exemple, on regarde quels points dans les sorties individuelles contribuent à
un point dans la sortie. Si on prend le point y[4], on remarque qu’il y a 4 points bleus
qui contribuent à sa valeur, et 2 points rouge. Les 4 points bleus qui contribuent à la
sortie veulent dire que 4 points de l’entrée contribuent. Alors, y[4] = x[1]h[3] + x[2]h[2] +
x[3]h[1] + x[4]h[0].

On prend un autre exemple, comme le point y[7]. Les entrées qui contribuent à cette
sortie sont x[4] et x[5]. Dans ce cas-ci, seulement 2 entrées contribuent à la sortie, au lieu
de 4 pour le point y[4]. C’est la même chose pour le point y[1] : seulement 2 échantillons
de l’entrée contribuent à la sortie. Ces échantillons de sortie sont donc basés sur moins
d’information que les échantillons du centre. En fait, les M − 1 échantillons des bouts, où
M est la longueur du système h[n], sont créés à partir de moins d’échantillons de l’entrée.

Ceci peut causer certains problèmes, comme on peut voir à la figure 6.5. L’entrée est
une sinusoı̈de ayant un niveau DC. On veut éliminer ce DC en utilisant un filtre passe-
haut. Comme on peut voir, les échantillons de la sortie sur les bouts ne sont pas très clairs.
On avait une très belle sinusoı̈de à l’entrée, mais le filtre ici a perdu de l’information aux
bouts. Seule la région centrale est utilisable.

x[n] h[n] y[n]

3 1
1 utilisable
2
0.5 0
1
−1
0
0
0 20 40 60 80 0 10 20 30 0 20 40 60 80 100
n n n

Figure 6.5 – Exemple d’information non-utilisable

En général, il faut s’attendre à ce que l’information aux bouts d’un signal ne soit pas
utilisable.

Gabriel Cormier 5 GELE2511


CHAPITRE 6. CONVOLUTION DISCRÈTE

6.4 Convolution de séquences finies

Il existe quelques méthodes pour faire la convolution de séquences finies. On en verra


quelques unes ici. La convolution y[n] de deux séquences finies x[n] et h[n] est elle aussi
une séquence finie. Les règles suivantes sont à suivre :
1. L’indice de début de y[n] est la somme des indices de début de x[n] et h[n].
2. L’indice de fin de y[n] est la somme des indices de fin de x[n] et h[n]
3. La longueur de y[n] est la longueur de x[n] plus la longueur de h[n] moins 1 : Ly =
Lx + Lh − 1.

6.4.1 Méthode de la somme des colonnes

Cette méthode ressemble un peu à la multiplication faite à la main. On met la séquence


h[n] dans une rangée. Dessous, on place x[n], en alignant les deux valeurs de début des
séquences. Ensuite, on multiplie chaque valeur de h[n] par une valeur de x[n]. On répète
pour une autre valeur de x[n], en plaçant le résultat dans une autre rangée en dessous.
Finalement, on fait la somme des colonnes pour obtenir le résultat final.

Exemple 1

Faire la convolution de h[n] = {1, 2, 2, 3} par x[n] = {2, −1, 3}.


↑ ↑

En appliquant la méthode,

h[n] = 1 2 2 3
x[n] = 2 -1 3
2 4 4 6
-1 -2 -2 -3
3 6 6 9
2 3 5 10 3 9

La sortie est y[n] = {2, 3, 5, 10, 3, 9}


6.4.2 Méthode de la bande glissante

Cette méthode ressemble un peu à la méthode graphique utilisée plus haut. On va


replier x[n] pour obtenir x[−n], puis déplacer x[−n] devant h[n] en multipliant les valeurs

Gabriel Cormier 6 GELE2511


CHAPITRE 6. CONVOLUTION DISCRÈTE

de x[n] avec h[n] puis en faisant la somme.

Exemple 2

Trouver la convolution de h[n] = {2, 5, 0, 4} par x[n] = {4, 1, 3}.


↑ ↑

2 5 0 4 2 5 0 4 2 5 0 4
3 41 3 1 4 3 1 4
8 2 20 6 5 0
y[0] = somme = 8 y[1] = somme = 22 y[2] = somme = 11

2 5 0 4 2 5 0 4 2 5 0
4
3 1 4 3 1 4 3 1 4
15 0 16 0 4 12
y[3] = somme = 31 y[4] = somme = 4 y[5] = somme = 12

La sortie est y[n] = {8, 22, 11, 31, 4, 12}


6.4.3 Multiplication polynômiale

La convolution est la même procédure que la multiplication de polynômes.

Exemple 3

Soit h[n] = {2, 5, 0, 4} et x[n] = {4, 1, 3}. Trouver la convolution.


↑ ↑

On peut considérer h[n] et x[n] comme des polynômes :

h(z) = 2z3 + 5z2 + 4


x(z) = 4z2 + z + 3

On fait alors la multiplication de ces polynômes :

y(z) = 8z5 + 22z4 + 11z3 + 31z2 + 4z + 12

La sortie est y[n] = {8, 22, 11, 31, 4, 12}.


Gabriel Cormier 7 GELE2511


CHAPITRE 6. CONVOLUTION DISCRÈTE

6.4.4 Utilisation de Matlab

La convolution est très facile avec Matlab. Il s’agit d’utiliser la commande conv.

>> h = [2 5 0 4];
>> x = [4 1 3];
>> y = conv(h,x)

y =

8 22 11 31 4 12

6.5 Propriétés de la convolution

La convolution d’une séquence x[n] avec la fonction impulsion δ[n] est tout simple-
ment la fonction originale :
x[n] ∗ δ[n] = x[n] (6.3)
La fonction delta agit comme identité. Si on applique un déphasage,
x[n] ∗ δ[n − s] = x[n − s] (6.4)
La sortie est déphasée aussi.

La convolution d’une séquence x[n] et la fonction échelon donne la somme des valeurs
de x[n] :
Xn
x[n] ∗ u[n] = x[k] (6.5)
k=−∞

Commutativité

La convolution est commutative :


a[n] ∗ b[n] = b[n] ∗ a[n] (6.6)

L’ordre dans lequel les signaux sont convolués n’a pas d’importance. Bien que mathé-
matiquement ceci est possible, en pratique, ça n’a pas de sens. On ne peut pas échanger
l’entrée et le système. Si une personne fait 10$ l’heure et travaille 2000 heures par an,
cette personne fait 20 000$ par an. Le même résultat est obtenu si on travaille 10 heures
par an à 2000$ par heure. Mais c’est complètement ridicule. N’allez pas voir votre patron
pour ce genre d’arrangement.

Gabriel Cormier 8 GELE2511


CHAPITRE 6. CONVOLUTION DISCRÈTE

Associativité

On peut faire la convolution de trois ou plus signaux ; l’ordre dans lequel on effectue
la convolution n’a pas d’importance.

(a[n] ∗ b[n]) ∗ c[n] = a[n] ∗ (b[n] ∗ c[n]) (6.7)

Distributivité

Sous forme d’équation, la distributivité est :

a[n] ∗ b[n] + a[n] ∗ c[n] = a[n] ∗ (b[n] + c[n]) (6.8)

Si deux systèmes ont la même entrée, et sont additionnés pour produire la sortie globale,
on peut remplacer les deux systèmes en parallèle par un seul système qui est la somme
des deux.

6.6 Corrélation

La corrélation est mieux expliquée par un exemple. Supposons qu’on a un système ra-
dar, comme à la figure 6.6, pour détecter un avion. Une antenne spécialement conçue en-
voie un pulse d’énergie radio dans une direction voulue. Si l’onde frappe un objet, comme
l’avion, une partie sera réfléchie vers le récepteur qui se trouve près de l’émetteur. Le
pulse envoyé est d’une forme spécifique, comme un triangle dans ce cas-ci. Le signal reçu
sera une version atténuée et décalée du signal original, en plus d’avoir du bruit. Puisque
les signaux radio se propagent à une vitesse connue, le temps entre l’émission du signal
et la réception est une mesure de la distance de l’objet. Le problème est le suivant : étant
donné un signal de forme connue, quelle est la meilleure façon de déterminer si la forme
se produit dans un autre signal. La corrélation est la méthode à utiliser.

Figure 6.6 – Système radar

Gabriel Cormier 9 GELE2511


CHAPITRE 6. CONVOLUTION DISCRÈTE

Dans le cas idéal, les signaux ressembleraient à ceux de la figure 6.7. Le signal radar
émit est un pulse de durée fixe. Le signal reçu serait le même pulse avec un retard. Le
retard permet de calculer la distance de l’objet, sachant la vitesse de l’onde émise.

Pulse

0.5

0
0 20 40 60 80 100 120 140 160 180 200

Pulse reçu idéal

0.5

0
0 20 40 60 80 100 120 140 160 180 200

Corrélation idéal

20

10

0
0 50 100 150 200 250 300 350 400

Figure 6.7 – Signal envoyé et signal reçu du système radar : cas idéal

Cependant, un signal réel reçu ne sera pas idéal. Il y aura beaucoup de bruit, et l’am-
plitude du signal peut être très faible. Comment détecter le signal ? La corrélation permet
quand même de trouver l’instant où le signal reçu ressemble le plus au signal envoyé,
comme on peut voir à la figure 6.8.

La corrélation est la mesure de la similitude entre deux signaux. C’est une opération
très semblable à la convolution : on prend deux signaux pour en produire un troisième.

Gabriel Cormier 10 GELE2511


CHAPITRE 6. CONVOLUTION DISCRÈTE

Pulse

0.5

0
0 20 40 60 80 100 120 140 160 180 200

Pulse reçu avec bruit

−2

0 20 40 60 80 100 120 140 160 180 200

Corrélation

10

0 50 100 150 200 250 300 350 400

Figure 6.8 – Signal envoyé et signal reçu du système radar : cas avec bruit

La fonction mathématique est :



X ∞
X
rxh [n] = x[n] ∗ ∗h[n] = x[k]h[k − n] = x[k + n]h[k] (6.9)
k=−∞ k=−∞

C’est presque la même chose, mais pas tout à fait. Il s’agit de faire la convolution entre x[n]
et h[−n] (une version repliée de h[n]). Les techniques vues auparavant s’appliquent de la
même façon, sauf qu’il faut replier h[n]. Remarquer cependant que x[n]∗∗h[n] , h[n]∗∗x[n],
mais plutôt rxh [n] = rhx [−n].

En appliquant cette méthode au signaux de la figure 6.7, on obtient le graphe de la


figure 6.8. On voit un pic au environs de l’échantillon 120, ce qui indique qu’il y a très
forte corrélation entre le signal reçu et le signal original.

Gabriel Cormier 11 GELE2511


CHAPITRE 6. CONVOLUTION DISCRÈTE

L’amplitude de chaque échantillon dans le signal de corrélation est une mesure de


combien le signal reçu ressemble au signal original à ce point-là. Ceci veut dire qu’un
pic se produit à chaque endroit où le signal original est présent dans le signal reçu. En
d’autres mots, l’amplitude du signal de corrélation est maximale au point où le signal
voulu est aligné avec le signal reçu.

La forme du pic dans le signal de corrélation n’a pas besoin de ressembler au signal
voulu. Le but n’est pas de recréer le signal original, mais plutôt de le détecter.

La corrélation est la meilleure façon pour détecter un signal connu d’un signal ayant
du bruit. Le pic est plus élevé au-dessus du bruit (pour être correct, on parle de bruit blanc
gaussien) en utilisant la corrélation que par toute autre méthode linéaire. L’utilisation de
la corrélation pour détecter un signal connu est souvent appelé filtrage adapté (matched
filtering).

Si on fait la corrélation d’un signal avec lui-même, on appelle ceci l’auto-corrélation.


Un exemple d’auto-corrélation est montré à la figure 6.9. On a un signal avec beaucoup
de bruit dont on ne peut pas distinguer quoi que ce soit. Si on fait la corrélation du si-
gnal avec lui-même, on retrouve la forme du signal original. Il est facile de voir les deux
fréquences présentes dans le signal : une fréquence lente, et une fréquence rapide. Bien
qu’on ne retrouve pas exactement le signal original, on a quand même pu y retrouver de
l’information intéressante.

Signal avec bruit

−2

0 20 40 60 80 100 120 140 160 180 200

Auto-corrélation
400

200

−200

−400
0 20 40 60 80 100 120 140 160 180 200

Figure 6.9 – Exemple d’auto-corrélation

Gabriel Cormier 12 GELE2511


CHAPITRE 6. CONVOLUTION DISCRÈTE

On peut utiliser la corrélation pour aligner deux signaux semblables. Supposons qu’on
écoute les battements de coeur avec un électro-cardiogramme, (ECG), et qu’on a deux
pulses, qu’on veut aligner. La corrélation de ces deux signaux montrera le point où les
deux signaux se ressemblent le plus. Avec ce point de calculé, on peut aligner les deux
signaux.

L’auto-corrélation permet d’identifier la période de signaux périodiques ayant une


forte composante de bruit. Une fois la période identifiée, on fait la corrélation entre le
signal bruité et un train d’impulsions pour récupérer le signal original. La figure 6.10
montre un exemple de ce processus.

Signal original Signal avec bruit

1.5
2

1
0

0.5
0 10 20 30 40 50 60 0 10 20 30 40 50 60

Auto-corrélation Corrélation avec train d’impulsions

150
5

100
0

0 10 20 30 40 50 60 0 10 20 30 40 50 60

Figure 6.10 – Exemple d’auto-corrélation

6.7 Vitesse de traitement

Lorsqu’on fait la convolution de signaux réels, il y a souvent plusieurs milliers d’échan-


tillons. Comme on a vu dans ce chapitre, pour faire la convolution, il faut multiplier
chaque valeur de l’entrée par chaque valeur de la réponse du système. Pour une entrée
à N échantillons, et un système à M échantillons, il faut faire M × N multiplications,

Gabriel Cormier 13 GELE2511


CHAPITRE 6. CONVOLUTION DISCRÈTE

puis N additions. Bien que les ordinateurs sont très rapide et peuvent effectuer plusieurs
opérations par seconde, pour des applications à temps réel il faut faire très attention à la
longueur des signaux.

Il y a trois façon de réduire le temps de calcul : 1) utiliser des signaux plus courts, 2)
utiliser un ordinateur spécialisé pour faire le traitement de signaux (DSP), 3) utiliser une
meilleure méthode pour faire la convolution. Une méthode beaucoup plus rapide pour
faire la convolution est la Transformée de Fourier rapide, la FFT (Fast Fourier Transform).
On verra cette méthode au prochain chapitre.

Gabriel Cormier 14 GELE2511