Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Avant propos

Le produit de convolution entre deux signaux xx et yy à temps discret est défini par :

(xy)[n]=m=+x[m]y[nm].(x*y)[n] = \sum_{m=-\infty}^{+\infty} x[m]y[n-m].

La fonction numpy.convolve calcule le produit de convolution et renvoie le résultat complet (full) ou tronqué (same et valid).

x	= [ 7, 2, 1, 8 ]   (len = 4)
y	= [ 1, -1, 1 ]   (len = 3)
"full"	= [ 7, -5, 6, 9, -7, 8 ]   (len = 6)
"same"	= [ -5, 6, 9, -7 ]   (len = 4)
"valid"	= [ 6, 9 ]   (len = 2)
<Figure size 800x400 with 1 Axes>
<Figure size 800x400 with 1 Axes>
<Figure size 800x400 with 1 Axes>

Premier produit de convolution

Comme pour la porte, l’impulsion discrète est définie avec numpy.where.

Attention à l’utilisation de la fonction numpy.arange utilisée pour définir les abscisses !

n = np.arange(-10, 10+1)

x = np.sin(2*np.pi*n/10)
y = np.where( n==5 , 3, 0)

z = np.convolve(x, y, mode="same")
<Figure size 1500x400 with 3 Axes>
  • On voit là l’effet de la convolution par une impulsion discrète : le signal xx est décalé de 5 échantillons (lieu de l’impulsion) et amplifié de 3 (amplitude de l’impulsion).

  • Mais comment expliquer la présence d’échantillons nuls en début du signal xyx*y ?

Deuxième produit de convolution

n = np.arange(-10, 10+1)

x = np.where( np.absolute(n)==1 , 1, 0) + np.where( n==0 , 2, 0)
y = np.where( n==-1 , -1, 0) + np.where( n==1 , 1, 0)

z = np.convolve(x, y, mode="same")
<Figure size 1500x400 with 3 Axes>

Détail du calcul du produit de convolution :

<Figure size 500x400 with 1 Axes>
  • Comme précédemment, la convolution par chaque impulsion de yy va décaler et amplifer le signal xx d’autant. La convolution de la somme étant la somme des convolutions (opération linéaire), alors le résultat xyx*y est la somme des deux convolutions.

Troisième produit de convolution

<Figure size 1500x400 with 3 Axes>
  • La convolution par un porte revient à calculer chaque échantillon de xyx*y comme la moyenne de 24×7 échantillons de yy.

  • On procède donc à un moyennage du signal, qui a pour effet d’adoucir (lisser) le signal très perturbé (“bruité”) par une porte. C’est une véritable technique pour débruiter un signal.