Vous êtes sur la page 1sur 7

Faculté des Sciences et Techniques

Département d’Informatique
MST SIDI – Module: TSN – A.U 2022/2023

TP n° 3 : Convolution et représentation fréquentielle des signaux


Objectifs du TP (Partie 1):
1. Calculer la convolution de deux signaux à temps discret.
2. Utiliser Scilab pour obtenir une approximation de la convolution de deux signaux
continus.

Convolution
La convolution est une opération mathématique dont les applications sont principalement
dans des domaines tels que les systèmes et le traitement du signal, la physique et l'ingénierie.
L'opération de convolution de deux signaux à temps discret est définie comme suit :

La convolution de deux signaux en temps continu est définie comme suit :

Scilab fournit plusieurs commandes pour effectuer la convolution, néanmoins, chacune a sa


propre spécialité, par exemple, convol utilise la transformée de Fourier rapide, conv2 est
utilisée pour travailler avec des tableaux bidimensionnels et fréquemment utilisée dans le
traitement d'images. Nous allons utiliser command conv.
La commande conv est utilisée pour travailler avec des tableaux unidimensionnels et permet
de gérer la longueur du résultat.

La syntaxe de la fonction est le suivant : C = conv(x, y, “string”)

Où x et y sont les vecteurs (Nos signaux) en question. Le troisième argument est facultatif et
permet de gérer la dimension du résultat, C. Par exemple, écrire full, qui est la valeur par
défaut, fera que les dimensions du résultat sont size(x)+size(y)+1 et écrire same fera que
les dimensions du résultat seront les mêmes que celles de x. Nous allons utiliser same pour
obtenir des résultats plus illustratifs.

1. Convolution en temps discret.


La convolution en temps discret est assez facile à réaliser avec Scilab. Probablement, définir
les signaux pourrait être le défi.

Exercice 1 :
a. Ecrire le code en Scilab permettant de réaliser les signaux discrets suivants :

TP1 : Vecteurs, matrices et tracés 2D/3D sous Scilab Pr. Ahmed ELABBASSI/Pr. Abdelaaziz HESSANE
Faculté des Sciences et Techniques
Département d’Informatique
MST SIDI – Module: TSN – A.U 2022/2023

Signal x[n] Signal z[n]


Figure 1 : Signaux discrets à convoluer

b. Effectuer la convolution à l’aide de la fonction conv de Scilab


c. Afficher et commenter le résultat.

Remarque : Nommer votre script : TP3_Exo1.sce.

2. Convolution en temps continu


La convolution en temps discret est facile, mais la convolution en temps continu ne l'est
pas. En fait, il est techniquement impossible de faire la convolution de deux signaux en temps
continu avec Scilab ou tout autre logiciel puisque les données informatiques sont
discrètes. Néanmoins, vous pouvez approximer l'opération de convolution (voir figure 2) et
obtenir des résultats très précis avec Scilab.

Réaliser les signaux définis comme suit :

• x(t) est une impulsion rectangulaire de largeur 2, d'amplitude 1 et centrée sur t=0
(figure 2)
• y(t) est un train d'impulsions de période 12, largeur 6, amplitude 2 et centré sur t=0
(figure 3)

Figure 2 : signal x(t) Figure 3 : Signal y(t)

Exercice 2 :

1. Calculer à la main le résultat de la convolution des deux signaux


2. Représenter graphiquement le résultat obtenu (sans utiliser Scilab)

TP1 : Vecteurs, matrices et tracés 2D/3D sous Scilab Pr. Ahmed ELABBASSI/Pr. Abdelaaziz HESSANE
Faculté des Sciences et Techniques
Département d’Informatique
MST SIDI – Module: TSN – A.U 2022/2023

Construisons les signaux.

Tout d'abord, nous avons besoin d'une fréquence d'échantillonnage (nous allons en y parler
très prochainement) e et d'un vecteur temporel pour pouvoir créer les signaux à partir de
ceux-ci. On va utiliser comme fréquence d'échantillonnage Fs=200, vous pouvez en utiliser
une autre.

Un moyen typique et rapide de construire une impulsion rectangulaire est ceci

La fonction matlb_axis émule la fonction de Matlab axis . Où l'argument est donné


par [xmin xmax ymin ymax]. Vous pouvez donc utiliser cette fonction pour manipuler les
axes d’abscisses et d’ordonnées. Après avoir exécuté le code précédent, vous obtiendrez

Figure 4 : Signal x(t)


Pour le signal du train d'impulsions, nous allons utiliser la fonction squarewave(). Cette
fonction génère une onde carrée périodique avec une période de 2pi . Vérifiez sa syntaxe

s=squarewave(t, p);

Où t est un vecteur réel et p est le pourcentage de la période où le signal est positif. La valeur
est 50 % par défaut. En utilisant ces informations, nous pouvons créer un train d'impulsions
comme suit :

TP1 : Vecteurs, matrices et tracés 2D/3D sous Scilab Pr. Ahmed ELABBASSI/Pr. Abdelaaziz HESSANE
Faculté des Sciences et Techniques
Département d’Informatique
MST SIDI – Module: TSN – A.U 2022/2023

Figure 5 : Signal y(t)


Si vous essayez d'utiliser le même algorithme que dans la section précédente pour faire la
convolution de deux signaux en temps continu , vous obtiendrez des erreurs. Vérifiez-le en
calculons à la main la fonction de convolution.

Figure 6 : Résultat de la convolution en utilisant la fonction prédéfinie conv de Scilab

En faisant les calculs à la main, on peut noter que l'amplitude du signal obtenu est erronée.
Ce problème est dû au fait que nous utilisons un algorithme conçu pour la convolution de
signaux en temps continu, nous en aurons donc besoin d'un nouveau.

TP1 : Vecteurs, matrices et tracés 2D/3D sous Scilab Pr. Ahmed ELABBASSI/Pr. Abdelaaziz HESSANE
Faculté des Sciences et Techniques
Département d’Informatique
MST SIDI – Module: TSN – A.U 2022/2023

La convolution entre deux signaux en temps continu est définie comme une intégrale. Cette
dernière peut être approximée par plusieurs méthodes. Dans ce TP, on va utiliser
l’approximation donnée par la formule suivante :

Notez que cela revient à approximer l'intégrale en ajoutant des rectangles dont les largeurs
sont égales à la période d'échantillonnage. De plus, l'expression entre parenthèses est la
formule de la convolution discrète, nous pouvons donc modifier notre première tentative
pour cela

Le résultat est illustré dans la figure suivante :

Figure 7 : Résultat de la convolution approximative en introduisant une fréquence


d’échantillonnage fs = 200
Cependant, en faisant un zoom sur l’amplitude, vous pouvez remarquer une petite erreur
par rapport à la valeur souhaitée, 4. (voir Figure 8).

TP1 : Vecteurs, matrices et tracés 2D/3D sous Scilab Pr. Ahmed ELABBASSI/Pr. Abdelaaziz HESSANE
Faculté des Sciences et Techniques
Département d’Informatique
MST SIDI – Module: TSN – A.U 2022/2023

Erreur

Figure 8 : Erreur liée au choix de la fréquence d’échantillonnage.

Vérifiez le résultat obtenu en utilisant les valeurs 500, 1000, 1500 pour Fs. Que remarquer
vous ?

Exercice 3 : Refaire la même démarche abordé dans ce TP (convolution en temps


continu des signaux) pour les signaux suivants :

X(t) H(t) Nom du fichier source (Script)


Rectangle Exponentielle décroissante Convol_1.sce
Triangle Rectangle Convol_2.sce
Rectangle Rectangle Autocorr_1.sce

Prenez l’amplitude A = 1, la largeur du rectangle = base du triangle = 2


TAD 4 :
Répondre aux exercices (1, 2 et 3) ;
Consignes :
1. Utiliser help pour mieux comprendre comment utiliser une fonction ou une commande
sous Scilab.
2. Les calculs et les tracés doivent se faire à la main en premier lieu. Puis, valider les
résultats trouvés en utilisant Scilab. Penser à joindre les solutions à votre rapport (fichier
séparé nommé calculs_à_la_main.pdf)
3. Rédiger un compte rendu de 5 à 10 pages avec les codes-source demandés
4. Le compte rendu concerne tous les exercices !
5. Des captures d’écran des résultats de l’exécution des codes sont envisagées.
6. Envoyer le rapport avant le 19/11/2022.

TP1 : Vecteurs, matrices et tracés 2D/3D sous Scilab Pr. Ahmed ELABBASSI/Pr. Abdelaaziz HESSANE
Faculté des Sciences et Techniques
Département d’Informatique
MST SIDI – Module: TSN – A.U 2022/2023

Bon courage !

TP1 : Vecteurs, matrices et tracés 2D/3D sous Scilab Pr. Ahmed ELABBASSI/Pr. Abdelaaziz HESSANE

Vous aimerez peut-être aussi