Vous êtes sur la page 1sur 65

MINISTERE DE L'ENSEIGNEMENT SUPERIEUR ET DE LA

RECHERCHE SCIENTIFIQUE
Institut Suprieur des Etudes Technologiques de SFAX
Dpartement Technologies de lInformatique

FASCICULE DES TRAVAUX


PRATIQUES

Traitement de
de Signal
Signal
Traitement

Fascicule
Fascicule labor
labor par
par

Dr. Mohsen Ben Ammar


Matre-Technologue en Gnie
Electrique lISET
lISET de
de Sfax
Sfax
Electrique

Fascicule TP Atelier Logiciel


Toute reproduction, mme partielle, de ce fascicule sans permission crite de lauteur, sous quelque
forme et par quelque procd que ce soit, y compris par systme de diffusion lectronique est
strictement interdite conformment au code de la proprit Intellectuelle.

MINISTERE DE L'ENSEIGNEMENT SUPERIEUR ET DE LA


RECHERCHE SCIENTIFIQUE
Institut Suprieur des Etudes Technologiques de SFAX
Dpartement Technologies de lInformatique

FASCICULE DES TRAVAUX


PRATIQUES

Atelier Logiciel

2013

Traitement de Signal

Fascicule labor par

Dr. Mohsen Ben Ammar


Matre-Technologue en Gnie
Electrique lISET de Sfax

Table des matires

TP1 : Introduction Matlab .....

TP2 : Analyse de signaux par Transforme de Fourier sous Matlab/Simulink ..

17

TP3 : Synthse dun Filtre passe-bas Rponse Impulsionnelle Finie sous

34

Matlab/Simulink ..
TP4 : Signaux analogiques & numriques, Produit de Convolution &Corrlation sous

47

Matlab/Simulink .
TP5 : Simulink : Initiation la technique de drag and drop ..

53

ISET DE SFAX

DEPARTEMENT DES TECHNOLOGIES


DE LINFORMATIQUE

Analyse de signaux par Transforme de


Introduction
Matlab
Fourier
sous Matlab/Simulink

Travaux Pratiques datelier logiciel


Traitement de Signal

1e Anne Licence Applique


Domaine de formation : Sciences et technologies
Mention : Technologies de lInformatique (TI)
Parcours : Tronc Commun (TC)

2012-2013

Travaux Pratiques de Traitement de Signal

TP n1 : Introduction Matlab
1- Introduction
Au cours de ces sances des travaux pratiques vous aurez besoin dutiliser un logiciel vous
permettant de calculer, danalyser et de reprsenter graphiquement des rsultats obtenus. Matlab est
un outil puissant qui vous permet deffectuer ces oprations mathmatiques. Ce document a pour
but de vous faire dcouvrir ce logiciel en vous prsentant ses principales fonctionnalits. la fin de
chaque sance de travaux pratiques, un compte-rendu devra tre remis par chaque binme.

2- Logiciel Matlab
Le nom de Matlab est la combinaison de deux mots soit les mots Matrix (contrairement
Mathematics comme on pourrait le penser!) et Laboratory. la base, Matlab a t conu pour faire
du calcul matriciel puisque chaque lment dentre constitue une matrice ou des lments dune
matrice. Aujourdhui, Matlab est utilis pour :
-

effectuer des oprations de calcul;


faire de la visualisation graphique;
faire de la programmation.

Le logiciel utilise en langage de fond du C++, mais utilise un langage beaucoup plus simplifi du
point de vue de lutilisateur linterface. Par exemple, contrairement aux langages de
programmation comme Fortran et C++, il nest plus ncessaire de dclarer des variables avant de
les utiliser.
Matlab est un logiciel de calcul numrique ce qui signifie que chaque variable doit avoir une valeur
connue et dfinie contrairement aux logiciels de calcul analytique comme Maple ou Drive o
chaque variable est reprsente par un ensemble de valeurs indfinies. En termes de temps de
calcul, les logiciels numriques sont beaucoup plus efficaces que les logiciels analytiques puisquils
utilisent moins de mmoire du fait que chaque variable a une valeur assigne. Dans le cadre de ces
TP datelier logiciel, nous allons maintenant vous faire dcouvrir linterface unique du logiciel.

3- Prsentation de linterface du logiciel


Linterface de Matlab est compose de quatre parties principales soit :
-

La fentre de commandes (Command Window);


Lespace de travail (Workspace);
Le rpertoire en cours (Current Directory);
Lhistorique des commandes (Command History).

Ces parties sont reprsentes sur limage ci-dessous.

Page 2

Travaux Pratiques de Traitement de Signal

Rpertoire en
cours

Historique des
commandes

Espace de travail

Fentre des
commandes

Nous allons maintenant dcouvrir lutilit ainsi que les principales fonctionnalits de chacune de
ces fentres daffichage.
- Fentre de commandes
La fentre de commandes est un lien entre lutilisateur et le programme. Cest la fentre dans
laquelle on dicte les oprations effectuer. En utilisant une syntaxe approprie Matlab, la
fentre de commandes servira pour effectuer des oprations de calcul ou pour appeler des
fonctions provenant des librairies de Matlab ou des fonctions que nous mme lon a construites
comme on peut voir sur limage ci-dessous. On peut galement demander de laide en utilisant
la commande help soit seul ou suivi du nom de la fonction dont on veut de linformation
(exemple : help mean) et on peut accder certaines fonctionnalits de Matlab telles que
Simulink et GUIDE.
- Espace de travail
Cette fentre regroupe toutes les variables qui ont t cres et qui sont utilisables dans la fentre
de commandes pour des oprations de calcul et pour faire de la visualisation. Ces variables sont
regroupes sous forme de classes qui indiquent la nature de la variable. Il existe diffrents types
de variables qui peuvent tre dfinies. Dans ces TP, nous aurons utiliser seulement des
variables de type double (i.e. une variable qui a une prcision double par rapport une variable
de type float mais qui occupe deux fois plus de mmoire soit 64 bits). Dautre part, on retrouve
galement la valeur de la variable sous la colonne value si sa matrice contient seulement un
Page 3

Travaux Pratiques de Traitement de Signal


lment, sinon on retrouve inscrite dans cette colonne la taille de la matrice reprsentative de la
variable.
La fentre daffichage de lespace de travail contient une barre doutils vous permettant
deffectuer plusieurs oprations sur vos donnes trs rapidement.
- Rpertoire en cours
Le rpertoire en cours permet de visualiser des fichiers se trouvant dans le mme rpertoire.
Tous les fichiers peu importe leur extension sont affiches. On peut ouvrir un fichier en cliquant
directement dessus. Les principaux fichiers qui peuvent tre lus par Matlab sont les fichiers de
fonctions ou de programmes (*.m), les fichiers de donnes (*.mat) et les fichiers des graphiques
(*.fig). De plus, dans la barre doutils de la fentre daffichage du rpertoire en cours, on peut
crer des rapports qui nous documentent sur les fichiers se trouvant dans le rpertoire. Parmi les
plus importants, il y a le M-Lint Code Check Report
qui va rpertorier les erreurs et les
avertissements dans le code dun programme ou dune fonction. Il y a galement le File
Comparison Report

qui repre les diffrences au niveau du code entre deux documents.

- Historique des commandes


Cette fentre contient les commandes utilises prcdemment dans la fentre de commandes.
Lhistorique des commandes peut compiler plusieurs centaines de lignes de commandes. partir
de cette fentre, on peut copier et coller des lignes de commandes pour les rutiliser dans la
fentre de commandes. Dautre part, partir de la fentre de commandes, on peut retrouver des
lignes de commandes utilises prcdemment en appuyant sur la flche du haut se trouvant sur
votre clavier.

4- Notions de base
Nombres et variables
Chaque variable doit tre dfinie pour tre utilise. Nous dfinissons une variable dans la fentre de
commandes en lui donnant un nom suivi du symbole = et en lui assignant une valeur comme
lexemple ci-dessous :
x = 2.25
Un point-virgule (;) la fin de lexpression permet de ne pas visualiser le rsultat apparatre dans la
fentre de commandes. Le point-virgule peut se placer la fin de chaque expression reprsente
sous forme dquation. Lorsque nous dfinissons une variable comme lexemple ci-haut, Matlab
cre une matrice de grandeur conforme ce que nous lui avons soumis (dans lexemple prcdent
cela correspond une matrice 1 x 1). Une autre particularit du logiciel est que tout nombre soumis
au logiciel est considr comme tant un nombre complexe mme si nous navons pas spcifi de
partie imaginaire notre nombre. Le nombre imaginaire 1 peut tre reprsent dans Matlab soit
par la lettre i ou j. Cest au choix. Il ny a aucun besoin de dfinir i ou j dans ces cas l puisque
Matlab reconnat ces variables comme tant complexes. Il en est de mme pour certains nombres
rels comme pi.
Page 4

Travaux Pratiques de Traitement de Signal


Pour dfinir une matrice ou un vecteur, il faut utiliser des crochets ([]). Il faut premirement entrer
les lments dune mme range en les sparant par des espaces marquant le changement de
colonne. Ensuite pour changer de range, il faut utiliser le point-virgule. Lexemple ci-dessous vous
montre comment entrer une matrice identit 3x3.

La reprsentation des vecteurs, dune procdure est identique celle des matrices exceptes que
nous utilisons juste une range ou une colonne. Pour visualiser, crer, modifier ou supprimer un ou
plusieurs lments dune matrice ou dun vecteur dj cr, il faut utiliser les indexes de la variable.
Un lment dune matrice se dfinit comme suit :
Variable(# range,# colonne)
Par exemple, dans le cas de la matrice identit cre prcdemment les lments I(1,1) et I(3,2)
correspondraient 1 et 0 respectivement. Pour identifier tous les lments dune range ou dune
colonne, nous devons remplacer lindex correspondant par les deux-points (:) (dans lexemple
prcdent I( :,1) correspondrait la premire colonne soit [1;0;0]).
Oprateurs arithmtiques
La liste suivante numre les principaux oprateurs utiliser
Oprateurs
+
*
.*
/
./
^
.^

Fonctions
Addition
Soustraction
Multiplication matricielle
Multiplication des matrices lment par lment
Division droite des matrices
Division des matrices lment par lment
Mise en puissance
Mise en puissance lment par lment
Transpose

Lorsque lon effectue des oprations matricielles, il faut sassurer que le format des matrices
utilises correspond lopration effectue. Limage ci-dessous montre la diffrence entre
loprateur (^) et (.^).

Page 5

Travaux Pratiques de Traitement de Signal


Oprateurs relationnels et logiques
Les oprateurs relationnels et logiques sont utiliss dans les directives de contrle notamment dans
les boucles while et dans les directives if. On peut galement sen servir pour de simples
comparaisons. Comme par exemple, si nous voulons savoir quels lments dune matrice sont plus
grands que ceux dune autre matrice, nous pouvons utiliser lexpression suivante :

La rponse nous est retourne sous forme de matrice. Les lments qui valent 1 veulent dire que la
comparaison est vraie pour cet index et ils valent 0 si la comparaison est fausse. Dans lexemple cidessus la fonction eye est une fonction de Matlab qui dfinit une matrice identit.
La liste des oprateurs relationnels et logiques est prsente ci-dessous.
Oprateurs
<
>
<=
>=
==
~=
&
|
~

Fonctions
Plus petit
Plus grand
Plus petit ou gal
Plus grand ou gal
galit (ne pas confondre avec = qui assigne)
Pas gal
ET
OU
Ngation

Boucles et directives de contrle


Nous allons voir dans cette section les boucles for et while ainsi que la directive if puisquelles sont
largement utilises en programmation. La boucle for sert effectuer les mmes oprations pour
plusieurs itrations. Nous pouvons nous en servir pour construire des matrices, des vecteurs des
graphiques et plusieurs autres choses. Voici la syntaxe employer lorsque nous voulons utiliser une
boucle for :

Page 6

Travaux Pratiques de Traitement de Signal


chaque itration, les oprations sont effectues jusqu la commande end. Rendu ce point l, les
oprations recommencent au dbut de la boucle avec une itration de plus. Ce processus
recommence jusqu ce que index (i dans lexemple) soit rendu sa valeur finale. Dans lexemple
ci-dessus, la boucle for a servi crer un vecteur x de dimension n.
La boucle while a comme objectif deffectuer des oprations tant et aussi longtemps quune
expression logique est vraie. Lorsque lexpression devient fausse, la boucle se ferme et le dcodage
de la fonction continue. La syntaxe employer est la suivante :

Dautre part, la directive de contrle if sert dterminer les oprations effectuer dpendamment
du rsultat dune condition spcifie par lutilisateur. Voici la syntaxe employer dans le cas dune
directive if :

Lexpression logique mentionne dans la syntaxe de la directive if est la condition qui doit tre
valide pour effectuer la srie dopration spcifie sans quoi ce sera une autre srie qui sera
effectue.
Reprsentations graphiques
Il existe deux faons de reprsenter graphiquement des rsultats partir de donnes issues de
lespace de travail. La premire exige lutilisation de fonctions des librairies de Matlab. Ces
Page 7

Travaux Pratiques de Traitement de Signal


fonctions requirent lentre de paramtres spcifiant les donnes du graphique ainsi que les options
daffichage. Voici les principales commandes pour afficher des graphiques 2D :

La premire commande va afficher la variable y en fonction du nombre de points. La deuxime


commande va afficher la variable y en fonction de la variable x. La troisime commande va
galement afficher la variable y en fonction de la variable x, mais en plus, elle indique que le trait
sera bleu et continu. Les deux dernires commandes vont afficher deux sous-graphiques avec les
mmes donnes, mais avec des options daffichage diffrentes. La fonction subplot(m,n,p) cre un
espace graphique m x n. La variable p reprsente le sous-graphique utilis. Les tableaux ci-dessous
montrent les principales options daffichage que vous pouvez utiliser.
Style des traits
Style
Symbole
Continu
-Tiret
:
Pointill
-.
Tiret-pointill

Symbole
+
o
*
.
x
s
d
^
v
>
<
p
h

Couleurs
Couleur
Symbole
b
Blue
k
Black
r
Red
g
Green
c
Cyan
y
Yellow
m
Magenta
w
White
Marqueurs
Marqueur
Plus
Cercle
Astrisque
Point
Croix
Square
Diamant
Triangle pointant vers le haut
Triangle pointant vers le bas
Triangle pointant droite
Triangle pointant gauche
toile cinq branches
toile six branches

Il existe des fonctions qui vous permettent galement dajouter un titre, de nommer vos axes et
dajouter une lgende. Toutefois, nous vous suggrons dutiliser lditeur de proprits qui est
dcrit un peu plus loin dans le document. Il existe galement diffrentes fonctions vous permettant
de produire des diagrammes barres ou des diagrammes circulaires. Nous verrons quelques unes de
ces fonctions lors de la prochaine sance de travaux pratiques
La deuxime faon dafficher un graphique est de taper la commande figure dans la fentre de
commandes et douvrir les outils graphiques en appuyant sur ce bouton
situ dans la barre
doutils de la figure. Vous pouvez galement obtenir le mme rsultat en tapant la commande
Page 8

Travaux Pratiques de Traitement de Signal


plottools dans la fentre de commandes. Limage ci-dessous montre ce que vous devriez apercevoir
sur votre cran.

Les outils graphiques peuvent galement tre affichs aprs que vous ayez cr un graphique avec
les fonctions de la librairie. Sur la fentre daffichage de gauche, vous devez dabord choisir si votre
graphique est 2D ou 3D et choisir le nombre de sous-graphiques que vous dsirez reprsenter.
Ensuite vous devez choisir les variables que vous voulez afficher en les slectionnant et en les
dplaant dans lespace que vous venez de crer (non montr) dans le centre de la fentre
daffichage globale. Vous pouvez galement annoter votre graphique en utilisant les formes
automatiques prvues cet effet au bas de la fentre daffichage de gauche. La fentre daffichage
du bas est lditeur de proprits. En cliquant directement sur les lments du graphique que vous
voulez modifier (e.g. axes, courbes, titres, fond), les options de lditeur de proprits devraient
changer selon le type dlments. Comme par exemple, limage ci-dessous montre lditeur de
proprits pour les axes du graphique. Dans ce cas ci, vous pouvez prciser lchelle, le titre de
laxe, la grosseur et la couleur des caractres utilises et bien dautres options.
La fentre de droite montre les sries de donnes affiches ainsi que les proprits de leur trait. Pour
effacer une srie de donnes cliquer sur la srie dsire en appuyant sur le bouton de droite de la
souris et appuyez sur delete. Pour ajouter une lgende sur votre graphique appuyez sur le bouton
se trouvant dans la barre doutils de la figure. Pour diter la lgende vous pouvez cliquer
directement dessus mme le graphique. Une autre fonctionnalit qui est particulirement
intressante est celle du curseur de donnes qui permet de retracer des points sur votre graphique
qui sont reprsentatifs de vos donnes. Cette fonctionnalit est accessible en appuyant sur le bouton
se trouvant dans la barre doutils de la figure.

Page 9

Travaux Pratiques de Traitement de Signal

Il y a galement dautres fonctionnalits qui sont trs intressantes notamment lorsque vous voulez
afficher une courbe de tendance sur votre graphique, il existe une fonctionnalit appele Basic
fitting qui se trouve dans longlet Tools dans la barre donglets situe dans la fentre daffichage
graphique. Cela vous permet de choisir le type de courbes de tendance de votre choix et de choisir
plusieurs options.
Dautre part si vous voulez afficher des statistiques de faon rapide, il existe une fonctionnalit
appel Data Statistics qui se trouve galement sous longlet Tools. Vous pouvez afficher
rapidement laide de cette fonctionnalit la moyenne, la mdiane, lcart-type et les extrmums
sur votre graphique.
Une fois votre graphique termin vous pouvez le sauvegarder en format *.fig ce qui vous permettra
de recharger le graphique avec Matlab et dy apporter des modifications si ncessaire ou bien vous
pouvez sauvegarder le graphique en format de type image selon vos prfrences. Pour se faire,
cliquez sur file et ensuite sur save as.

5- Prsentation de lditeur de texte


Lditeur de texte permet lutilisateur de crer ses propres fonctions. Pour crer une nouvelle
fonction il faut ouvrir une nouvelle fentre appele lditeur de texte. Pour se faire, nous devons
cliquer sur longlet file, appuyer sur New et choisir loption M-file. Une nouvelle fentre
indpendante devrait maintenant apparatre lcran. Cest ici que nous devons crire le code pour
crer une nouvelle fonction.
Un aspect primordial de la programmation avec Matlab est la squence de programmation. Lorsque
nous appelons une fonction que nous avons cre avec laide de lditeur de texte partir de la
fentre de commandes, Matlab va effectuer les oprations dans lordre dans lequel nous avons crit
le code. Par exemple, il est trs important que nous dfinissions nos variables avant de les utiliser
sans quoi Matlab nous retournera un message derreur dans la fentre de commandes.
Page 10

Travaux Pratiques de Traitement de Signal

Lorsque nous crivons une nouvelle fonction il faut utiliser la syntaxe suivante :

La commande function dfinit le format de la fonction qui sera appele dans la fentre de
commandes. Les noms des variables que vous utilisez dans votre code doivent tre les mmes que
ceux dans lentte de la fonction, mais peuvent tre diffrents lorsque vous appelez la fonction dans
la fentre de commandes. La commande return indique la fin du programme. Lajout de cette
commande est toutefois optionnel puisque la fonction na pas besoin ncessairement de cette
commande pour se terminer.
Lorsque vous crivez votre code, il est bien dajouter des commentaires pour vous rappeler
comment fonctionne votre code. Pour ajouter des commentaires il vous faut ajouter le symbole %
avant votre commentaire, ainsi le restant de la ligne sera ddi des commentaires et ne sera pas
trait par Matlab. Les commentaires apparaissent normalement en vert dans votre programme. Voici
un exemple de code dune fonction cre par lutilisateur :

Page 11

Travaux Pratiques de Traitement de Signal


Votre code peut inclure des fonctions de la librairie Matlab mais galement des fonctions que vous
avez cr. Il est toujours trs important de sassurer que la fonction soit correctement appele. Si
vous avez des doutes, consultez la rubrique daide qui vous dira comment la fonction doit tre
appele et comment elle fonctionne.

6- Librairies de fonctions
Dans cette section sont prsentes diverses fonctions qui pourront vous tre utiles durant le cours.
La liste de ces fonctions est trs loin dtre exhaustive, cest pourquoi il vous faudra utiliser la
rubrique daide pour trouver des fonctions qui effectuerons les oprations que vous dsirez faire.
Statistiques
max(x) : Donne la valeur maximum lintrieur du vecteur x
mean(x) : Calcule la moyenne dun vecteur x
median(x) : Calcule la mdiane dun vecteur x
min(x) : Donne la valeur minimum lintrieur du vecteur x
std(x) : Calcule lcart-type dun vecteur x
Matrices
det(A) : Calcule le dterminant de la matrice A
eye(i): Cre une matrice identit de taille i x i
ones(m,n) : Cre une matrice m x n remplie de un
rand(i,j): Cre une matrice de nombres alatoires compris entre 0 et 1 de taille i x j
size(A,i): Donne la taille de la matrice A dans la ime dimension
sum(A,i): Calcule la somme des lignes dune matrice A dans la ime dimension
transpose(A) : Donne la transpose de la matrice A
zeros(m,n) : Cre une matrice m x n remplie de zro
Graphiques
bar(x,y) : Trace un diagramme barres partir des vecteurs x et y
errorbar(x,sd) : Affiche lcart-type (sd) dun vecteur x en utilisant des barres
derreurs
hold : Rendre les chelles constantes
hist(y) : Trace un histogramme partir des vecteurs x et y
plot(x) : Trace le graphique du vecteur x
subplot(m,n,p) : Cre lespace pour le pime sous-graphique de lespace graphique
mxn
Annotations graphiques
grid : Ajoute un grillage au graphique
legend : Ajoute une lgende au graphique
title : Ajoute un titre au graphique
xlabel : tiquette laxe des x
ylabel : tiquette laxe des y

Page 12

Travaux Pratiques de Traitement de Signal

7- Travail raliser
7.1 Objectif
Le but de ce travail est de se familiariser avec le logiciel Matlab travers la programmation de
certaines fonctions usuelles (2nd ordre) afin dexploiter ces connaissances pour le filtrage de
signal.
7.2 Programmation
Exercice 1 : Rsolution dquations dordre 2
Soit lquation du second degr, avec c,b > 0 :
On suppose que le dterminant (strictement positif) est proche numriquement de b2 ; cela est
vrifi par exemple avec b=160 et c=1.
Donnez les expressions des deux racines x1 et x2 (x2<x1). Ralisez-en le calcul numrique.
Dterminez une nouvelle valeur numrique de x1, en utilisant : x1=c/x2 . Comparez avec la
valeur prcdente.
Exercice 2 : Augmentation de la rsistance lectrique avec la temprature
La rsistance R dun conducteur lectrique est directement proportionnelle sa longueur L, et
inversement proportionnelle sa surface de section A : R = L /A
On appelle rsistivit le facteur de proportionnalit . La rsistivit du cuivre 20C est de
=0.01700.0178 mm2/m. La rsistivit est fonction de la temprature et lon peut dcrire la
variation par :

o :

est la rsistivit C,
un coefficient de temprature (pour le cuivre =0.0039K-1),
est la diffrence de temprature au-del de 20C.

Wieseman (1989) donne une relation plus dtaille :


o :

20 = 0.017 mm2/m
20 = 4.3 x 10-3 K-1

20 = 0.6 x 10-6 K-2


Pour comparer graphiquement les deux relations, entre 20C et 100C, nous allons les tracer.

Crez deux constantes rho et alpha.


Crez un tableau de tempratures theta allant de 20 100C avec un pas de 0.5C.

Calculez delta, puis rho1, selon la formule donnant .


Page 13

Travaux Pratiques de Traitement de Signal

Faire de mme avec la formule de Weiseman.


Tracer les deux rsultats sur le mme graphe : h=plot(theta, rho1, theta, rho2) ;
Mettez les labels ncessaires aux axes avec les commandes xlabel, ylabel.
Pour mettre une lgende aux courbes, on utilise la commande legend (help legend)

Exercice 3 : Trac dune ellipse


Les quations paramtriques dune ellipse centre lorigine des coordonnes, le grand axe 2A et
le petit axe 2B sont :
y = B sin t
o 0 < t < 2 pi
Tracez une ellipse, par exemple avec A = 2 et B = 1.
Essayez de comprendre le sens de A et B.
Exercice 4 : Battements
La superposition de deux ondes de frquences lgrement diffrentes, forme une onde de lentes
variations damplitude. Une manire simple de dmontrer ce phnomne consiste appuyer
simultanment sur deux touches de piano voisines. Pour plus de simplicit, considrons
deux ondes de mme amplitude :
x1 = A sin w1 t
x2 = A sin w2 t
En additionnant ces deux ondes et en utilisant une formule trigonomtrique qui transforme une
somme de deux sinus en un produit, on peut crire :
x = A sin w1 t + A sin w2 t = 2A cos (w1-w2)t/2 sin (w1+w2)t/2
En prenant A=1, w1=2pi et w2=2.2pi, gnrez les deux ondes x1 et x2. Puis simulez leur
superposition. Choisissez t de manire pouvoir visualiser au moins deux priodes denveloppe.
Exercice 5 : Traverse dune rivire la nage
C

B
S

1.1 km
T
V
A
Un nageur traverse une rivire de 1.1 km de large. La vitesse de nage moyenne est de V=0.9
km/h et la vitesse du courant de S=1.5km/h. Le nageur part de A, avec pour objectif
datteindre le point oppos B, mais il rejoint lautre rive au point C.
a. Ecrivez le vecteur V, vitesse du nageur par rapport leau, le vecteur S, vitesse du
courant par rapport au fond, et calculez le vecteur vitesse relle T, vitesse par rapport au
fond, du nageur. Trouvez la valeur de la vitesse et langle BAC
b. Calculez la distance BC.
Page 14

Travaux Pratiques de Traitement de Signal

Exercice 6 : Circuit de rsistances en parallle


Considrons le circuit de rsistances en parallle compos des rsistances R 1, R2 et R3,
parcourues par les courants dintensit I1, I2 et I3. Daprs la loi dOhm, la diffrence de
potentiel aux bornes des rsistances est :
I1R1 = I2 R2 = I3 R3
Daprs la loi de Kirchhoof, on a :

I = I1 + I2 + I3

La combinaison de ces deux lois donne :

1/R = 1/R1 + 1/R2 + 1/R3

Dfinir un tableau r contenant les 3 rsistances R1=500, R2=1000 et R3=1500.


A laide de la commande ones, crez un tableau de taille 3 et contenant que
des 1. Calculez de manire efficace, un tableau R_inv contenant les inverses
des 3 rsistances.
Puis calculez 1/R en sommant les lments de R_inv laide de la commande sum.
Exercice 7 : oprations sur des matrices
Dfinir les 3 matrices A, B et C suivantes :

];

];

Pour dfinir une matrice nulle, il existe plusieurs mthodes :


>> O = A - B
>> O = zeros(2,2)
>> O = zeros(2) % pour une matrice
carre >> >> O = zeros(size(A))
Contrairement aux nombres, le produit matriciel nest pas gnralement commutatif.
Vrifiez que : A*B B*A.
Notez que si les deux matrices A et B ne sont pas carres, lun des produits peut
exister, lautre non. Essayez de trouver un exemple
Pour dfinir la matrice identit : I = eye(2) ou >> I = eye(size(A)).

Vrifiez que :
A*I = I*A = A
o B*I = I*B = B
C*I = I*C = C

Pour la matrice A, vrifiez avec MATLAB que les oprations A^2 et A.^2 donnent des
rsultats diffrents et indiquez ce qui se produit dans chaque cas.
Exercice 8 : Echelles de tempratures
En se basant sur des considrations thermodynamiques, le physicien britannique William
Kelvin dfinit, en 1854, le zro absolu correspondant -273.15C. Cette valeur reprsente la
base de lchelle de Kelvin qui attribue au point dbullition de leau la temprature :
Page 15

Travaux Pratiques de Traitement de Signal


100 + 273.15 = 373.15 K
Calculez et affichez avec MATLAB, un tableau des valeurs de K pour les
tempratures suivantes : -200, -150, , 200C

Tracez le graphe dcrivant le rapport entre les chelles de Celsius et de Kelvin sur
lintervalle de mesure 0K et 400K

Exercice 9 : Circuit de condensateurs en srie


Soit un circuit de 3 condensateurs en srie. A lquilibre, les charges lectriques de ces trois
condensateurs sont gales, appelons q cette valeur commune. Soit C1, la capacit du premier
condensateur, dont la tension aux bornes est de : U1 = q/C1. De mme : U2=q/C2 et U3=q/C3.
La diffrence de potentiel entre les deux bornes des 3 condensateurs en srie vrifie :
U = U1 + U2 + U3
Pour remplacer les trois condensateurs par un unique composant quivalent produisant le
mme effet, il doit fournir une capacit : C = q / U
Montrez que : 1/C = 1/C1 + 1/C2 + 1/C3
Calculez C avec MATLAB avec C1 = 20pF, C2 = 30 pF et C3 = 40 pF
Exercice 10 : Probabilits
Lanons une parie de ds. Le nombre de combinaisons possibles est de 62 = 36. Intressonsnous la somme des nombres obtenus. Pour chacune, nous pouvons obtenir leur probabilit :
Somme X
Probabilit P

2
1/36

3
2/36

4
3/36

5
4/36

6
5/36

7
6/36

8
5/36

9
4/36

10
3/36

11
2/36

12
1/36

Dfinissez le vecteur X, en se rappelant quentre chaque valeur, il y a un


incrment de 1
Dfinissez le vecteur de probabilits P
A laide du produit scalaire, calculez la moyenne de X, galement appele
esprance de X, qui est :

Vrifiez que la somme des probabilits vaut 1.


Pour visualiser la distribution des probabilits, nous allons tracer un histogramme.
Essayez la commande bar(X,P) et observez le rsultat.

Page 16

ISET DE SFAX

DEPARTEMENT DES TECHNOLOGIES


DE LINFORMATIQUE

Analysede
designaux
signauxpar
parTransforme
Transformede
Analyse
deFourier
Fouriersous
sousMatlab/Simulink
Matlab/Simulink

Travaux Pratiques datelier logiciel


Traitement de Signal

1e Anne Licence Applique


Domaine de formation : Sciences et technologies
Mention : Technologies de lInformatique (TI)
Parcours : Tronc Commun (TC)

2012-2013

Travaux Pratiques de Traitement de Signal

TP n2 : Analyse de signaux par Transforme de Fourier


sous Matlab/Simulink
1- Introduction
Un signal numrique est dfini par un nombre dchantillons N relevs une frquence
dchantillonnage Fe. Les signaux sont toujours capts de manire temporelle, mais on sintresse
souvent leur allure frquentielle. Lobjectif de ce TP est de gnrer et de visualiser des signaux
usuels tels que les signaux carres, sinusodaux puis deffectuer leur analyse spectrale laide des
outils disponibles sous Matlab tels que la FFT (Fast Fourier Transform) et DFT (Discrete Fourier
Transform) et aussi le filtrage et lanalyse dun signal bruit.
1. Commandes de base sous Matlab pour le traitement du signal
1. Un vecteur ligne et un vecteur colonne
Ligne : Commande : A=[0 1 3]
Rsultat dans la Commande Window : A = [0
Colonne : Commande : B=[2;4;3]
Rsultat dans la Commande Window :
B=
2
4
3
2. Une matrice identit : Commande : eye(6)
Rsultat dans la Commande Window :
ans =
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0
0 0 0 0 1

3]

3. Une matrice constante : Commande : ones(2,3,3)


Rsultat dans la Commande Window :
ans =
3 3 3
3
3 3
4. Une matrice alatoire : Commande : rand(2,3)
Rsultat dans la Commande Window :
ans =
0.9572 0.8003 0.4218
0.4854 0.1419 0.9157

Page 18

Travaux Pratiques de Traitement de Signal


2. Analyse spectrale des signaux selon la methode de Fourier
1. En ralisant sous Matlab le programme permettant lchantillonnage fe=1000Hz et laffichage
dun signal sinusodal x(t) dune dure de 1s avec une frquence propre fe=10Hz et une
amplitude de 5
Programme :
clear all
t=[0:0.001:1];
y=5*sin(2*pi*5*t);
plot(y,'r-')
grid;

2. fe=100Hz
Programme :
clear all
t=[0:0.01:1];
y=5*sin(2*pi*5*t);
plot(y,'r-')
grid;

Page 19

Travaux Pratiques de Traitement de Signal

fe=12,5Hz
Programme :
clear all; t=[0:0.01:1];
y=5*sin(2*pi*5*t);
plot(y,'r-') ; grid;

Page 20

Travaux Pratiques de Traitement de Signal


3.A laide de la commande <fft>
fe=500Hz
>> plot(abs(fft(y)),'r');

fe=12,5Hz
>> plot(abs(fft(y)));

Page 21

Travaux Pratiques de Traitement de Signal

Nous pouvons voir que plus la frquence dchantillonnage nest faible, plus le signal de sortie est
satur.
4.Taille de X(f)
clear all
t=[0:0.001:1];
y=5*sin(2*pi*5*t);
H=fft(y);
size(H)

ans =
1

1001
t=[0:0.08:1];
y=5*sin(2*pi*5*t);
H=fft(y);
size(H)

ans =
1

13
t=[0:0.01:1];
y=5*sin(2*pi*5*t);
H=fft(y);
size(H)

ans =
0

101

5. Dans tous les cas, on ne peut pas observer une simple composante frquentielle
.
Parce que dans tous les cas, Fe (la frquence dchantillonnage) soit suprieure ou gale deux fois
la plus haute frquence contenue dans le spectre de ce signal, do les diagrammes sont symtriques
par rapport .
6. La commande <ifft>
fe=12,5Hz
clear all
t=[0:0.08:1];
y=5*sin(2*pi*5*t);
M=ifft(y);
plot(ifft(y),'r')
grid;

Page 22

Travaux Pratiques de Traitement de Signal

fe=200Hz
clear all; t=[0:0.005:1];
y=5*sin(2*pi*5*t);
M=ifft(y);
plot(ifft(y),'r'); grid on;

Page 23

Travaux Pratiques de Traitement de Signal


fe=1000Hz
clear all
t=[0:0.001:1];
y=5*sin(2*pi*5*t);
M=ifft(y);
plot(ifft(y),'r')
grid;

7. Conclusion
Les simulations faites faisant varier la frquence dchantillon montrent que plus que la
frquence dchantillon est leve, les rsultats sont plus prcis et sapprochent des rsultats
thoriques.
3.Filtrage et analyse dun signal bruite
1et 2 Cration de 1000 chantillons de xb(t) et laffichage de sa taille
Programme :
t=[0:0.001:1] ;
x=0.7*sin(2*pi*50*t)+sin(2*pi*120*t)+randn(size(t)) ;
size(t)
size(x)

Rsultat dans la Commande Window :


ans =
1
1001
ans =
1
1001
La taille de est 1001.
La taille de ( ) est 1001.
Page 24

Travaux Pratiques de Traitement de Signal


3.Visualisation de lvolution temporelle du signal xb(t) :
plot(x);
ylabel('Fonction : x');
grid;
5
4
3

Fonction : x

2
1
0
-1
-2
-3
-4
-5

200

400

600

800

1000

1200

1000

1200

4. Visualisation de lvolution temporelle de FFT du signal xb(t) :


plot(abs(fft(x)));

500
450
400

Fonction : abs(fft(x)

350
300
250
200
150
100
50
0

200

400

600

800

Page 25

Travaux Pratiques de Traitement de Signal


5. Observation en changement de facteur Q
Q=1.2
Commande :
t=[0:0.001:1] ;
x=0.7*sin(2*pi*50*t)+sin(2*pi*120*t)+1.2*randn(size(t)) ;
size(t)
size(x)

Rsultat dans la Commande Window :


ans =
1

1001

1001

ans =

La taille de est 1001.


La taille de ( ) est 1001.

Fonction : x

-2

-4

-6

200

400

600

800

1000

1200

plot(abs(fft(x)));

Page 26

Travaux Pratiques de Traitement de Signal


600

500

Fonction : abs(fft(x)

X: 121
Y: 501.8

400

300

200

100

200

400

600

800

1000

1200

Q=1.5
Commande :
t=[0:0.001:1] ;
x=0.7*sin(2*pi*50*t)+sin(2*pi*120*t)+1.5*rand() ;
size(t)
size(x)

Rsultat dans la Commande Window :


ans =
1

1001

1001

ans =

La taille de est 1001.


La taille de ( ) est 1001.
plot(x);

Page 27

Travaux Pratiques de Traitement de Signal


2.5
2
1.5

Fonction : x

1
0.5
0
-0.5
-1
-1.5

200

400

600

800

1000

1200

400

600

800

1000

1200

plot(abs(fft(x)));

1200

Fonction : abs(fft(x)

1000

800

600

X: 121
Y: 488.1

400

200

200

6. Synthtise du filtre numrique


L=fir1(10,0.25,'r');
freqz(L)

7. La commande <freqz> permet dafficher les spectres damplitudes et de phase du filtre

Page 28

Travaux Pratiques de Traitement de Signal

Magnitude (dB)

-50

-100

-150

0.1

0.2

0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)

0.9

0.1

0.2

0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)

0.9

Phase (degrees)

0
-200
-400
-600
-800

8. La commande <tf> permet de dduire la fonction de transfert du filtre


>> tf(L)
Transfer function from input 1 to output:
-0.003871
Transfer function from input 2 to output:
1.758e-018
Transfer function from input 3 to output:
0.03209
Transfer function from input 4 to output:
0.1167
Transfer function from input 5 to output:
0.2207
Transfer function from input 6 to output:
0.2687
Transfer function from input 7 to output:
0.2207
Transfer function from input 8 to output:
0.1167
Transfer function from input 9 to output:
0.03209
Transfer function from input 10 to output:
1.758e-018
Transfer function from input 11 to output:
-0.003871

Page 29

Travaux Pratiques de Traitement de Signal


Bruit:
H = tf(1,[-0.003871 1.758e-018 0.03209 0.1167 0.2207 0.2687 0.2207 0.1167
0.03209 1.758e-018 -0.003871]);
t=[0:0.001:1];
X=0.7*sin(2*pi*50*t)+sin(2*pi*120*t)+randn(size(t));
lsim(H,X,t)
Linear Simulation Results
5
4
3

Amplitude

2
1
0
-1
-2
-3
-4

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Time (sec)

Sans bruit :
H = tf(1,[-0.003871 1.758e-018 0.03209 0.1167 0.2207 0.2687 0.2207 0.1167
0.03209 1.758e-018 -0.003871]);
t=[0:0.001:1];
X=0.7*sin(2*pi*50*t)+sin(2*pi*120*t);
lsim(H,X,t)
Linear Simulation Results
2

1.5

Amplitude

0.5

-0.5

-1

-1.5

-2

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Time (sec)

Page 30

Travaux Pratiques de Traitement de Signal

6. Visualisation des signaux filtr et non filtr


Spectre filtr
plot(abs(fft(Y)),'r','LineWidth',2);
ylabel('Fonction : abs(fft(Y)');
grid;
-4

Fonction : abs(fft(Y)

x 10

200

400

600

800

1000

1200

Spectre non filtr

Page 31

Travaux Pratiques de Traitement de Signal


-5

x 10

Fonction : abs(fft(Y)

200

400

600

800

1000

1200

Avec filtrage, moins de perturbations et plus prcise.


4.Generation de signaux dterministes sous SIMULINK
T=20s

Signal
Generator

Scope

T=5s

Page 32

Travaux Pratiques de Traitement de Signal

Signal carr :

Page 33

ISET DE SFAX

DEPARTEMENT DES TECHNOLOGIES


DE LINFORMATIQUE

Synthse des filtres numriques sous


Matlab/Simulink

Travaux Pratiques datelier logiciel


Traitement de Signal

1e Anne Licence Applique


Domaine de formation : Sciences et technologies
Mention : Technologies de lInformatique (TI)
Parcours : Tronc Commun (TC)

2012-2013

Travaux Pratiques de Traitement de Signal

TP n3 : Synthse dun Filtre passe-bas Rponse


Impulsionnelle Finie sous Matlab/Simulink
1- Introduction
Le signal de sortie y(t) de tout filtre analogique est un produit de convolution entre sa rponse
impulsionnelle h(t) et le signal dentre x(t) :

Cette relation temporelle s'exprime plus simplement dans le domaine frquentiel sous la forme :
Y(f) = H(f).X(f)
Il s'agit d'une simple transposition de l'quation du produit de convolution en temps continu dans le
domaine du temps chantillonn. Son quation gnrale s'crit :

Un filtre RIF peut galement tre reprsent par un graphe :

1.1 Les caractristiques du filtre RIF :


-

Facteur de densit : 16
Taux de rjection : 1dB
Attnuation min dans la bande de rjection : 10dB pour f > 1.2 kHz
Frquence de coupure : 200Hz
Frquence d chantillonnage : 24 kHz

Aprs avoir rgl tous les paramtres, nous ralisons un filtre passe-bas :

Page 35

Travaux Pratiques de Traitement de Signal

Courbe de gain et de phase

Page 36

Travaux Pratiques de Traitement de Signal


-

Rponse impulsionnelle du filtre :

Rponse indicielle :

Page 37

Travaux Pratiques de Traitement de Signal


- Relation de rcurrence :
Ce tableau nous indique les diffrents coefficients du filtre.

Nous constatons que lordre du filtre est de 14. Nanmoins, nous pouvons dire que le filtre est
stable car le filtre est un RIF.
La relation de rcurrence avec les coefficients est la suivante :
Y(z) = b0 * X(z) + b1 z-1 X(z) + + b14 z-14 X(z)
Pour la relation de rcurrence du filtre avec ses coefficients, il suffit de remplacer b0b14 par les
valeurs du tableau ci-dessus.
Relation trouve entre les coefficients: b0=bm, b1=bm-1 ...., etc.
Do en cas gnral, pour 0<j<m, bj = bm-j
Nous ralisons le filtre prcdent sous Simulink. Pour obtenir une rponce impulsionnelle, nous
ralisons le schma suivant :

SIMULINK pour les rponses impulsionnelles:

Page 38

Travaux Pratiques de Traitement de Signal

SIMULINK pour les indicielles donnes:

Conclusion : ces sont les mmes courbes que nous avons trouv sous Simulink.

Page 39

Travaux Pratiques de Traitement de Signal


1.2 Utilisation du filtre sous Simulink
Grce lapplication fdatool nous pouvons raliser un filtre simul sous SIMULINK

Nous utilisons le signal signal.mat en entre du filtre. Ci-dessous, les courbes superposes du
signal filtr et non filtr.

Conclusion
Nous pouvons ainsi en dduire que le filtre rduit lamplitude du signal dentre, particulirement
pour des tensions ngatives
II Synthse dun filtre passe-bas rponse impulsionnelle infinie (RII)
2.1- Dfinition :
On appelle filtre RII, un filtre numrique dfini par l'quation suivante :

Page 40

Travaux Pratiques de Traitement de Signal

On remarque que cette quation fait intervenir non seulement les chantillons retards du signal
d'entre mais galement les chantillons retards du signal de sortie. On parle galement de filtre
rcursif.
2.2- Conception d'un filtre RII :
Contrairement aux filtres RIF on ne part pas de la rponse impulsionnelle thorique d'un filtre
analogique que l'on tronque mais directement de la fonction de transfert en s du filtre analogique.
Cette fonction de transfert analogique n'tant pas tronque, sa rponse impulsionnelle est
entirement conserve, c'est pourquoi on parle de filtre rponse impulsionnelle infinie.
Il existe plusieurs mthodes pour passer de la fonction de transfert en s la fonction de transfert en
z, non ne dcrirons cependant que la mthode de la transformation bilinaire.
Dans ce cas, on a l'galit suivante :

Cette mthode prsente toutefois l'inconvnient que la pulsation dans le domaine chantillonn
subit, de par le fait de cette transformation non linaire, une distorsion et ne correspond plus tout
fait la pulsation du domaine analogique. On a en effet :

2.3-Nous utilisons fdatool avec les mmes paramtres mais nous changeons le type de filtre

Page 41

Travaux Pratiques de Traitement de Signal


La courbe de gain et de phase :

Rponse Impulsionnelle :

Rponse Indicielle :

Page 42

Travaux Pratiques de Traitement de Signal

Les coefficients :

Page 43

Travaux Pratiques de Traitement de Signal


Nous remarquons quil y a galement un dphasage. Cependant ce filtre est dordre 1 contrairement
au prcdent.
La FFT des deux signaux

En rouge le signal filtr


En bleu le signal non filtr
2.2 Synthse dun filtre davantage slectif :
La courbe de Gain et de Phase

Page 44

Travaux Pratiques de Traitement de Signal


Les coefficients :

La FFT des deux signaux

En rouge le signal filtr


En bleu le signal non filtr
2.3. Transformation du filtre passe-bas en filtre passe-bande
La courbe de Gain et de Phase :

Page 45

Travaux Pratiques de Traitement de Signal


Les coefficients :

La FFT des deux signaux :

En rouge le signal filtr


En bleu le signal non filtr

Conclusion
Nous remarquons que le filtre RIF est plus stable mais ordre trs lev tandis que le filtre RII est
moins stable mais un ordre gal 1.

Page 46

ISET DE SFAX

DEPARTEMENT DES TECHNOLOGIES


DE LINFORMATIQUE

Signaux analogiques & numriques,


Produit de Convolution &Corrlation
sous Matlab/Simulink

Travaux Pratiques datelier logiciel


Traitement de Signal

1e Anne Licence Applique


Domaine de formation : Sciences et technologies
Mention : Technologies de lInformatique (TI)
Parcours : Tronc Commun (TC)

2012-2013

Travaux Pratiques de Traitement de Signal

TP n4 : Signaux analogiques & numriques, Produit de


Convolution &Corrlation sous Matlab/Simulink
1- Introduction
La reprsentation mathmatique des signaux offre des moyens d'analyser, de concevoir et de
caractriser les systmes de traitement de l'information. Lobjectif de cette manipulation est de
gnrer, de visualiser quelques signaux analogiques, de dterminer leur produits de convolutions et
leur corrlation en utilisant MATLAB/Simulink

2- Reprsentation temporelle des signaux


Cette reprsentation est base sur lvolution du signal en fonction du temps. On distingue deux
types fondamentaux de signaux :
2.1- Les signaux certains ou dterministes
Leur volution en fonction du temps peut tre parfaitement dcrite par un modle mathmatique.
Parmi les signaux dterministes on distingue :

Les signaux priodiques : Ce sont les signaux dont lvolution dans le temps est prvisible et
qui obissent une loi de rptition cyclique rgulire, de priode T.
s (t) = s ( t + k.T ), k est un entier.

Figure 1 : Signal priodique.

Les signaux sinusodaux sont un cas particulier de ces signaux :


s(t) = A.sin[(2/T)t + ]

Page 48

Travaux Pratiques de Traitement de Signal


2.2- Les signaux alatoires
Ce sont les signaux dont le comportement temporel est imprvisible. Ils sont gnrs par les lois
du hasard.

Figure 2 : Signal alatoire.

3- Produit de Convolution
Le signal de sortie y(t) de tout filtre analogique est un produit de convolution entre sa rponse
impulsionnelle h(t) et le signal dentre x(t) :
()

( )

( )

( )

Cette relation temporelle s'exprime plus simplement dans le domaine frquentiel sous la forme :
Y(f) = H(f).X(f)
Il s'agit d'une simple transposition de l'quation du produit de convolution en temps continu dans le
domaine du temps chantillonn. Son quation gnrale s'crit :
( )

( )

4- Fonction de corrlation
Pour comparer deux signaux entre eux, ou faire ressortir une caractristique dun signal noy dans
le bruit, on compare le signal x(t) pris un instant t , un signal y(t) pris un instant t= t -,
4.1- L'inter-corrlation
L'inter-corrlation compare un signal x(t) et un signal y(t) retard. Pour les signaux nergie finie :
()

( )

Page 49

Travaux Pratiques de Traitement de Signal


4.2- Lautocorrlation
Lauto corrlation ralise une comparaison entre un signal x(t) et ses copies retardes. Pour les
signaux nergie finie :
()

( )

5- Simulation par MATLAB


5.1- Reprsentation de limpulsion de Dirac : (t)
Soit le script suivant :
%Gnration d'une impulsion unit
%Gnration d'un vecteur de -10 0 20
n=-10:20;
%Gnration de l'impulsion unit
u=[zeros(1,10) 1 zeros(1,20)];
%Tracer le signal gnr
stem(n,u);
xlabel('Temps index en n');
ylabel('Amplitude');
title('impulsion unit');
axis([-10 20 0 1.2]);

TAF :
1- Excuter ce programme.
2 - Faire les changements ncessaires au programme ci-dessus pour reprsenter les
impulsions suivantes : 4 (t), (t-1), 2 (t + 2) et (t + 4).

5.2- Gnration dune impulsion rectangulaire

Soit le script suivant :


Clear all ;
t = -1:0.00001:1 ;
x1 = rectpuls(t,0.05) ;
plot(t,x1) ; axis([-0.1 0.1 -0.2 1.2]);
grid ; xlabel('Temps(sec)'); ylabel('Amplitude');
title('impulsion rectangulaire ') ;

TAF :
1- Excuter ce programme et dterminer les caractristiques.
2- Modifier Ce programme pour construire une impulsion rectangulaire de dure T=0.08
s et damplitude A=2V.
5.3- Gnration du sinus cardinal : sinc (x)
Soit la fonction y(x) = sinc(x)=sin(x)/x.
On utilise lexpression logique(x= =0) pour exprimer : que la lim y(x) = 1 lorsque x 0.

Page 50

Travaux Pratiques de Traitement de Signal


Soit le script suivant :
%Traages de la fonction sinus cardinal
%Domaine des valeurs de la variable x x=-4*pi:pi/100:4*pi;
%valeurs de la fonction y=(x==0)+sin(x)./(x+(x==0)) ;
%Traages de la fonction sinus cardinal plot(x,y)
grid ;
title('sinus cardinal y=sin(x)/x') ;

5.4- Gnration de quelques signaux :


Excuter les scripts des programmes ci-dessous, dterminer le nom, le type de chaque signal ainsi
que sa forme gnrale et terminer ce qui manque dans les programmes (commentaires, titre...)
Script 1 :
fs = 10000 ;
t = 0:1/fs:1.5 ;
y = square(2*pi*50*t) ;
plot(t,y), axis([0 0.1 -1.2 1.2]),
Grid ;
xlabel('Temps (sec)') ;
ylabel('Amplitude') ;
title('Nature du signal')

Script 2 :
t = -1:0.00001:1 ;
x2 = tripuls(t,0.04) ;
plot(t,x2),
axis([-0.1 0.1 -0.2 1.2]);
grid ;
xlabel('Temps (sec)') ;
ylabel('Amplitude') ;
title('nature de limpulsion') ;

Script 3 :
fs = 10000 ;
t = 0:1/fs:1.5 ;
y1 = sawtooth(2*pi*50*t);
plot(t,y1); axis([0 0.1 -1.2 1.2]);
grid; xlabel('Temps (sec)');
ylabel('Amplitude') ;
title('type du signal') ;

Script 4 :
x=0:0.001:4*pi ; y=sin(x) ; plot(x, y) ;
axis([0 4*pi -1.2 1.2]) ;
grid ;

TAF :
1- Excuter ce programme.
2- Faire les changements ncessaires au programme ci-dessous pour reprsenter le signal
: y(t) = 2 .sin(x)

Page 51

Travaux Pratiques de Traitement de Signal


5.6- Produit de convolution de deux signaux analogiques
Le script du programme Matlab suivant calcule le produit de convolution (La commande :
conv) de deux signaux rectangulaires, lun de dure 20 s et damplitude 2V et lautre de dure
40s et damplitude 3V.
Script :
clear x=zeros(100,1);
for i=41:60,x(i)=2;end;
y=zeros(100,1);
for i=31:70,y(i)=3;end;
N=100;
a=-N/2:N/2-1;
b=-N:N-2;
subplot(2,2,1);plot(a,x);axis([-50,50,0,2.5]);grid;
title('premier signal');xlabel('t');ylabel('x(t)');
subplot(2,2,2);plot(a,y);axis([-50,50,0,3.5]);grid;
title('deuxime signal');xlabel('t');ylabel('y(t)');
subplot(2,2,4);plot(b,conv(x,y));grid;
axis([-60 60 0 140]);title('convolution');xlabel('t');

TAF :
1- Tester le programme ci-dessus et vrifier thoriquement le rsultat obtenu.
2- Changer le programme pour avoir le produit de convolution de deux signaux
rectangulaires identiques.
3- Interprter les rsultats des deux questions.
5.7. Corrlation
5.7. 1. Inter-corrlation
En utilisant le programme du produit de convolution ci-dessus, crire un programme Matlab
qui calcule et trace linter-corrlation (commande xcorr) de deux signaux rectangulaires, un de
largeur
30s et damplitude 4 V et lautre de largeur 50s et damplitude
5V. Vrifier thoriquement le rsultat obtenu.
5.7. 2. Autocorrlation
Changer le programme pour quil permet de donner lautocorrlation dun signal rectangulaire
de largeur 50s (commence -31 et se termine 20) et damplitude 4V.

Page 52

ISET DE SFAX

DEPARTEMENT DES TECHNOLOGIES


DE LINFORMATIQUE

Simulink : Initiation la technique de


drag and drop

Travaux Pratiques datelier logiciel


Traitement de Signal

1e Anne Licence Applique


Domaine de formation : Sciences et technologies
Mention : Technologies de lInformatique (TI)
Parcours : Tronc Commun (TC)

2012-2013

Travaux Pratiques de Traitement de Signal

TP n5 : Simulink : Initiation la technique


de drag and drop
1- Introduction Simulink
1.1 Simulation l'aide de Simulink
Simulink est un outil MATLAB qui permet de remplacer les quations mathmatiques entre
certaines variables par des blocs organiss en un schma. Une bote de dialogue contenant la liste
des librairies permettant, d'une manire simple et rapide, dtablis les modles sous forme de
schmas fonctionnels. Pour dmarrer Simulink, on peut taper la commande Simulink ou
simplement cliquer sur l'icne de Simulink dans le menu de MATLAB. Une fentre apparat alors
gauche de l'cran dans laquelle sont affiches les diffrentes librairies de Simulink (figure 0).
Chaque librairie contient des blocs fonctionnels qui sont regroups par catgorie. Pour accder aux
diffrents blocs d'une catgorie quelconque, il suffit de cliquer sur le nom de cette catgorie. Les
librairies sont des collections de blocs qui sont ddis des domaines bien spcifiques. La librairie
standard Simulink, par contre, est une librairie d'une utilisation gnrale et peut tre exploite
conjointement avec d'autres librairies.

Figure 0 - Extrait de la liste des librairies de Simulink


Cration des schmas-blocs
Les schmas-blocs doivent tre crs dans un fichier Simulink distinct, de type .mdl . Pour crer
un nouveau fichier de travail Simulink : File, New, Model ou cliquer sur l'icne
Pour ouvrir un fichier existant : File, Open ou cliquer sur l'icne
Pour insrer un bloc dans un fichier, il faut cliquer sur le bloc dsir puis le faire glisser jusqu'
l'endroit appropri dans le fichier de travail, en maintenant le bouton gauche de la souris enfonc.
Relchez le bouton de la souris lorsque le bloc est plac l'endroit voulu. On peut rechercher un
bloc de la liste en tapant une partie de son nom dans la case blanche apparaissant en haut de la
librairie, puis en appuyant sur RETOUR.

Page 54

Travaux Pratiques de Traitement de Signal

Figure 1 - Liste des librairies Commonly Used Blocks de Simulink

Pour relier les blocs insrs dans le fichier entre eux, cliquez sur le triangle apparaissant sur le
premier bloc, maintenez le bouton gauche de la souris enfonc et faites glisser le curseur jusqu'au
triangle du second bloc. Une flche pleine apparatra si le lien est ralis correctement. Si non
le trait symbolisant le lien n'est pas un trait plein ou s'il comporte une double flche en son centre.
La solution est donc de supprimer le trait et de recommencer.
Certaines versions de Simulink offrent un raccourci pour relier deux blocs, il sagit de :
cliquer sur le premier bloc,
maintenir la touche CTRL enfonce,
-cliquer sur le second bloc raccorder.
Cette mthode cre automatiquement le trait. Le sens du lien ainsi cr dpend de l'ordre dans
lequel les blocs ont t slectionns.
Page 55

Travaux Pratiques de Traitement de Signal


Ajustement des paramtres des blocs
Une fois les blocs insrs dans le fichier, leurs paramtres doivent tre ajusts. Ceci se fait en
double-cliquant sur un bloc. Une fentre de dialogue apparat, dans laquelle on insre les valeurs
appropries.
Il faut porter une attention particulire au bloc Time Scope . Celui-ci permet de visualiser les
courbes rsultant de la simulation et aussi d'enregistrer ces donnes pour qu'elles soient rcupres
dans MATLAB. Voici les ajustements faire :
double-cliquer sur le bloc Time Scope . Une fentre s'ouvre (voir figure 3 / c'est l que
seront affiches les courbes suite la simulation),

cliquer sur l'icne Properties:


aller dans l'onglet Data History (voir figure 4a),
slectionner Save data to workspace,
au besoin, modifier le nom de variable ScopeData pour le nom voulu,
choisir le format Array.

Figure 2 - Bloc Time Scope

Figure 3 - Fentre du Time Scope

Le bloc oscilloscope Time Scope ne conserve que les dernires donnes de la simulation. Il est
possible de fixer le nombre de points conservs en l'indiquant la suite de la mention Limit data
points to last de la fentre Data History (figure 4a). par dfaut, le nombre de points est fix
5000, ce qui s'avre gnralement adquat.
Notez qu'il est possible d'avoir plusieurs entres dans le bloc Time Scope . Pour ce faire, il sagit
de :
double-cliquer sur ce bloc,
cliquer sur le bouton Properties, dans le haut de la fentre ayant apparu,
sous l'onglet General, changer le nombre d'axes spcifis (voir figure 4b).

Page 56

Travaux Pratiques de Traitement de Signal

(a)
(b)
Figure 4 - Les deux onglets permettant d'ajuster les paramtres du Time Scope
Ajustement des paramtres de la simulation
Aprs avoir cr le schma excuter, cliquez sur Simulation du menu dans le haut de la fentre
o se trouve le schma, puis slectionnez Normal. Ensuite, toujours dans Simulation, il faut :
cliquer sur Simulation Parameters,
aller dans l'onglet Solver,
dfinir les temps de dbut et de fin de simulation (par dfaut, ces temps sont 0s et 10s
respectivement),
choisir le mode de simulation: Type Fixed-Step .
Enfin, lorsque les paramtres sont entrs, la simulation peut tre amorce de la faon suivante:
cliquer sur l'icne
ou aller dans l'item Simulation du menu et faire Start.
Le temps de simulation apparat dans la case en bas du fichier.
1.2 Rcupration des donnes
Pour rcuprer les donnes gnres par la simulation, il faut insrer dans le schma un bloc
provenant de la librairie Simulink, Sinks. Les deux blocs les plus utiliss sont le Time Scope et
To Workspace . Ce dernier enregistre les donnes dans MATLAB mais ne les affiche pas,
contrairement l'oscilloscope. Les ajustements de l'oscilloscope ont t dcrits la section
prcdente. Pour le bloc To Workspace , il faut suivre les tapes suivantes (avant l'excution de
la simulation):
double-cliquer sur le bloc,
donner le nom de variable voulu,
fixer le nombre de points conserver (Limit data points to last),
enregistrer le format Array.
Une fois la simulation excute, on sauve les donnes dans des variables en crivant dans la fentre
de commande MATLAB ou encore dans le M-File les commandes suivantes:
t=ScopeData(:,1)
y=ScopeData(:,2)
Page 57

Travaux Pratiques de Traitement de Signal


Le nom ScopeData doit tre remplac par le nom de variable que l'on a choisi lorsque l'on a
ajust les paramtres de l'oscilloscope ou du bloc To Workspace . Les donnes de la premire
colonne de cette variable correspondent au temps o ont t prlevs les chantillons, tandis que
les valeurs de la deuxime colonne sont les rsultats eux-mmes.

2- Travail raliser
2.1 Objectif
Le but de ce travail est de se familiariser avec la technique de drag and drop de Simulink en
valuant la rponse impulsionnelle dun systme linaire (filtre) et en simulant le filtrage dun
signal.
2.2 Introduction
La rponse impulsionnelle h(t) dun systme linaire est la sortie du systme si lentre est
limpulsion de Dirac (t). Dans ce travail vous devrez valuer la rponse impulsionnelle dun
systme linaire et lafficher graphiquement. La fonction de transfert dun systme de quatrime
ordre vous sera prcise au laboratoire.
Vous devrez galement valuer la rponse lchelon dun systme. Vous aurez loccasion
dobserver les diffrentes rponses obtenues selon la position des ples du systme.
La dernire partie du travail traite du filtrage dun signal. Le but est dobserver la sortie dun filtre
Butterworth dont lentre est un signal tel quune onde carre priodique.

A 1re PARTIE : Rponse Impulsionnelle dun Systme 4me ordre


1. Ouvrir Matlab.
2. Cliquer sur le symbole color Simulink ou dans la fentre Command Window de Matlab
taper : simulink.
3. Dans la fentre Simulink Library Browser , cliquer sur file-new .
4. Dans la Library , choisir Continuous . Tirer la bote Transfer function et la dposer sur
le nouveau document Simulink.
5. Programmer cette bote en double cliquant et en spcifiant les paramtres de la fonction de
transfert qui vous sera prcise au laboratoire. Exemple de fonction de transfert :

o K est un constant ; par exemple K = 1.2.


6. Choisir la source dentre en cliquant sur Sources et transportant la bote dchelon (Step).
7. Vu que le but est dvaluer la rponse impulsionnelle plutt que la rponse lchelon et vu
que les transforme de Laplace de (t) et u(t) sont :

Page 58

Travaux Pratiques de Traitement de Signal


Il faudra annuler le ple introduit par lchelon. Vous pouvez effectuer ceci en multipliant H(s) par
s, et ainsi annuler le ple de u(t) par ce zro. Vous devrez ainsi double-cliquer sur la bote
Transfer function et programmer le numrateur par la vecteur [K 0].
8. Pour observer la rponse lchelon du systme, il faudra relier lchelon lentre de la
fonction de transfert sans oublier de brancher une bote Scope (de la librairie Sink de
Simulink ) la sortie de la fonction de transfert.
9. Cliquer sur la flche noire Start simulation .
10. Double-cliquer sur Scope pour voir la rponse du systme.
11. Pour prolonger la dure de la simulation, cliquer sur Simulation - Simulation parameters .
Augmenter Stop Time 40, par exemple.
12. Prparer les lments du rapport remettre :
a) les paramtres de la fonction de transfert tels quobservs en double-cliquant sur la bote
Transfer Function ,
b) la sortie du Scope.
c) Imprimer un plot par Matlab de la sortie partir des donnes sur Workspace, qui contient le
titre du graphique et les identifications des deux axes.

B 2nd PARTIE : Filtrage dun Signal


1. Programmer une bote Transfer function pour simuler le filtre Butterworth suivant :

2. Transporter une source Pulse Generator de la bibliothque de Simulink pour produire le


signal qui sera appliqu lentre au systme.
3. Observer la sortie du systme sur un Scope . Remarquer le lissage quintroduit le filtre.
4. Ajuster la priode du gnrateur dimpulsions pour que la sortie du systme soit assez
semblable son entre sauf pour un lger dpassement (overshoot). Imprimer le rsultat.
5. Remplacer la fonction de transfert par :

Imprimer la sortie et indiquer le type du filtrage qui a produit sa forme.


6. Retourner cas 1, o H (s) set dfinie en quation (1). Rduire successivement la priode de
lentre et observer leffet sur la sortie. Continuer jusquau cas o la sortie na presque pas
doscillation. Imprimer le rsultat.
7. Observer la valeur finale de la sortie. Le filtre ayant admis uniquement les basses frquences,
expliquer la raison de la valeur finale de la sortie observe.
8. Prparer les lments du rapport remettre :
a) les paramtres de la fonction de transfert tels quobservs en double-cliquant sur la bote
Transfer Function ,
b) la sortie du Scope ltape 4 (indiquer la priode du gnrateur dimpulsions),
c) la sortie du Scope ltape 5 (indiquer la priode du gnrateur dimpulsions),

Page 59

Vous aimerez peut-être aussi