Vous êtes sur la page 1sur 55

MANUEL

Dpartements
GEI & Mcanique

Version 0.1

Yassine Ariba - Jrome Cadieux


Icam de Toulouse

Auteurs : Yassine Ariba et Jrome Cadieux.

Matlab, ses botes outils et Simulink sont des produits dvelopps par la socit The MathWorks,
Inc.. Matlab et Simulink sont des marques dposs par cette mme socit. La distribution utilise
en sance est sous licence classroom, cest--dire quelle est rserve un usage acadmique
ducatif. Toute utilisation but commercial ou recherche est interdite.
Y. Ariba et J. Cadieux Icam - Toulouse

Table des matires

I. Introduction ......................................................................................................................................6

1 - Quest ce que Matlab ? .............................................................................................................6
2 - Objectifs .....................................................................................................................................7
3 - Logiciels alternatifs .....................................................................................................................7
II. Gnralits .....................................................................................................................................9
1 - Interface principale .....................................................................................................................9
2 - Premiers pas sur des exemples ................................................................................................ 10
2.1 Calcul et trac dune fonction sinus ...................................................................................... 10
2.2 Rsolution dun systme dquations linaires ...................................................................... 11
3 - Les variables ............................................................................................................................ 12
3.1 Aspects lmentaires ........................................................................................................... 12
3.2 Constantes prdfinies ......................................................................................................... 13
3.3 Quelques fonctions mathmatiques ...................................................................................... 14
4 - Vecteurs et Matrices ................................................................................................................. 14
4.1 Dfinition d'un vecteur .......................................................................................................... 14
4.2 Quelques fonctions utiles ..................................................................................................... 15
4.3 Dfinition d'une matrice ........................................................................................................ 16
4.4 Quelques fonctions utiles ..................................................................................................... 18
4.5 Oprations sur les matrices .................................................................................................. 19
5 - Reprsentations graphiques ..................................................................................................... 21
5.1 Graphiques 2D ..................................................................................................................... 21
5.2 Graphiques 3D ..................................................................................................................... 25
6 - Programmation avec Matlab ..................................................................................................... 28
6.1 Fichiers SCRIPT................................................................................................................... 29
6.2 Fichiers FUNCTION .............................................................................................................. 30
6.3 Oprateurs relationnels et logiques ...................................................................................... 32
6.4 Structures de contrle .......................................................................................................... 33
III. Application la Mcanique........................................................................................................... 37
1 - Les structures........................................................................................................................... 37
IV. Application lAutomatique .......................................................................................................... 39
1 - Reprsentation des systmes linaires invariants ..................................................................... 39
1.1 Fonctions de transfert ........................................................................................................... 39
1.2 Reprsentation dtat ........................................................................................................... 40
1.3 Systmes discrets et chantillonns ..................................................................................... 41
1.4 Conversions de modles ...................................................................................................... 42
1.5 Connexions de systmes ..................................................................................................... 43

3
Y. Ariba et J. Cadieux Icam - Toulouse

2 - Analyse des systmes dynamiques .......................................................................................... 44


2.1 Quelques fonctions utiles ..................................................................................................... 44
2.2 Rponses temporelles .......................................................................................................... 45
2.3 Lieux de transfert ................................................................................................................. 47
3 - Simulink ................................................................................................................................... 47
3.1 Cration dun modle ........................................................................................................... 48
3.2 Quelques bibliothques ........................................................................................................ 50
3.3 Simulation ............................................................................................................................ 52
3.4 Exemple ............................................................................................................................... 53

4
Y. Ariba et J. Cadieux Icam - Toulouse

5
Y. Ariba et J. Cadieux Icam - Toulouse

I. INTRODUCTION
Ce document est une introduction Matlab, un logiciel de calcul scientifique. Il a pour objectif de
prparer ltudiant aux travaux pratiques dAutomatique, de Mcanique et dAnalyse Numrique dans
lesquels cet outil est intensivement utilis pour la mise en application et la simulation des principes
thoriques prsents en cours. Par ailleurs, ce manuel offre la possibilit ltudiant de se former
un logiciel professionnel largement rpandu.

1 - Quest ce que Matlab ?


1
Matlab est un logiciel de calcul numrique commercialis par la socit MathWorks . Il a t
initialement dvelopp la fin des annes 70 par Cleve Moler, professeur de mathmatique
luniversit du Nouveau-Mexique puis Stanford, pour permettre aux tudiants de travailler partir
dun outil de programmation de haut niveau et sans apprendre le Fortran ou le C.

Matlab signifie Matrix laboratory. Il est un langage pour le calcul scientifique, lanalyse de donnes,
leur visualisation, le dveloppement dalgorithmes. Son interface propose, dune part, une fentre
interactive type console pour lexcution de commandes, et dautre part, un environnement de
dveloppement intgr (IDE) pour la programmation dapplications.

Matlab trouve ses applications dans de nombreuses disciplines. Il constitue un outil numrique
puissant pour la modlisation de systmes physiques, la simulation de modles mathmatiques, la
conception et la validation (tests en simulation et exprimentation) dapplications. Le logiciel de base
peut tre complt par de multiples toolboxes, cest--dire des botes outils. Celles-ci sont des
bibliothques de fonctions ddies des domaines particuliers. Nous pouvons citer par exemple :
lAutomatique, le traitement du signal, lanalyse statistique, loptimisation

Voici une liste non exhaustive (loin de l) et en vrac de toolboxes, montrant la diversit des
fonctionnalits de Matlab :

Control System Toolbox Symbolic Math Toolbox Signal Processing Toolbox


Neural Network Toolbox Optimization Toolbox Parallel Computing Toolbox
Statistics Toolbox Fuzzy Logic Toolbox Image Processing Toolbox
Aerospace Toolbox Data Acquisition Toolbox Bioinformatics Toolbox
MATLAB Compiler Vehicle Network Toolbox Model-Based Calibration Toolbox
Financial Toolbox RF Toolbox System Identification Toolbox

1
http://www.mathworks.com/

6
Y. Ariba et J. Cadieux Icam - Toulouse

2 - Objectifs

Ce document propose une introduction Matlab et dveloppe un ensemble de fonctionnalits


spcifiques certains domaines des sciences de lingnieur. Il ne constitue en aucun cas une
documentation exhaustive du logiciel. Toutefois, les principales notions sont prsentes et invitent
ltudiant chercher par lui-mme les informations complmentaires pour mener bien son projet. En
plus de laide intgre lenvironnement et des nombreux ouvrages ddis, une quantit abondante
de ressources sont disponibles sur Internet :

Documentation en ligne de MathWorks : http://www.mathworks.com/help/techdoc/

Espaces dentraide :
- Developpez.com : http://matlab.developpez.com/
- Matlab Central : http://www.mathworks.com/matlabcentral/

Notes mises en ligne par des Universits/Ecoles :


(par exemples)
- http://nte.mines-albi.fr/MATLAB/co/Matlab_web.html
- http://personnel.isae.fr/sites/personnel/IMG/pdf/InitiationMatLab.pdf
- http://perso.telecom-paristech.fr/~prado/enseignement/polys/matlab.html
- http://asi.insa-rouen.fr/enseignement/siteUV/tds/
- http://www-gmm.insa-toulouse.fr/~roussier/poly_info_icbe.pdf
-

Il existe galement un espace dchange de codes et applications Matlab :


File exchange : http://www.mathworks.com/matlabcentral/fileexchange/

Lobjectif de ce document est double. Ltudiant doit acqurir une connaissance suffisante du logiciel
pour pouvoir travailler efficacement et comprendre les notions vues dans les travaux pratiques
dAutomatique, de Mcanique et dAnalyse Numrique. Le second objectif est de proposer une
initiation consistante un logiciel puissant, trs largement utilis dans le monde industriel et
acadmique (laboratoires, universits/coles).

3 - Logiciels alternatifs
2
Si le prix dune licence Matlab, type ducation (classroom), est relativement intressant (<~100),
celui dune version industrielle est plutt onreux (>~2500). A cela il faut ajouter un cot
supplmentaire pour chaque toolbox commande.

Voici quelques solutions alternatives.

Scilab est un logiciel open-source sous licence GPL (ou du moins dans lesprit). Dvelopp depuis
1990 par des chercheurs de lINRIA (institut national de recherche en informatique et automatique), il
est maintenant maintenu par la fondation de coopration scientifique Digiteo3. Il est disponible sur les
plateformes Windows, Mac OS X, Linux et BSD.

Pour plus dinformations et pour tlcharger le logiciel : http://www.scilab.org/

2
Les valeurs donnes ne sont que des ordres de grandeur et peuvent changer. Les prix dpendent du
type de licence (ducation, industriel, recherche) et du format (individuel, groupe, concurrent).
3
http://www.digiteo.fr/fr

7
Y. Ariba et J. Cadieux Icam - Toulouse

Octave est galement un logiciel open-source sous licence GPL. Son dveloppement a commenc
4
au dbut des annes 90 par John W. Eaton dans le cadre du projet GNU . Sa syntaxe est proche de
celle de Matlab. Il est disponible sur les plateformes Windows, Mac OS X, Linux et BSD.

Pour plus dinformations et pour tlcharger le logiciel : http://www.gnu.org/software/octave/

4
http://www.gnu.org/

8
Y. Ariba et J. Cadieux Icam - Toulouse

II. GENERALITES

Dans ce chapitre, lenvironnement de Matlab est prsent. Un premier exemple introductif montre
rapidement le principe de fonctionnement du logiciel. Nous prsentons ensuite un ensemble de
fonctions de base ncessaire pour dbuter en Matlab.

1 - Interface principale

Au lancement de Matlab, linterface suivante apparait :

Le logiciel propose un vritable environnement de travail compos de multiples fentres. Nous


pouvons distinguer quatre blocs :

9
Y. Ariba et J. Cadieux Icam - Toulouse

Command window (console dexcution) : linvite de commande >> , lutilisateur peut


entrer les instructions excuter. Il sagit de la fentre principale de linterface.
Current directory (rpertoire courant) : permet de naviguer et de visualiser le contenu du
rpertoire courant de lutilisateur. Les programmes de lutilisateur doivent tre situs dans ce
5
rpertoire pour tre visible et donc excutable .
Workspace (espace de travail) : permet de visualiser les variables dfinies, leur type, la taille
occupe en mmoire
Command history : historique des commandes que lutilisateur a excutes. Il est possible
de faire glisser ces commandes vers la fentre de commande.

Notons que la command window est la fentre centrale de linterface, cest partir de l que
lutilisateur pourra lancer les commandes interprtes par Matlab. Le principe est simple et intuitif, le
tout est de connaitre les fonctions appropries et de respecter leur syntaxe. Premier exemple
lmentaire : linvite de commande, taper 3*5 , puis entrer :

>> 3*5
ans =
15

A la validation de linstruction, linterface affiche le rsultat de cette dernire. Afin dallger laffichage,
un point-virgule ; en fin de commande empche le renvoie du rsultat dans la fentre
(videmment linstruction est toujours excute). Par exemple :

>> 3*5;
>>

Le calcul a t effectu mais le rsultat nest pas affich.

2 - Premiers pas sur des exemples


Nous proposons en premier lieu un dmarrage rapide bas sur un exemple simple. Celui-ci a pour
objectif de montrer comment se pratique Matlab dans une premire utilisation basique. Cette section
doit donc tre parcourue avec Matlab cot. Les lecteurs non dbutants pourront passer cette
section.

2.1 Calcul et trac dune fonction sinus


La manipulation commence dans la fentre command window, linvite de commande :

>> t = [0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6]

t =

Columns 1 through 8

0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000


3.5000

Columns 9 through 13

4.0000 4.5000 5.0000 5.5000 6.0000

Cette ligne de commande dfinit un tableau de 13 valeurs (allant de 0 6 par incrment de 0.5)
nomm t. On comprend lutilit de mettre un ; la fin de la ligne pour viter laffichage

5
Cette condition nest pas ncessaire, si les programmes sont situs dans un rpertoire spcifi dans
le PATH.

10
Y. Ariba et J. Cadieux Icam - Toulouse

systmatique du rsultat des oprations envoyes. Cela peut devenir trs lourd si, par exemple, la
taille du tableau est importante.

>> w = 2*pi/6;
>> y = sin(w*t);

Le terme pi est une constante prdfinie et donne donc la valeur de . Le tableau (ou vecteur)
y , de mme dimension que t , contient les valeurs rsultantes de lopration applique
chaque composante de t . y reprsente donc la fonction sinus de priode 6 (de pulsation
w ). Il est possible de reprsenter graphiquement les points du tableau laide de la fonction
suivante :

>> plot(t,y,*);

Une nouvelle fentre souvre :

2.2 Rsolution dun systme dquations linaires

Nous souhaitons rsoudre le systme dquation suivant :

Ecriture sous forme matricielle AX=B:

11
Y. Ariba et J. Cadieux Icam - Toulouse

La manipulation dans Matlab commence donc par la dfinition des matrices.

>> A = [2 1 0 ; 4 -3 2 ; 1 2 -1]
A =
2 1 0
4 -3 2
1 2 -1
>> B = [-5;0;1]
B =
-5
0
1

Si A est une matrice inversible alors le systme admet une solution unique qui sexprime par

Le logiciel peut faire ce calcul pour nous :

>> X = inv(A)*B
X =
1.7500
-8.5000
-16.2500

La solution de notre systme dquation est donc :

3 - Les variables

3.1 Aspects lmentaires


Matlab gre de faon automatique les nombres entiers, rels, complexes, les chanes de caractres
Ainsi, la dclaration des variables est implicite, et la mmoire ncessaire est automatiquement alloue
lors de la dfinition de celles-ci. Le symbole daffectation est le signe =

>> x = 4
x =
4
>> y = 2
y =
2
>> x + y
ans =
6
>> x * y
ans =
8

12
Y. Ariba et J. Cadieux Icam - Toulouse

Si lutilisateur naffecte pas explicitement le rsultat dune opration une variable, Matlab laffecte
automatiquement la variable ans . Concernant le nom des variables, linterprteur fait la
distinction entre les minuscules et les majuscules. A la dfinition dune variable, celle-ci apparait,
accompagne de quelques informations, dans la fentre Workspace. Il est galement possible de
connaitre les variables du workspace (espace de travail) via linstruction whos . Par exemple,
aprs les manipulations prcdentes :

>> whos
Name Size Bytes Class Attribute
ans 1x1 8 double
x 1x1 8 double
y 1x1 8 double

La commande clear permet de supprimer une variable du workspace ( clear all les
supprime toutes). Toutes les commandes tapes dans la Command window peuvent tre retrouves
et dites grce aux touches de direction. Appuyez sur la touche pour remonter dans les
commandes prcdentes, pour redescendre.

3.2 Constantes prdfinies

Il existe des symboles auxquels sont associs des valeurs prdfinies. En voici quelques uns :

Symbole Signification Valeur

pi Nombre 3.141592...

i ou j Nombre complexe

realmax Plus grand nombre flottant codable 1.7977e+308

realmin Plus petit nombre flottant codable 2.2251e-308

Attention, ces valeurs peuvent tre crases si le symbole est redfini.

>> pi=1
pi =
1
>> clear pi
>> pi
ans =
3.1416

Il est donc possible de dfinir et manipuler explicitement des nombres complexes.

>> a = 2 + i*3;
>> b = 1 - i;
>> a + b
ans =
3 + 2i

13
Y. Ariba et J. Cadieux Icam - Toulouse

3.3 Quelques fonctions mathmatiques

Fonctions trigonomtriques :

sin cos tan


asin acos atan
sinh cosh tanh

Fonctions puissances, exponentielle et logarithmes :

power (ou ^) sqrt exp log log10

Fonctions rels vers entiers (arrondi, troncature):

fix floor round ceil

Fonctions autres :

sign(var: (signe) retourne 1 si var>0, -1 si var<0 et 0 si var=0.


abs(var): module de var.
real(var): partie relle de var.
imag(var): partie imaginaire de var.
gcd(var1,var2): plus grand diviseur commun des entiers var1 et var2.
lcm(var1,var2): plus petit multiple commun des entiers var1 et var2.

4 - Vecteurs et Matrices
Avec Matlab, on travaille essentiellement avec un type dobjet : les matrices6. Une variable scalaire est
une matrice de dimension 1 x 1 et un vecteur est une matrice de dimension 1 x n ou n x 1. Il est
capital dtre laise avec ces notions pour comprendre au mieux la philosophie de Matlab et
lexploiter efficacement.

4.1 Dfinition d'un vecteur

Un vecteur nest rien dautre quun tableau de valeurs. Il existe plusieurs faons de crer un vecteur et
la plus simple dentre elles est de lcrire explicitement.

>> v = [1 2 3 4]
v =
1 2 3 4

Lensemble des composantes est donn entre crochets et les valeurs sont spares par un espace
(ou une virgule , ). Nous avons ici dfini un vecteur ligne. Un vecteur colonne est cr en utilisant
un point-virgule ; comme dlimiteur.

>> v = [1 ; 2 ; 3 ; 4]
v =

1
2
3

6
Do son nom : MATrix LABoratory.

14
Y. Ariba et J. Cadieux Icam - Toulouse

Bien que simple, cette mthode nest pas pratique pour dfinir des vecteurs de taille importante. Une
seconde mthode utilise loprateur deux-points : . Il permet de discrtiser un intervalle avec un
pas constant.

>> v = 0:0.2:1
v =
0 0.2 0.4 0.6 0.8 1

Cette instruction cre un vecteur contenant des valeurs allant de 0 1 avec un pas de 0.2. La syntaxe
est la suivante : vecteur = valeur_initial:incrment:valeur_finale. Par dfaut, le pas
est gal 1.

>> v = 0:5
v =
0 1 2 3 4 5

Enfin, des fonctions prdfinies permettent de gnrer des vecteurs automatiquement.

>> v = linspace(0,10,1000);
>> v = logspace(-1,2,1000);

La premire fonction cre un vecteur de 1000 points avec des valeurs allant de 0 10 galement
espaces. La seconde cre un vecteur de 1000 points sur un intervalle de 10-1 102 avec un
espacement logarithmique.

On peut accder aux diffrents lments dun tableau en spcifiant un (ou des) indice(s) entre
parenthses.

>> v = [6 4 -1 3 7 0.3];
>> v(3)
ans =
-1

>> v(2:4)
ans =
4 -1 3

v(3) retourne le 3ime lment du vecteur v. Largument 2:4 permet de slectionner un bloc
dlments (ici du second au quatrime).

4.2 Quelques fonctions utiles

Nous prsentons dans ce paragraphe un ensemble de fonctions usuelles lies lutilisation des
tableaux.

length(v) renvoie la taille du tableau.

max(v) renvoie la valeur maximale du tableau.

min(v) renvoie la valeur minimale du tableau.

mean(v) renvoie la valeur moyenne des lments du tableau.

sum(v) calcul la somme des lments du tableau.

15
Y. Ariba et J. Cadieux Icam - Toulouse

prod(v) calcul le produit des lments du tableau.

sort(v) range les lments du tableau dans lordre croissant.

Toutes les fonctions mathmatiques vues au paragraphe II.3.3 sont applicables aux variables de type
vecteur. Dans ce cas, la fonction est opre sur chacun des lments du vecteur.

>> v = [0 pi/4 pi/2 pi 2*pi]


v =
0 0.7854 1.5708 3.1416 6.2832
>> cos(v)
ans =
1.0000 0.7071 0.0000 -1.0000 1.0000

4.3 Dfinition d'une matrice

La dfinition dune matrice est dlimite pas des crochets [] . Les diffrents lments
dune ligne sont spars par un espace et les diffrentes lignes sont spares par des points-
virgules ; . Ainsi pour dfinir une variable matricielle

1 2 3
M = 4 5 6

7 8 9

on crira :
>> M = [1 2 3 ; 4 5 6 ; 7 8 9];
ou
>> M = [1,2,3 ; 4,5,6 ; 7,8,9];

Laccs un lment dune matrice sopre en spcifiant des indices entre parenthses la suite de
son nom. Llment situ la iime ligne et la jime colonne est obtenu par la commande M(i,j). Par
exemple, la valeur M 23 est rcupre en tapant

>> M(2,3)
ans =
6

On peut galement modifier directement un des lments en lui affectant une nouvelle valeur.

>> M(2,3)=13;
>> M
M =
1 2 3
4 5 13
7 8 9

Matrices particulires
Quelques matrices particulires, et trs utilises, sont dfinies plus aisment au travers de fonctions.
Ces fonctions prennent en argument les dimensions de la matrice que lon souhaite construire. Le
premier dsigne le nombre de lignes et le second le nombre de colonnes.
La matrice nulle :
>> Z = zeros(2,3)
Z =

16
Y. Ariba et J. Cadieux Icam - Toulouse

0 0 0
0 0 0

Une matrice pleine de 1 :


>> U = ones(4,3)
U =
1 1 1
1 1 1
1 1 1
1 1 1

La matrice identit :
>> I = eye(3)
I =
1 0 0
0 1 0
0 0 1

Une matrice alatoire (lments compris entre 0 et 1) :


>> R = rand(2,2)
R =
0.9575 0.1576
0.9649 0.9706

Une matrice diagonale :


>> D = diag([2,4,0,7])
D =
2 0 0 0
0 4 0 0
0 0 0 0
0 0 0 7

Contrairement aux prcdentes, cette dernire fonction prend en argument un vecteur. La taille de la
matrice diagonale est donc dtermine par la taille du vecteur.

Extraction de sous-tableaux

Il est souvent utile d'extraire des blocs d'un tableau existant. Pour cela on utilise loprateur : .
Pour cela, il faut spcifier pour chaque indice la valeur de dbut et la valeur de fin. La syntaxe
gnrale est donc la suivante (pour un tableau deux dimensions) : tableau(dbut:fin,
dbut:fin).
2 3
Ainsi pour extraire le bloc
6
de la matrice M, on tapera :
5
>> M(1:2,2:3)
ans =
2 3
5 6

Le caractre : seul, signifie toute la longueur est extraite. De cette faon, on peut isoler une ligne,
ou une colonne, complte. Exemples :

>> M(1:2,:)
ans =
1 2 3
4 5 6
>> M(1,:)
ans =

17
Y. Ariba et J. Cadieux Icam - Toulouse

1 2 3
>> M(:,2)
ans =
2
5
8

Construction de matrice par blocs

A partir de matrices et de vecteurs dfinis pralablement, on peut crer de nouvelles matrices :

Cette opration est ralise trs simplement par la mme syntaxe que pour les nombres.

>> N = [M V ; U 0];

Il est impratif que les matrices M, V, U et O aient t dfinies auparavant. De plus, les blocs
composant une matrice doivent videment tre de dimension compatible. Si ces conditions ne sont
pas respectes, la commande ne pourra sexcuter et linterface affichera une erreur.
Nous pouvons mentionner la fonction blkdiag() qui permet de crer une matrice diagonale partir
des lments donns en argument.

>> A = [1 1 ; 1 1];
>> B = [2 2 ; 2 2];
>> C = 3;
>> M = blkdiag(A,B,C)
M =
1 1 0 0 0
1 1 0 0 0
0 0 2 2 0
0 0 2 2 0
0 0 0 0 3

4.4 Quelques fonctions utiles

Nous prsentons dans ce paragraphe un ensemble de fonctions usuelles lies lutilisation des
matrices.

size(M) renvoie les dimensions de la matrice.

max(M) renvoie un vecteur-ligne contenant les valeurs maximales associes chaque colonne.

min(M) renvoie un vecteur-ligne contenant les valeurs minimales associes chaque colonne.

rank(M) renvoie le rang de la matrice.

det(M) renvoie le dterminant de la matrice.

diag(M) extrait la diagonale de la matrice.

triu(M) extrait la matrice-triangle suprieure de M. tril donne la matrice-triangle infrieure.

18
Y. Ariba et J. Cadieux Icam - Toulouse

eig(M) renvoie un vecteur contenant les valeurs propres de la matrice.

4.5 Oprations sur les matrices

Un des atouts remarquables de Matlab est la possibilit deffectuer les oprations arithmtiques
traditionnelles de faon naturelle sans avoir les programmer. Les oprateurs standards sont donc
directement applicables aux matrices. Si la commande entre ne respecte pas les rgles de calcul
matriciel (compatibilit des oprandes), le logiciel renverra une erreur.

+ addition
- soustraction
* produit
/ division droite
\ division gauche
^ puissance
transposition
inv() inversion

>> A = [2 1;6 9];


>> B = [1 0;-4 3];

>> A + B
ans =
3 1
2 12

>> A * B
ans =
-2 3
-30 27

>> A'
ans =
2 6
1 9

>> inv(B)
ans =
1.0000 0
1.3333 0.3333

>> A / B
ans =
3.3333 0.3333
18.0000 3.000

>> A^2
ans =
10 11
66 87

Si lon souhaite effectuer une opration, non pas matricielle, mais lments par lments, loprateur
doit tre prcd dun point . : .* ./ .^ .\
Appliquons ces oprateurs aux matrices de lexemple prcdent.

19
Y. Ariba et J. Cadieux Icam - Toulouse

>> A .* B
ans =
2 0
-24 27

>> B ./ A
ans =

0.5000 0
-0.6667 0.3333

>> A.^2
ans =
4 1
36 81

Les fonctions mathmatiques vues au paragraphe II.3.3 traitent Erreur ! Source du renvoi
introuvable.galement les matrices. Dans ce cas, la fonction est applique chaque lment. En
outre, dautres fonctions disponibles,

expm logm sqrtm mpower

ralisent quant elles, des oprations matricielles. Par exemple, les fonctions exp et expm
effectuent deux oprations tout fait diffrentes :

Pour

exp(A) et expm(A)

Le tableau suivant rsume quelques uns des oprateurs voqus prcdemment.

Syntaxe Matlab Ecriture mathmatique Composante ij


A A Aij
B B Bij
A+B A+B Aij Bij
A-B A-B Aij Bij
A.*B Aij Bij
A.^B Aij Bij
A.^s Aij s
A*B AB k Aik Bkj
A/B AB-1
A\B A-1B
T
A A A ji

20
Y. Ariba et J. Cadieux Icam - Toulouse

5 - Reprsentations graphiques
Les bibliothques de Matlab proposent un trs grand nombre de fonctions pour la manipulation
dobjets graphiques. Nous ne prsentons ici que quelques principes de base, utiles pour la
visualisation de courbes. Si nous nous concentrons particulirement sur la reprsentation graphique
2 dimensions, il est possible daller bien plus loin : graphismes 3D (courbes, maillages, surfaces),
dition dIHM (graphical user interface, GUI), animations Quelques exemples de reprsentations 3D
sont brivement prsents.

5.1 Graphiques 2D

Comme nous lavons vu dans lexemple introductif du paragraphe II.2.1 le trac dune courbe
seffectue partir de la commande plot(). Celle-ci prend en paramtres deux vecteurs et affiche sur
un graphique deux axes chaque couple de points (de mme indice). Par exemple, plot(x,y)
marquera un point pour chaque couple [x(i),y(i)] avec i allant de 0 length(x). On
reprsente ainsi les valeurs de y en fonction des valeurs de x. La fonction renvoie une erreur si x et y
ne sont pas de mme longueur. Si le premier vecteur x est omis, y est trac en fonction de son indice
i. Par dfaut, chaque point trac est reli par une droite.

Traons la fonction sinus dans l'intervalle [ -,] avec un pas de 0.01.


>> x = -pi : .01 : pi;
>> y = sin(x);
>> plot(x,y)

Le pas tant faible, la courbe semble parfaitement trace. Bien videmment, si lon diminue le nombre
de points (le pas est augment), la courbe apparaitra plus saccade.

>> x = -pi : .6 : pi;

21
Y. Ariba et J. Cadieux Icam - Toulouse

>> y = sin(x);
>> plot(x,y)

La commande plot prend un troisime argument permettant de spcifier la couleur du trac et le


symbole de reprsentation.

Retraons lexemple prcdent en rouge avec des toiles pour chaque point.
>> x = -pi : .6 : pi;
>> y = sin(x);
>> plot(x,y,r*)

22
Y. Ariba et J. Cadieux Icam - Toulouse

Diffrentes options sont disponibles (consulter le help plot) :

Various line types, plot symbols and colors may be obtained with
PLOT(X,Y,S) where S is a character string made from one element
from any or all the following 3 columns:

b blue . point - solid


g green o circle : dotted
r red x x-mark -. dashdot
c cyan + plus -- dashed
m magenta * star (none) no line
y yellow s square
k black d diamond
w white v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram

A chaque nouvelle commande plot, la figure est remplace. Pour garder plusieurs courbes, il faut
autoriser la superposition de graphique laide de la commande hold on . Les plot suivants se
superposeront jusqu la dsactivation hold off ou la fermeture de la fentre.

>> x = linspace(-20,20,1000);
>> y = x.*sin(x);
>> plot(x,y)
>> hold on
>> y2 = -x;

23
Y. Ariba et J. Cadieux Icam - Toulouse

>> plot(x,y2,'r')

Il est galement possible de tracer plusieurs courbes sur plusieurs fentres. Pour cela, une nouvelle
fentre (objet graphique figure) doit invoque avant lappel la fonction plot correspondante.

>> plot(x,y)
>> figure(2)
>> plot(x,y2,'r')

Dautres fonctions permettent une reprsentation diffrente des donnes, par exemples sous forme
discrte (stem), dhistogramme (bar), de camembert (pie), descalier (stairs), avec chelle
logarithmique (semilogx, semilogy)

La mise en forme dune reprsentation graphique, cest--dire linsertion de labels, lgende, le


dimensionnement des axes, peut tre dite de deux manires. La mthode la plus simple utilise
directement les menus de linterface de la figure (Edit et Insert). Toutes ces manipulations sont
galement ralisables partir de la Command Window en ligne de commande. Cette seconde
mthode est gnralement utilise lors du dveloppement de programmes. Voici quelques exemples
parmi les manipulations les plus simples :

>> xlabel('valeur x')


>> ylabel('valeur y')
>> title('mon graphique')
>> legend('ma courbe')
>> grid on
>> axis([xmin xmax ymin ymax])

24
Y. Ariba et J. Cadieux Icam - Toulouse

5.2 Graphiques 3D

Nous montrons ici les possibilits de Matlab en graphisme 3D sur quelques exemples.

Trac de courbes dans lespace


>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
>> grid on
>> axis square
>> xlabel('sin(t)'), ylabel('cos(t)'), zlabel('t')

La fonction prend en argument 3 vecteurs de mme taille. Son fonctionnement est similaire celui de
plot. Elle affiche dans un systme daxe 3 dimensions les triplets [x(i),y(i),z(i)].

25
Y. Ariba et J. Cadieux Icam - Toulouse

Reprsentation par maillage dans le plan (x,y)


>> x=[-2:0.1:2];
>> y=[-2:0.1:2];
>> [X,Y]=meshgrid(x,y);
>> colormap([0 0 1]);
>> Z=X.*exp(-X.^2-Y.^2);
>> mesh(X,Y,Z)
>> colormap('default') ;
>> surf(X,Y,Z)
>> xlabel('x'), ylabel('y'), zlabel('Z')

La fonction mesh trace un maillage (sries de lignes entre les points) tandis que la fonction surf trace
une surface. Ces fonctions prennent en argument 2 matrices gnres partir de 2 vecteurs (x et y,
pas ncessairement de mme taille) et une matrice Z de dimension (length(y),length(x)). Pour
chaque point du plan (x(i),y(j)), elles affichent la valeur (ou niveau) Z(j,i). Les 2 premires
matrices obtenues laide de la fonction meshgrid dfinissent tous les points du quadrillage. En fait,
le niveau Z(j,i) de chaque point du maillage est calcul partir des couples (X(j,i),Y(j,i)).
Une quatrime matrice peut tre prcise pour dfinir une chelle de couleur associe au niveau du
maillage. Cette chelle est base sur une palette de couleurs prdfinie par la valeur courante de la
variable colormap.

26
Y. Ariba et J. Cadieux Icam - Toulouse

Trac des courbes de contour


Reprenons lexemple prcdent.

>> x=[-2:0.1:2];
>> y=[-2:0.1:2];
>> [X,Y]=meshgrid(x,y);
>> Z=X.*exp(-X.^2-Y.^2);
>> contour(X,Y,Z,10)
>> xlabel('x'), ylabel('y')

La fonction contour trace dans le plan (x,y) les courbes z=cst dune surface. Elle sutilise comme
les deux fonctions prcdentes mais reprsente les courbes sur un graphique 2D avec un dgrad de
couleurs associ aux valeurs de z correspondantes. Le quatrime paramtre reprsente le nombre de
lignes de niveau tracer. On peut galement spcifier quelles lignes de niveau afficher. Par exemple,
pour dessiner les courbes z=-0.1,0,0.3, on crira contour(X,Y,Z,[-0.1 0 0.3]).

27
Y. Ariba et J. Cadieux Icam - Toulouse

6 - Programmation avec Matlab

Dans les prcdentes sections, nous avons prsent des sries de commandes lances depuis la
command window. Pour des calculs complexes et rptitifs, il est prfrable (ou plutt indispensable)
de rassembler lensemble des commandes dans un fichier qui constituera le programme excuter.
On distingue deux types de fichiers dans Matlab, galement appels m-files : les scripts et les
fonctions. Bien que lenvironnement de Matlab propose son propre diteur (fentre Editor), ces
fichiers sont de simples fichiers textes avec une extension .m. Vous pouvez donc utiliser votre diteur
de texte prfr pour crer vos programmes (sans oublier de modifier lextension). A partir de Matlab,
un m-file est cr ou ouvert, soit depuis le menu Fichier (New > M-File), soit depuis linvite en
tapant :
>> edit monfichier.m

Un m-file est reconnu, et donc excutable, sil se trouve dans le rpertoire courant (current
directory) ou si le rpertoire contenant est spcifi dans le PATH.

Nous allons voir que Matlab offre la possibilit de raliser de vritables applications trs labores.
Notons quil utilise un langage de programmation interprt, cest--dire quil ny a aucune phase de
compilation et les instructions du code sont directement excutes leur lecture.

28
Y. Ariba et J. Cadieux Icam - Toulouse

6.1 Fichiers SCRIPT

Un fichier script permet regrouper des sries de commandes Matlab. Cela vite davoir saisir
plusieurs fois de longues suites dinstructions. A son lancement, les instructions quil contient
sexcutent squentiellement comme si elles taient lances depuis linvite de commande. Un script
stocke ses variables dans le workspace, lequel est partag par tous les scripts. Ainsi, toutes les
variables cres dans les scripts sont visibles depuis la command window et vice versa. Lorsque
Matlab dtecte une erreur, le programme sarrte et un message d'erreur s'affiche l'cran (avec le
numro de la ligne o l'erreur est dtecte).

Editons notre script monfichier.m.

x = 2;
y = 4;

resultat(1) = x + y ;
resultat(2) = x * y ;
resultat(3) = sqrt(x^2+y^2);

resultat

Notre script peut ensuite tre excut, soit en tapant son nom (sans lextension) linvite de
commande, soit en cliquant sur le bouton run de lditeur (icne avec un triangle vert).

>> monfichier

resultat =

6.0000 8.0000 4.4721

29
Y. Ariba et J. Cadieux Icam - Toulouse

Des annotations peuvent tre ajoutes dans le code afin de le commenter. Pour cela, chaque ligne de
commentaires doit tre prcde par le caractre %. Les mots suivant ce symbole ne seront pas
interprts.

De manire gnrale, il est essentiel dinclure dans le code un nombre consquent de commentaires.
Ils permettent de documenter un programme et facilitent la relecture, la maintenance de celui-ci.

6.2 Fichiers FUNCTION

Le principe d'une fonction est d'effectuer des oprations partir dune ou plusieurs entres et fournir
une ou plusieurs sorties (rsultat). Les variables dentres sont des paramtres spcifier en
argument de la fonction, tandis que les variables de sorties sont des valeurs quelle renvoie. Un m-file
function est tout fait semblable aux fonctions intgres de Matlab. Par exemple, la fonction length
renvoie la taille du tableau entr en argument.

>> taille = length(tab);

Un m-file est dfinit comme une fonction en plaant en tte du fichier le mot cl function suivit de
son prototype. Un prototype est de la forme

[s1,s2,] = nomfonction(e1,e2,)

Le membre de gauche regroupe les sorties renvoyes par la fonction et les variables entres
parenthses sont les entres. Le nom du fichier doit tre identique au nom de la fonction. Ecrivons
dans lditeur notre fonction qui permet de calculer laire et le volume dune sphre pour un rayon
donn.

% ce fichier est une fonction matlab


% mafonction calcul l'aire et le volume d'une sphre de rayon r

function [A,V] = mafonction(r)

% calcul Aire
A = 4*pi*r^2;

% calcul Volume
V = 4*pi*r^3/3;

30
Y. Ariba et J. Cadieux Icam - Toulouse

Lappel de la fonction seffectue de la mme faon que pour les fonctions prdfinies dans le logiciel

>> [aire,volume] = mafonction(2);


>> aire

aire =

50.2655

>> volume

volume =

33.5103

Le point fondamental qui diffrencie une fonction dun script est le fait que les variables internes soient
locales, cest--dire que les variables dfinies dans une fonction nexistent que dans celle-ci. De plus,
les variables du workspace ne sont pas visibles depuis une fonction. Ainsi, dans notre exemple, les
paramtres A, V et r ne sont pas connues dans le workspace.

>> whos
Name Size Bytes Class Attributes

aire 1x1 8 double


volume 1x1 8 double

Pour pouvoir utiliser une variable partage par le workspace et une (voire des) fonction(s), celle-ci
doit tre dclare comme global la fois dans la command window et dans la (les) fonction(s).
Ajoutons notre fonction

global x;
x = r;

et crivons les lignes suivantes dans la command window

>> global x;
>> x = 10;

31
Y. Ariba et J. Cadieux Icam - Toulouse

>> [aire,volume]=mafonction(3);
>> x

x =

On constate donc que la variable globale x, a t modifie lors de lappel de la fonction.

Notons toutefois que lutilisation de variables globales est dconseille, car souvent source derreurs
dexcution, et doit donc tre minimise.

Des instructions permettent de contrler les arguments dentres et de sorties dune fonction:

nargin retourne le nombre darguments dentre


nargout retourne le nombre darguments de sortie
nargchk vrifie le nombre darguments dentre
inputname retourne le nom dun argument dentre

6.3 Oprateurs relationnels et logiques


Comme dans tout langage de programmation, Matlab possde des oprateurs qui permettent dtablir
des expressions renvoyant en rsultat une valeur logique, cest--dire 0 ou 1. Ces expressions
logiques sont gnralement utilises dans les structures de contrle prsentes dans la prochaine
section.

Oprateurs relationnels
Ces oprateurs comparent deux oprandes de mme dimension :

== gal
~= diffrent de
> strictement suprieur
>= suprieur ou gal
< strictement infrieur
<= infrieur ou gal

Lorsque deux scalaires sont compars, le rsultat est un scalaire qui vaut 1 si la relation est vrai et 0
si elle est fausse. Si deux matrices sont compares, le rsultat est une matrice de mme dimension
constitue de 1 et 0, la relation tant teste lment par lment.

>> 10 > 9
ans =
1

>> 2 == 3
ans =
0

>> 4 ~= 7
ans =
1

>> [1 4 ; 7 3] <= [0 6 ; 7 2]
ans =

0 1
1 0

32
Y. Ariba et J. Cadieux Icam - Toulouse

Oprateurs logiques
Ces oprateurs effectuent un test logique entre deux variables logiques de mme dimension:

& et
| ou
~ non
xor ou exclusif
any(x) retourne 1 si un des lments de x est non nul
all(x) retourne 1 si tous les lments de x sont nuls

Le rsultat vaut 1 si le test est vrai et 0 sil est faux. Pour des matrices, lopration seffectue aussi
lment par lment. Concernant les oprandes, une valeur est considre comme fausse (=0) si elle
est nulle. Elle est considre comme vrai (=1) si elle est non nulle.

>> x = [0 1 0 1];
>> y = [0 0 1 1];
>> x & y
ans =
0 0 0 1

>> x | y
ans =
0 1 1 1

>> ~x
ans =
1 0 1 0

>> xor(x,y)
ans =
0 1 1 0

>> 0 | 3
ans =
1

>> ~(-2.4)
ans =
0

6.4 Structures de contrle

Dans sa forme la plus simple, le droulement dun programme est linaire dans le sens o les
instructions qui le composent sexcutent successivement. Les structures de contrle sont des
mcanismes qui permettent de modifier la squence dexcution des instructions. Plus prcisment,
lors de lexcution, en fonction des conditions ralises certaines parties prcises du code seront
excutes.

Branchement conditionnel (if elseif else)


Cette structure permet dexcuter un bloc dinstructions en fonction de la valeur logique dune
expression. Sa syntaxe est :

if expression
instructions
end

33
Y. Ariba et J. Cadieux Icam - Toulouse

Lensemble des instructions instructions est excut seulement si expression est vraie.
Plusieurs tests exclusifs peuvent tre combins.

if expression1
instructions1
elseif expression2
instructions2
else
instructions3
end

Plusieurs elseif peuvent tre concatns. Leur bloc est excut si lexpression correspondante est
vraie et si toutes les conditions prcdentes nont pas t satisfaites. Le bloc instruction3 associ
au else est quant lui excut si aucune des conditions prcdentes na t ralises.

if x > 0
disp(x est positif);

elseif x == 0
disp(x est nul);

else
x = 1;

end

Bien videment, la variable x doit tre dfinie auparavant. La fonction disp permet dafficher une
chane de caractre spcifie entre apostrophes. Si x nest ni positif ni nul, il reoit la valeur 1.

Branchement multiple (switch case)


Dans cette structure, une expression numrique est compare successivement diffrentes valeurs.
Ds quil y a identit, le bloc dinstructions correspondant est excut. Sa syntaxe est :

switch expression
case valeur1,
instructions1
case valeur2,
instructions2
case valeur3,
instructions3

otherwise
instructions
end

Lexpression teste, expression, doit tre un scalaire ou une chane de caractre. Une fois quun
bloc instructionsi est excut, le flux dexcution sort de la structure et reprend aprs le end. Si
aucun case vrifie lgalit, le bloc qui suit otherwise est excut.

switch x
case 0,
resultat = a + b;
case 1,
resultat = a * b;
case 2,
resultat = a/b;

34
Y. Ariba et J. Cadieux Icam - Toulouse

case 3,
resultat = a^b;
otherwise
resultat = 0;
end

En fonction de la valeur de x une opration particulire est effectue. Par dfaut, resultat prend la
valeur 0.

Boucle conditionnelle (while )


Ce mcanisme permet de rpter une srie dinstructions tant quune condition est vrifie. Sa
syntaxe est :

while expression

instructions
end

Le terme expression est une expression logique. Si cette dernire est vraie, le bloc
instructions est excut. Puis, expression est de nouveau test. Lexcution du bloc est rpte
tant que le test est vrai.

compteur = 0;
while compteur < 10

disp(toujours dans la boucle) ;


compteur = compteur + 1;
end

Cet exemple affiche 10 fois la chane de caractre toujours dans la boucle.

Boucle itrative (for )


Cette boucle excute le bloc interne autant de fois que spcifi par une variable jouant un rle de
compteur. Sa syntaxe est :

for variable = debut:increment:fin

instructions
end

Le compteur variable est initialis la valeur debut et volue jusqu la valeur fin par pas de
increment. A chaque itration, le bloc instructions est excut. Gnralement, variable est
un scalaire, et souvent un entier.

N = 5 ;
for k = 1:N

x(k)= 1/k;
end

Cet exemple construit lment par lment un vecteur x de dimension 5.

35
Y. Ariba et J. Cadieux Icam - Toulouse

36
Y. Ariba et J. Cadieux Icam - Toulouse

III. APPLICATION A LA
MECANIQUE

1 - Les structures
On a vu jusqu maintenant que MATLAB permet de manipuler facilement des matrices. Mais, il
permet galement de manipuler un autre type de structure de donnes appele les structures, qui
permettent notamment de stocker des lments de diffrents types et de diffrentes tailles sous une
mme variable.

Lavantage principal rside dans la capacit dune structure regrouper, sous un seul nom,
linformation qui serait dfaut disperse. Par exemple, si on doit simuler la chute dune balle, il faut
des variables pour reprsenter sa masse, un vecteur vitesse et un vecteur position. Au lieu de dfinir
une variable par proprit, on peut regrouper ces proprits dans une structure appele balle

>> clear
>> balle.masse = 10;
>> balle.position = [0, 0, 100];
>> balle.vitesse = [0, 0, 0];

Pour voir le contenu de la structure, il faut juste taper son nom linvite de commande
>> balle
balle =

masse: 10
position: [0 0 100]
vitesse: [0 0 0]

Chaque constituant de la structure est appel un champ. On peut galement avoir le contenu dun
champ en tapant :
>>balle.position
ans =

0 0 100

On peut faire les oprations sur les champs dune structure comme sur nimporte quelle variable. Pour
modifier la position de la balle de 10 suivant laxe y :
>> balle.position = balle.position + [0, 10, 0]
balle =

37
Y. Ariba et J. Cadieux Icam - Toulouse

masse: 10
position: [0 10 100]
vitesse: [0 0 0]

On peut facilement ajouter un nouveau champ une structure existante :


>> balle.rayon = 2.0
>> balle =

masse: 10
position: [0 10 100]
vitesse: [0 0 0]
rayon: 2

38
Y. Ariba et J. Cadieux Icam - Toulouse

IV. APPLICATION A
LAUTOMATIQUE
Matlab est le logiciel de prdilection des automaticiens, il possde de nombreuses fonctionnalits
spcifiques lAutomatique. Les fonctions les plus standards sont regroupes dans la Control System
Toolbox. Ce chapitre prsente, sur divers exemples, lutilisation de Matlab pour lAutomatique. Dans
un second temps nous parlerons dun second logiciel, Simulink, intgr Matlab, lui aussi trs utilis
par la communaut des automaticiens. Il sagit dun environnement graphique pour la modlisation et
la simulation de systmes multi-domaine.

1 - Reprsentation des systmes linaires invariants

1.1 Fonctions de transfert


La Control System Toolbox permet de dfinir des objets de type tf, cest--dire transfert function. La
fonction du mme nom, tf(), cre une fonction de transfert particulire. Elle prend en argument deux
vecteurs contenant les coefficients des polynmes du numrateur et du dnominateur. Ainsi, une
fonction de transfert de la forme :

sera dfinie par la commande tf(num,den)

avec

>> G = tf([1 2],[1 3 2])

Transfer function:
s + 2
-------------
s^2 + 3 s + 2

>> H = tf([1 -1],[3 1 0])


transfer function:
s - 1

39
Y. Ariba et J. Cadieux Icam - Toulouse

---------
3 s^2 + s

Dans Matlab, et plus gnralement dans la littrature anglo-saxonne, la variable de Laplace p est
note s.

1.2 Reprsentation dtat


Dans la cas dune modlisation dans lespace dtat, le type dobjet utilis est le type ss (state-space).
La fonction associe, ss(), prend en argument les 4 matrices dfinissant le systme. Soit le systme
linaire invariant suivant :

o A, B, C et D sont, respectivement, les matrices dynamique, de commande, de sortie et de transfert


direct. Ce modle sera dfini par la commande : ss(A,B,C,D)
Bien videmment, les matrices doivent tre dfinies au pralable. Attention la compatibilit des
dimensions.

>> A=[-1 4 ; 0 -2];


>> B=[2;3];
>> C=[1 0];
>> D=0;
>> sys = ss(A,B,C,D)

a =
x1 x2
x1 -1 4
x2 0 -2

b =
u1
x1 2
x2 3

c =
x1 x2
y1 1 0

d =
u1
y1 0

Continuous-time model.

Les diffrentes matrices dun objet de type ss peuvent tre rcupres par les commandes sys.a,
sys.b, sys.c et sys.d.

>> sys.a

ans =
-1 4
0 -2

40
Y. Ariba et J. Cadieux Icam - Toulouse

1.3 Systmes discrets et chantillonns


La dfinition de fonctions de transfert en Z et de modles dtat discrets suit la mme notation que
dans le cas des systmes continus. Dans les deux cas un argument supplmentaire doit tre spcifi :
la priode dchantillonnage.

Exemple dune fonction de transfert en Z avec une priode dchantillonnage de 200ms:


>> Gd = tf([1 1],[1 0.5 0.25],0.2)

Transfer function:
z + 1
------------------
z^2 + 0.5 z + 0.25

Sampling time: 0.2

Une fonction de transfert en Z peut galement tre dfinie en z-1 en prcisant explicitement la forme
de la variable.
>> Gd2 = tf([7 -1],[1 4 3],0.2,'variable','z^-1')

Transfer function:
7 - z^-1
-------------------
1 + 4 z^-1 + 3 z^-2

Sampling time: 0.2

Exemple dune reprsentation dtat dun systme discret avec une priode de 1s:
>> A=[0.1 3 ; 0 -0.5];
>> B=[0;1];
>> C=[1 1];
>> D=0;
>> sysd = ss(A,B,C,D,1)

a =
x1 x2
x1 0.1 3
x2 0 -0.5

b =
u1
x1 0
x2 1

c =
x1 x2
y1 1 1

d =
u1
y1 0

Sampling time: 1
Discrete-time model.

La valeur particulire -1 en argument indique que la priode dchantillonnage est indtermine. Les
commandes Gd.Ts et sysd.Ts renvoient la priode du systme discret correspondant.

41
Y. Ariba et J. Cadieux Icam - Toulouse

1.4 Conversions de modles

Lors de ltude dun systme, il est souvent pratique de passer dune reprsentation une autre en
fonction des objectifs. En effet, les fonctions de transfert et la reprsentation dtat sont deux
formalismes qui possdent leurs propres outils danalyse et mthodes de synthse de lois de
commande. Par ailleurs, la Control System Toolbox fournit aussi des fonctions pour convertir un
modle temps continu en un modle temps discret. Ces fonctions sont trs utiles pour
lchantillonnage et la discrtisation de systmes continus.

Premirement, la conversion de la classe dun modle (fonction de transfert ou espace dtat)


seffectue aisment en appliquant directement la fonction correspondante lobjet convertir (tf ou
ss). Notons la commande class qui permet, entre autres, de retourner le type de lobjet donn en
argument.

fonction de transfert reprsentation dtat


>> G = tf([1 2],[1 3 2]);
>> class(G)
ans =

tf
>> ss(G)

a =
x1 x2
x1 -3 -2
x2 1 0

b =
u1
x1 2
x2 0

c =
x1 x2
y1 0.5 1

d =
u1
y1 0

Continuous-time model.

reprsentation dtat fonction de transfert


>> A=[-1 4 ; 0 -2];
>> B=[2;3];
>> C=[1 0];
>> D=0;
>> sys = ss(A,B,C,D);
>> class(sys)
ans =

ss
>> G = tf(sys)

Transfer function:
2 s + 16
-------------
s^2 + 3 s + 2

42
Y. Ariba et J. Cadieux Icam - Toulouse

Les reprsentations dtat ntant pas uniques il est possible doprer des changements de bases. La
fonction ss2ss ralise, en prcisant une matrice de passage, un changement de coordonnes de
ltat. La fonction canon transforme un modle dans lespace dtat sous une forme canonique (forme
modale ou compagne).

Le calcul de modles chantillonns ou la discrtisation de systmes continus seffectuent laide de


la fonction cd2, cest--dire continuous-to-discrete . Elle ncessite trois arguments : le modle du
systme continu transformer (tf ou ss), la priode dchantillonnage et la mthode de conversion.
Deux mthodes sont principalement utilises : zoh et tustin. La premire donne un systme
numrique obtenu par chantillonnage tandis que la seconde un systme numrique obtenu pas
discrtisation via la transformation de Tustin (ou la mthode des trapzes, ou approximation
bilinaire).

systme continu systme chantillonn


>> G = tf([1 2],[1 3 2]);
>> Ge = c2d(G,0.5,'zoh')

Transfer function:
0.3935 z - 0.1447
-----------------------
z^2 - 0.9744 z + 0.2231

Sampling time: 0.5

systme continu systme discret approch par la mthode de Tustin


>> G = tf([1 2],[1 3 2]);
>> Gd=c2d(G,0.5,'tustin')

Transfer function:
0.2 z^2 + 0.1333 z - 0.06667
----------------------------
z^2 - 0.9333 z + 0.2

Sampling time: 0.5

1.5 Connexions de systmes


Des systmes complexes peuvent tre construits partir de sous-systmes lmentaires. Voici les
trois oprations de base pour linterconnexion de modles.

Mise en srie de deux systmes :

>> F = series(G1,G2);
ou bien
>> F = G1 * G2;

Mise en parallle de deux systmes :

43
Y. Ariba et J. Cadieux Icam - Toulouse

>> F = parallel(G1,G2);
ou bien
>> F = G1 + G2;

Bouclage dun systme :

>> F = feedback(G1,G2);

2 - Analyse des systmes dynamiques

2.1 Quelques fonctions utiles

Bien quil soit possible de calculer les caractristiques dun systme partir des fonctions standards, il
existe des fonctions ddies.

pole(G) renvoie les ples du systme.

zero(G) renvoie les zros du systme.

damp(G) renvoie lamortissement et la pulsation propre associs aux ples.

dcgain(G) renvoie le gain statique du systme.

pzmap(G) reprsentation graphique des ples et zros dans le plan complexe

ctrb(sys) renvoie la matrice de commandabilit de la reprsentation dtat.

44
Y. Ariba et J. Cadieux Icam - Toulouse

obsv(sys) renvoie la matrice dobservabilit de la reprsentation dtat.

2.2 Rponses temporelles


Un ensemble de fonctions permettent de calculer et tracer la rponse dun systme une entre
donne. Plus particulirement, la fonction step simule la rponse indicielle et impulse la rponse
impulsionnelle dun systme donn en argument. Pour les systmes de type ss, initial calcule le
rgime libre dun systme pour des conditions initiales spcifies. Concernant les options daffichage,
la syntaxe est identique la fonction plot.

>> G = tf(2,[1 2 16]);


>> step(G)

>> impulse(G)

45
Y. Ariba et J. Cadieux Icam - Toulouse

Un clic droit sur la figure permet dobtenir des informations sur diffrentes caractristiques du systme
test.

De manire gnrale, il est possible de calculer la rponse dun systme pour une entre arbitraire via
la commande lsim. Elle peut prendre trois arguments: le systme, le vecteur dentre et le vecteur
temps. Ces deux vecteurs doivent videmment tre de mme taille. Le vecteur dentre peut tre
construit point par point ou encore tre gnr laide de gensig (pour des signaux carr,
sinusodale ou impulsions).

>> G=tf([1 1],[1 4 3/2]);


>> [U,T]=gensig('square',20,70);
>> lsim(G,U,T)

La seconde ligne cre un signal carr priodique de priode 20 sur un horizon temporelle de 70s. La
fonction renvoie le vecteur du signal et le vecteur temps.

46
Y. Ariba et J. Cadieux Icam - Toulouse

2.3 Lieux de transfert


Lanalyse frquentielle dun systme peut tre effectue facilement laide des fonctions spcifiques,
ralisant les tracs des lieux de Bode, Nyquist et Black-Nichols :

bode(G)
nyquist(G)
nichols(G)

Pour chacune des commandes, il est possible de spcifier explicitement lintervalle de pulsations
considres. La syntaxe des options de traage est identique celle de plot. En prcisant des
arguments de sortie, les fonctions retournent les vecteurs des valeurs du trac. Un clic droit sur la
figure permet dobtenir des informations sur diffrentes caractristiques du systme test. Dans le cas
de la fonction de nichols, la commande grid permet de visualiser labaque de Black. Enfin, notons
la fonction margin qui est similaire bode mais affiche en plus les marges de gain et de phase.

3 - Simulink

Simulink7 est un logiciel muni dune interface graphique pour la modlisation, la simulation et lanalyse
des systmes dynamiques. Etant intgr MATLAB, les deux environnements sont parfaitement
compatibles et les diffrentes fonctionnalits de ce dernier sont alors directement accessibles.
Simulink est bas sur une interface graphique qui permet une contruction aise et conviviale de

7
Simulink est un produit dvelopp par la socit The MathWorks, Inc.. Simulink est une marque dpose par
cette mme socit.

47
Y. Ariba et J. Cadieux Icam - Toulouse

schmas-blocs. Chaque bloc composant le systme est slectionn depuis un ensemble de


bibliothques prdfinies.

3.1 Cration dun modle


Simulink peut tre lanc depuis lenvironnement de MATLAB

- en cliquant, dans la barre doutils, sur le bouton

- ou en tapant simulink

La fentre suivante apparat

La colonne de gauche liste les bibliothques disponibles. Celles-ci sont ranges par disciplines
(Automatique, Aerospace, Communication, Traitement du signal, Systme embarqus) et
regroupent un ensemble de blocs fonctionnels lis une catgorie de fonctions particulires. A la
slection dune bibliothque, les blocs qui la composent sont affichs dans la partie de droite.

Un nouveau modle est cr en cliquant sur licone feuille blanche (ou dans le menu File > New
> Model). Une fentre vide apparat, elle va servir de support pour construire votre modle.

48
Y. Ariba et J. Cadieux Icam - Toulouse

Linterface est intuitive et facile utiliser, un modle est construit partir des blocs fonctionnels par
glisser-dposer. Les blocs sont ensuite interconnects par des flches dessines laide de la souris
(cliquer-maintenir sur une entre ou une sortie puis relcher sur une entre ou une sortie). Chaque
bloc peut tre dit (rglages de ses paramtres) en double-cliquant dessus. Cette dernire action
permet douvrir une fentre de dialogue dans laquelle une description du bloc et des champs
paramtrables sont donns.

Par exemple, si lon souhaite diter le bloc Sine Wave (obtenu dans la bibliothque Sources), un
double-clique donne la fentre

49
Y. Ariba et J. Cadieux Icam - Toulouse

Cette fentre dcrit la fonction ralise par le bloc ainsi que les diffrents paramtres rgler.

Les modles peuvent tre sauvegards dans des fichiers dextension .mdl . Simulink manipule les
fichiers (sauvegarde, ouverture, fermeture, cration) de faon classique laide du menu File ou
des icones. Un fichier existant (par exemple monschema.mdl ) peut galement tre directement
invoqu depuis la fentre de commande MATLAB en tapant son nom sans extension :
>> monschema;

3.2 Quelques bibliothques


Simulink possde de nombreuses bibliothques, adaptes pour la modlisation dune multitude de
systmes de diffrentes natures. De plus, lajout de toolboxes supplmentaires permet denrichir les
librairies et les fonctionnalits du logiciel. Nous prsentons dans ce paragraphe seulement quelques
blocs simples et prsents dans la version de base de Simulink. Nous allons voir quelques blocs
standards, souvent utiliss pour la simulation de systmes asservis LTI.

Sources
Les sources sont des blocs possdant une ou plusieurs sorties et aucune entre. Ils sont utiliss pour
la gnration de signaux

50
Y. Ariba et J. Cadieux Icam - Toulouse

Signal chelon ; signal rampe ; signal sinusodal ; valeurs fournies par un fichier ; temps.

Sinks
Les blocs de cette librairie, linverse des sources, ne possdent quune ou plusieurs entres (sink
signifie lavabo, cest--dire qui collecte le flux dinformation). Ils sont utiliss pour laffichage (digital,
oscilloscope) ou la mmorisation de signaux (vers une variable, un fichier).

Affichage type oscilloscope ; stockage dans une variable; stockage dans un fichier.

Math Operations
Ensemble de blocs ralisant une fonction mathmatique applique aux signaux entrants. Le (ou les)
rsultat(s) est (sont) renvoy(s) sur le (les) point(s) de sortie.

Somme/soustrait deux signaux ; multiplie un signal; fournit le module et la phase ; applique une
fonction standard.

Signal Routing
Ensemble de blocs utiles pour laiguillage de signaux ou la connexion de blocs.

Multiplexeur: combine deux entres en une seule (vecteur) ; switch: permet de slectionner
manuellement une entre; dmultiplexeur: spare une entre (vecteur) en plusieurs composantes.

Control System Toolbox


Bloc LTI system pour la dfinition de fonctions de transfert.

51
Y. Ariba et J. Cadieux Icam - Toulouse

La fonction de transfert peut tre directement dfinie via les paramtres du bloc en suivant la syntaxe
de la fonction tf (vue prcdemment). Par ailleurs, si une fonction de transfert a dj t dfinie dans
le workspace de MATLAB, elle peut tre reprise dans le bloc en spcifiant simplement son nom.

3.3 Simulation
Une fois le modle ralis, lintrt de Simulink consiste le simuler. Une simulation peut tre lance
soit partir de licne lecture en forme de triangle (ou dans le menu Simulation > Start), soit
partir de MATLAB avec la commande sim().
Le premier paramtre de simulation (et le seul, dans le cas dutilisation simpliste de Simulink) rgler
est le temps de simulation. Il peut tre spcifi dans le champ droite de licne de lancement dune
simulation. Il doit tre exprim en seconde.
Pour une utilisation avance, de nombreuses options permettent de configurer de manire trs
prcise les paramtres de simulation. De telles configurations sont accessibles dans le menu
Simulation > Configuration Parameters :

Cette interface donne la possibilit de configurer (entre autres):


- l'horizon temporel de simulation (en sec), le solver utilis (et ses paramtres) pour la
rsolution numrique des quations diffrentielles,
- la gestion des entres/sorties avec MATLAB, les variables sauvegardes,
- les notifications derreurs ou dalertes sur diffrents vnements, diagnostic de simulation,
-

Nous nentrerons pas plus dans les dtails du paramtrage dune simulation car trs complexe et
inutile dans le cadre dune simple introduction Simulink.

52
Y. Ariba et J. Cadieux Icam - Toulouse

3.4 Exemple
Considrons un systme modlis par la fonction de transfert suivante :

Dfinissons celle-ci dans MATLAB:


>> G = tf(1,[1 1 2])

Nous souhaiterions savoir comment le systme ragit une sollicitation de type chelon unitaire. Pour
cela, construisons un modle Simulink afin de simuler la rponse indicielle de notre systme. Nous
avons donc besoin :
- dun bloc pour reprsenter la fonction de transfert G(p),
- dune source pour gnrer le signal chelon,
- et un bloc permettant la visualisation graphique de la sortie du systme.

Paramtrons les blocs Step et LTI System pour notre exemple.

53
Y. Ariba et J. Cadieux Icam - Toulouse

Nous fixons un chelon de valeur initiale 0 (initial value), damplitude 1 (final value) et se dclanchant
t=0 (step time). Nous dfinissons ensuite le systme que nous tudions par la variable G
prcdement dfinie dans MATLAB. Enfin, la simulation sera effectue sur un horizon temporel de
15s.
Aprs execution de la simulation, la rponse peut tre observe en double-cliquant sur loscilloscope

Ralisons maintenant un asservissement avec une commande proportionnelle de gain . Notre


nouveau modle de simulation nous permettra de tester les performances de lasservissement pour
diffrentes valeurs de . Il peut tre fix directement depuis le bloc ou via MATLAB. Ici le multiplexeur
permet dafficher sur un seul graphe le signal de consigne et le signal de sortie.

La variable a t spcifie dans la boite de dialogue du bloc Gain. Celle-ci doit tre pralablement
dfinie avec une valeur numrique. Excutons dans MATLAB la commande :
>> K = 5

54
Y. Ariba et J. Cadieux Icam - Toulouse

Simulons notre modle et visualisons la rponse du systme asservi via le Scope.

En modifiant la valeur de dans MATLAB, on peut facilement et rapidement analyser (par


simulation) le comportement de lasservissement en fonction du gain de correction.

55