Vous êtes sur la page 1sur 11

Simulation des

systmes continus
MATLAB
Sance 1

INSA de Lyon
3GI
2005-2006
Lounis ADOUANE

INSA de Lyon 3 GI

TP MATLAB

Prambule
Savoir matriser un outil de simulation pour systmes physiques, conomiques ou statistiques est un atout que tout
ingnieur doit dtenir. Le but de ces deux sances de TP est de vous initier lun de ces outils puissants et
performants (en loccurrence MATLAB). Bien videment, en deux sances nous nallons pas pouvoir faire le
tour de l'ensemble des fonctionnalits de MATLAB, nanmoins le TP va tcher de vous orienter (via des questions
et des exercices appropris) vers les principaux outils et mthodes quoffre MATLAB. Le but est de cerner
globalement ses potentialits et sa philosophie de fonctionnement, afin de pouvoir aisment juger de sa pertinence
lors de vos dveloppements futurs de projets acadmiques ou professionnels.

Pourquoi MATLAB ?
Le logiciel MATLAB, contraction de MATrix LABoratory est un environnement de calcul numrique de haut
niveau. Il est devenu de nos jours un standard pour la recherche scientifique et l'ingnierie, dailleurs, MATLAB est
la rfrence mondiale dans le domaine du calcul technique. Il peut tre utilis autant pour le prototypage et le test
rapide dapplication que pour des applications plus sophistiques et labores. En effet, il met la disposition de
l'utilisateur un environnement convivial et performant pour mener bien des calculs numriques ou symboliques,
obtenir des reprsentations graphiques et crire des programmes. Des problmes numriques complexes peuvent
tre ainsi rsolus bien plus rapidement quavec des langages de programmation comme le C ou le FORTRAN.
Larchitecture ouverte de MATLAB facilite son utilisation, la figure 1 nous donne un aperu des diffrents lments
le composant. Le noyau MATLAB peut tre complt par des botes outils (Toolboxes) qui sont constitues de
bibliothques de fonctions spcialises propres un domaine particulier (voir figure. 1). On trouve des botes
outils dans des domaines aussi varis que la commande des systmes, le traitement du signal, la chimie, la finance
ou l'conomie. Simulink est une bote outils particulire puisque elle permet de traduire la rsolution des systmes
(principalement diffrentiels) de manire graphique laide de schmas blocs. MATLAB est principalement utilis
sous sa forme dinterprteur de commandes, il est toutefois possible de compiler les programmes afin damliorer la
vitesse dexcution.
Communications
Control Systems
Financial Computation
Frequency-Domain System Identif.
Fuzzy Logic
Higher-Order Spectral Analysis
Image Processing
Linear Matrix Inequalities
Model Predictive Control
Mu-Analysis and Synthesis
Numerical Algorithms
Neural Networks
Optimization
Partial Differential Equations
Quantitative Feedback Theory
Robust Control
Signal Processing
Simulation (Simulink)
Splines
Statistics
Symbolic Mathematics
System Identification
Wavelets
etc...

Figure. 1

Principales fonctionnalits
1.
2.
3.
4.
5.
6.
7.
8.

du calcul numrique pour des rsultats rapides et prcis,


des graphiques pour visualiser et analyser des donnes,
un langage et un environnement de programmation interactifs,
loutil Simulink, pour modliser et simuler des systmes en utilisant des schmas-blocs,
des outils pour concevoir des interfaces utilisateur graphiques (GUI pour Graphical User Interface )
personnalises,
la prise en charge dchange de donnes et de signaux avec plusieurs type de matriels (oscilloscope,
carte dacquisition, carte de contrle, etc.),
lintgration dapplications externes crites en C, C++, Fortran, Java, Excel, etc.
la conversion d'applications MATLAB en C et C++ avec Compiler.

Anne 2005-2006 - Lounis ADOUANE

INSA de Lyon 3 GI

TP MATLAB

Les thmes qui seront abords au cours des 2 sances de TP toucheront aux points allant de 1 5. Ces points
couvrent l'essentiel de ce qu'il faut connatre sur MATLAB pour se rendre compte de ses potentialits et ainsi
lutiliser efficacement.
Vous allez d'abord aborder les fonctions lmentaires de MATLAB dans les domaines du calcul vectoriel et
matriciel, de la reprsentation graphique et de la programmation. Ensuite vous dcouvrirez Simulink ainsi que les
GUI. Vous allez utiliser succinctement aussi les boites outils concernant l'automatique et les statistiques.

I DECOUVERTE
Pour lancer le logiciel double-cliquez sur l'icone de MATLAB :

I.1

Environnement graphique :
Programme MATLAB :
Fichier .m qui correspond un programme
crit en MATLAB.
Espace de travail :
Toutes les variables dfinies seront listes ici.
Un double clic sur une ligne permet d'accder la
valeur de la variable.

Fentre de commande :
MATLAB est construit autour d'un langage
interprt. Les calculs se font donc d'abord
par la ligne de commande...

Historique des commandes :


Le double clic permet d'excuter une commande.
La mise au point de calculs complexes, l'analyse de donnes ou de modles ncessite
souvent de tester d'abord les commandes dans la fentre de commande. Cet historique
permet ensuite de retrouver ces commandes afin de les copier dans un fichier .m .
Bouton Start :
Il permet de lancer rapidement de nombreuses fonctionnalits.
Pour lancer l'aide : Start -> Help

Anne 2005-2006 - Lounis ADOUANE

INSA de Lyon 3 GI

TP MATLAB

I.2 L'aide :
Il y a plusieurs faons dobtenir des informations sur les diffrentes composantes et fonctionnalits de
MATLAB, parmi elles nous citons :
a- partir de la fentre de commande :
>> help help % instruction pour savoir comment obtenir de laide.
NB : - Lorsque le symbole ">>" apparat gauche de la fentre de commande alors cela indique que
l'interprteur est prt recevoir une commande.
- Tout ce qui est aprs le symbole % indique un commentaire sous MATLAB.
>> help % liste les thmes pour lesquels une aide en ligne est disponible.
>> help thme % liste les fonctions relatives au thme mentionn pour lesquelles une aide est disponible.
>> help nom_fonction % prsente la page daide concernant la fonction choisie.
>> lookfor mot_cl % liste les commandes et fonctions MATLAB contenant le mot_cl demand dans leur
% documentation.
>> helpdesk % obtient une documentation en format HTML.
>> helpwin % prsente une fentre de navigation (figure.2) pour une aide interactive. La partie gauche de la
% fentre permet, partir d'onglets, de rechercher de l'aide en fonction du contenu thmatique
% (Contents), de la liste alphabtique des thmes et mots cls (Index) ou partir d'un moteur de
% recherche (Search). Un onglet permet galement d'accder des dmonstrations classes par
% thmes (Demos).

Figure. 2
b- partir dInternet : plus particulirement partir du site de MathWorks1. Il existe aussi des dmonstrations
en ligne intressantes au niveau de lINSA de Lyon, pour cela il faut se rendre sur le site du Centre de
Mathmatique http://maths.insa-lyon.fr/ rubrique : Enseignant/Matlab-Wserv.

II TRAVAIL A RENDRE
Aprs la fin des deux sances de TP vous devez me rendre un compte-rendu sous format papier (1 par binme).
Ces documents doivent absolument tre dposs dans mon casier (secrtariat GI) la semaine qui suit la deuxime
sance de TP.
apparat gauche du texte, ceci signifie qu'une explication sur la syntaxe, que la
A chaque fois que l'icne
description d'une commande ou qu'un programme raliser doit figurer dans votre compte-rendu. Ceux-ci
doivent tre donns dans l'ordre avec l'indication du numro not cot de l'icone. Vous devez galement me
fournir les principaux programmes (.m), (.mdl), etc. que vous allez raliser ( menvoyer mon adresse email
avec comme objet : TP MATLAB [Vos noms].
1

http://www.mathworks.com/ (socit qui dveloppe et qui commercialise MATLAB)

Anne 2005-2006 - Lounis ADOUANE

INSA de Lyon 3 GI

TP MATLAB

III PREMIERS PAS


III.1 Calcul matriciel
MATLAB est particulirement performant pour le calcul matriciel car sa structure interne de donnes est base
sur les matrices. Nimporte quelle chane de caractres excepts celles contenant des symboles mathmatiques
(tels que : espace, :, /, %, etc.) peut tre utilise pour nommer une variable. Lutilisation dune variable sous
MATLAB ne ncessite de dfinir ni son type (boolen, entier, rel, etc.) ni mme sa dimension (scalaire, vecteur,
matrice) et cela contrairement la plupart des langages de programmation tels que le C, le PASCAL ou le
FORTRAN. Ainsi, une variable dans MATLAB peut tre dfinie au dpart comme un scalaire, puis devenir un
vecteur, et finir comme matrice. Il est noter que MATLAB distingue les majuscules des minuscules (la variable
a est diffrente de A).

Quelques fonctions utilisables partir de la matrice A

0
4
3
2

0
5
2
4

1
2
1
7

5
1
4
2

Entrez la matrice A. Deux mthodes sont possibles :


> > A = [0 0 1 5 ; 4 5 2 - 1 ; 3 - 2 1 4 ; - 2 - 4 7 2 ]
ou alors :
> > A = [0 0 1 5
4 5 2 -1
3 -2 1 4
-2 -4 7 2]
Saisir la mme valeur de A (flche du clavier) en y ajoutant un point virgule la fin ; .
Quest-ce qui change ?
Expliquez les commandes suivantes :
> > B = A(2 , :)
> > C= B*A
> > D= A.*A
> > A ( : ,2 )
> > B = A ; B ( 5 ,1 ) = 1 0
> > C = 0 : 0 .2 :1
Dfinissez la matrice B telle que B=A+2I (avec I matrice identit) :
> > B=A+2* eye(4)
Utilisez laide pour expliquez la syntaxe et la signification de la commande eye ?
Dfinissez C la matrice inverse de B :
> > C = inv (B )
Remarque : Par dfaut l'affichage des valeurs se fait avec une prcision de 10-4. L'instruction
format permet de changer cette prcision. Par exemple :
> > for mat bank
>> C
> > for mat shor t
>> C
Calculez D le dterminant de C :
> > D =de t( C)
Dfinissez E la transpose de C :
>> E=C'
Que font les commandes a = zeros(n) et b = ones(n) o n est un entier naturel ?

Anne 2005-2006 - Lounis ADOUANE

INSA de Lyon 3 GI

TP MATLAB

Tout polynme peut s'crire sous la forme d'un vecteur ligne contenant les coefficients du polynme
rangs par puissance dcroissante.

Par exemple le polynme P = x3 - 6x2 - 72x + 27 a pour criture :


> > P=[1 -6 -72 27 ]
Expliquez le rle de la commande suivante. Donnez le rsultat obtenu :
> > roo ts(P)
> > po lyv a l(P,3)

III.2 Graphiques
MATLAB, en plus de ses possibilits de calcul numrique, produit aussi des graphiques en 2 et 3 dimensions de
haute qualit. Nous allons nous focaliser dans ce qui suit sur les graphiques 2D.
Il est trs facile de reprsenter graphiquement les rsultats de calculs.
Pour dessiner une courbe il faut d'abord dterminer les points de l'axe des x pour lesquels les
valeurs de la fonction seront calcules. Crez un vecteur :
> > x = 0 : p i/4 : 5*p i

Pour chaque valeur de x dfini prcdemment il faut ensuite calculer la valeur de la fonction :
> > y = sin (x /pi)

Tracez une courbe en utilisant les commandes :


>> p lo t(x, y) ; gr id on ;

En utilisant la fonction polyval confirmez graphiquement la position des racines du


polynme P dfini ci-dessus.

Par dfaut une seule courbe peut tre trace sur une figure. Pour tracer plus de figures dans
une mme fentre, veillez ne pas fermer la fentre contenant la figure prcdente et tapez
les commandes suivantes :
> > ho ld on
> > z = y + 0 .2
> > p lo t(x, z)
La commande plot permet aussi de tracer directement plusieurs courbes et de spcifier
leurs proprits :
> > ho ld of f
> > p lo t(x, y, 'r+ ',x ,z , 'bo ')

Utilisez le raccourci Show Plot Tools afin de :


donner un titre : premires fonctions ,
donner un nom chaque axe : abscisse et ordonne,
donner une lgende donnant la dfinition de chaque

Show Plot Tools

courbe.
changer les proprits de la courbe la plus haute :

Line properties : style = solid line, width = 2.0, color = green


Marker properties : style = diamond, size = 6.0, edge color = black, face color = yellow

Afin d'insrer la figure prcdente dans votre rapport :


Menu File Save as puis slectionnez le format, le rpertoire et le nom de fichier,
ou bien :
Si vous utilisez Word :

dans la fentre MATLAB Figure No. 1 : Menu Edit Copy Figure

dans Word : Menu Edition Coller

Anne 2005-2006 - Lounis ADOUANE

INSA de Lyon 3 GI

TP MATLAB

Les modifications qui ont t faites sur la figure peuvent tre ralises avec des commandes. Par
exemple :
> > title('titre de la figure')
> > x l abe l( 'a b s ci s s es ')
> > ylabel( 'ordonn es')
> > legend( 'courb e1 ','courbe2 ')
9

Donnez les commandes permettant de crer plusieurs fentres de figures puis de choisir dans
quelle fentre sera dessine une courbe.

III.3 Programmation
Jusqu maintenant vous avez utilis uniquement le mode interactif de MATLAB, qui excute les instructions au
fur et mesure quelles lui sont donnes par lutilisateur dans la fentre de commande. Nanmoins, MATLAB
dispose aussi dun mode excutif qui permet dexcuter un programme inclus dans un fichier appel un m-file
(en relation son extension .m ). Il en existe deux types, les scripts et les fonctions. Ces fichiers vous
permettront ainsi d'excuter plusieurs fois les commandes sans avoir les entrer chaque fois.

crivez un premier programme :


avant de crer un nouveau programme, modifiez le rpertoire courant en cliquant sur le bouton

droite de la zone indiquant le rpertoire de travail courant (utilisez votre rpertoire


personnel) :
dans la barre de bouton de MATLAB cliquez sur le premier icone (New M-File)
dans la nouvelle fentre tapez les commandes suivantes :

a =3
x =1 :10
y=a*x-2
p lo t(x, y)
gr id on
sauvegardez ce programme Script1. Pour enregistrer un programme existant et l'excuter :
touche F5.
Une fonction en MATLAB est un m-file particulier, on lui passe des arguments et il retourne des
valeurs de sortie. Les fonctions sont trs utiles dans la mesure o chaque utilisateur peut tendre les
possibilits de MATLAB son domaine dapplication. Il est noter que les variables utilises
lintrieur dune fonction sont locales et cela afin de limiter la taille mmoire des programmes
excuts.
La forme gnrale de la dclaration dune fonction est :
function nom_variable_retour = nom_fonction ( nom_paramtres )
Quelques remarques :
(i) le m-file et la fonction doivent avoir le mme nom
(ii) il peut y avoir plusieurs arguments (il suffit de les sparer par des virgules) ou aucun
(iii) il peut y avoir plusieurs valeurs de retour (les mettre entre crochets et les sparer par des virgules)
ou aucune.
Exemple : Implmentez (en mot mot) la fonction ci-dessous.
function y = Fonction1(m,n)
%Gnration alatoire dune matrice coefficients entiers
%Fonction1(m,n) renvoie une matrice de dimensions mn
% coefficient compris entre 0 et 9
y = floor (10*rand(m,n)) ;
Remarque: La fonction Fonction1 peut tre teste directement dans la fentre de commande avec :
Fonction1(argument1, argument2),

Anne 2005-2006 - Lounis ADOUANE

INSA de Lyon 3 GI

10

11
12

13

TP MATLAB

Excutez la commande
> > h e lp Fon c tion1
que constatez vous ?

Crez une fonction Fonction2 telle que : y

crivez un programme Script2 qui :


dessine la fonction prcdente entre 0 et 20,
donne la valeur de x pour laquelle y vaut 0,
donne la valeur de x pour laquelle y est minimum et qui calcule cette valeur y.
Commentaire : les fonctions utiliser sont fplot , fzero et fminbnd .

crivez un programme Script3 qui :


cre et sauvegarde (dans un fichier Donnees.txt) un vecteur contenant 100 valeurs entires
comprises alatoirement entre 0 et 20,
construit un histogramme de ces valeurs contenant 10 classes centres autour des valeurs
impaires,
donne un titre cette figure : histogramme des notes ,
affiche sur le graphique le nombre de valeurs,
affiche sur le graphique la moyenne des valeurs (arrondie 10-2 prs) ainsi qu'une ligne
verticale correspondant cette moyenne.
Commentaire : cherchez l'aide sur les commandes fprintf , mean et num2str .

x2

x 2x 1

Les programmes un peu plus volus ncessitent des lments de structuration permettant les tests de
valeurs, les boucles, les interruptions prioritaires, etc.
14

Quels sont les oprateurs relationnels utilisables ?


Expliquez la syntaxe des contrles de flux if , for et while .

III.4 Simulink
Simulink est l'extension graphique de MATLAB qui permet de modliser, de simuler et danalyser des systmes
dynamiques via lutilisation de schmas-blocs.
Pour ouvrir la bibliothque de schmas-blocs,

cliquez sur le bouton

Faire Ctrl+N pour ouvrir un nouveau

Fentre Bibliothque
Simulink
Fentre Nouveau Modle

modle.
Pour ajouter un nouveau schma-bloc dans le
modle, il faut d'abord que celui-ci apparaisse
dans la partie droite de la fentre de la
bibliothque. Par exemple, dans la partie
gauche de la fentre, cliquez sur le symbole
+ de la ligne Simulink puis endessous cliquez sur Continuous . Dans la
partie droite sept schmas-blocs apparaissent
alors.
Ajoutez
maintenant
le
schma-bloc
Integrator en cliquant sur son symbole et
en le glissant dans la fentre du nouveau
modle.

Anne 2005-2006 - Lounis ADOUANE

INSA de Lyon 3 GI

15

TP MATLAB

Pour apprendre utiliser Simulink construisez le modle donn dans l'aide Simulink :
Dans la fentre Simulink cliquez sur le menu Help puis sur Simulink Help .
Cliquez ensuite sur Getting Started puis sur Building a Model .
Suivez les instructions pour construire le modle donn que vous nommerez Simulink1 .

Maintenant que vous savez construire un modle


16 Simulink, construisez le modle lmentaire cicontre, que vous sauvegarderez sous le nom
Simulink2. Pour cela vous devrez utiliser les
schmas-blocs suivants :
Transfer fcn dans la liste Continuous ,
Sum dans la liste Math Operations ,
Switch de la liste Signal Routing ,
Ground , Step et Ramp dans la liste
Source ,
Scope dans la liste Sinks .
17

Quel est le rle potentiel du schma Simulink2 implment ? Expliquer le rle de chaque bloc

graphique du schma.
Ralisez un programme Script4.m qui ralise les mmes fonctionnalits dcrites dans le
modle Simulink2.
Trouvez les ples de cette fonction de transfert, reprsentez le diagramme de Bode et de
Nyquist du systme tudi, commentez.
Expliquez quoi correspond loutil sisotool (single input single output tool) de la boite outils
Control System Toolbox.
Commentaire : Utilisez les fonctions contenues dans le Control System Toolbox help control.

COMMANDES USUELLES
Tableau 1 : les commandes indispensables
help
help sujet
commande ;
clc
quit, exit

donne toute la liste des aides


affiche laide sur le sujet
le ; permet dinterdire laffichage du rsultat de la commande lcran
efface le contenu de la fentre de commande
extinction de MATLAB

Tableau 2 : commandes sur fichiers et rpertoires


cd nomrpertoire
pwd
dir, ls
delete nomfichier
load nomfichier
load nomfichier.dat
load nomfichier X Y
nomfichier
save nomfichier
save nomfichier X Y

change de rpertoire de travail (cd .. : remonter dun rpertoire)


affiche le nom du rpertoire courant
affiche le contenu du rpertoire courant
supprime le fichier nomfichier
import les variables du fichier nomfichier.mat (format matlab)
importe la matrice nomfichier du fichier nomfichier.dat (format texte)
importe uniquement les variables X et Y du fichier nomfichier.mat
excute le script contenu dans le fichier nomfichier.m (commandes, dfinitions,
variables)
sauvegarde toutes les variables dans le fichier nomfichier.mat
sauvegarde uniquement les variables X et Y dans le fichier nomfichier.mat

Anne 2005-2006 - Lounis ADOUANE

10

INSA de Lyon 3 GI

TP MATLAB

Tableau 3 : grer les variables


length(A)
size(A)
who
whos
clear
clear X Y
= =, <, >, <=, >=
x=y
a:b
x=y(:,k)
x=y(a:b,k)
max(X)
max(y(a :b,k))
min(X)
min(y(a :b,k))

retourne le nombre de composants du vecteur A


retourne le nombre de lignes et de colonnes de la variable A
liste les variables utilises
donne la liste des variables ainsi que leur dimension
supprime toutes les variables de lespace de travail
supprime seulement les variables X et Y
oprateurs de comparaison de variables (aide : help eq, lt, gt, le, ge)
affectation : x prend la valeur de y (aide : help punct)
intervalle [a, a+1 b] (aide : help colon)
le vecteur x est gal toute la kime colonne de la matrice y
le vecteur x est gal la kime colonne de la matrice y, mais uniquement du
composant numro a au composant numro b
donne le plus grand lment du vecteur X
donne le plus grand lment de la kime colonne de la matrice y, mais
uniquement de la ligne numro a la ligne numro b
si X est un vecteur, min(X) donne le plus petit lment de ce vecteur
donne le plus petit lment de la kime colonne de la matrice y, mais uniquement
de la ligne numro a la ligne numro b

Tableau 4 : fonctions graphiques


plot(X,Y,cs)

title(texte)
xlabel(texte)
ylabel(texte)
gtext(texte)
legend('texte1', 'texte2')
axis([Xmin Xmax Ymin Ymax])
grid on ou grid off
figure
figure(num)
hold on ou hold off
close
close(num)
close all

dessine le graphe de Y en fonction de X suivant la couleur c et en utilisant le


symbole s.
c peut prendre entre autres les valeurs : y (jaune), m (magenta), c (cyan), r
(rouge), g (vert), b (bleu), w (blanc), b (noir) et i (invisible). s peut tre entre
autres : . (point), - (tiret), -. (tiret-point), + (plus), * (toile), o (cercle), x
(croix).
ajoute le texte comme titre de la figure
ajoute le texte comme lgende de laxe des abscisses
ajoute le texte comme lgende de laxe des ordonnes
placera le texte partir du point slectionn la souris
place une lgende sur la figure courante. texte1, texte2, etc. sont les lgendes
de diffrentes courbes.
retrace la figure dans les limites imposes sur chaque axe
ajoute ou enlve une grille sur la figure
cre une nouvelle figure
la figure portant le numro num devient la figure courante (celle ou seront
dessines les courbes). La figure est cre si elle nexistait pas.
autorise ou interdit le dessin des prochaines fonctions sur la figure sans effacer
les prcdentes (hold off est le mode par dfaut).
ferme la figure courante
ferme la figure portant le numro num
ferme toutes les figures

Tableau 5 : programmation
x = input('text')
disp('xxx')
pause
for i=min : max end
break
if cond1 elseif cond2
else end
% texte

permet de saisir la valeur de x au clavier


affiche l'cran la chane de caractres xxx
attend un appui sur une touche quelconque du clavier avant d'excuter
l'instruction suivante.
rptition en boucle. Pour i = min i = max faire
termine immdiatement le traitement dune boucle for ou while
excution conditionnelle. Si condition cond1 faire sinon si cond2 faire
sinon faire
commentaires

Anne 2005-2006 - Lounis ADOUANE

11