Documente Academic
Documente Profesional
Documente Cultură
Dpartements
GEI & Mcanique
Version 0.1
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
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
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.
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 :
1
http://www.mathworks.com/
6
Y. Ariba et J. Cadieux Icam - Toulouse
2 - Objectifs
Espaces dentraide :
- Developpez.com : http://matlab.developpez.com/
- Matlab Central : http://www.mathworks.com/matlabcentral/
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.
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.
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.
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
9
Y. Ariba et J. Cadieux Icam - Toulouse
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;
>>
t =
Columns 1 through 8
Columns 9 through 13
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,*);
11
Y. Ariba et J. Cadieux Icam - Toulouse
>> 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
>> X = inv(A)*B
X =
1.7500
-8.5000
-16.2500
3 - Les variables
>> 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.
Il existe des symboles auxquels sont associs des valeurs prdfinies. En voici quelques uns :
pi Nombre 3.141592...
i ou j Nombre complexe
>> pi=1
pi =
1
>> clear pi
>> pi
ans =
3.1416
>> a = 2 + i*3;
>> b = 1 - i;
>> a + b
ans =
3 + 2i
13
Y. Ariba et J. Cadieux Icam - Toulouse
Fonctions trigonomtriques :
Fonctions autres :
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.
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
>> 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).
Nous prsentons dans ce paragraphe un ensemble de fonctions usuelles lies lutilisation des
tableaux.
15
Y. Ariba et J. Cadieux Icam - Toulouse
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.
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
La matrice identit :
>> I = eye(3)
I =
1 0 0
0 1 0
0 0 1
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
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
Nous prsentons dans ce paragraphe un ensemble de fonctions usuelles lies lutilisation des
matrices.
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.
18
Y. Ariba et J. Cadieux Icam - Toulouse
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 + 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,
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)
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.
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.
21
Y. Ariba et J. Cadieux Icam - Toulouse
>> y = sin(x);
>> plot(x,y)
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
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:
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)
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.
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
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
>> 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
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
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).
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 =
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.
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.
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.
% 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 =
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
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;
>> global x;
>> x = 10;
31
Y. Ariba et J. Cadieux Icam - Toulouse
>> [aire,volume]=mafonction(3);
>> x
x =
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:
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
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.
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.
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.
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
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
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]
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.
avec
Transfer function:
s + 2
-------------
s^2 + 3 s + 2
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.
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
Transfer function:
z + 1
------------------
z^2 + 0.5 z + 0.25
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
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
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.
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.
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).
Transfer function:
0.3935 z - 0.1447
-----------------------
z^2 - 0.9744 z + 0.2231
Transfer function:
0.2 z^2 + 0.1333 z - 0.06667
----------------------------
z^2 - 0.9333 z + 0.2
>> F = series(G1,G2);
ou bien
>> F = G1 * G2;
43
Y. Ariba et J. Cadieux Icam - Toulouse
>> F = parallel(G1,G2);
ou bien
>> F = G1 + G2;
>> F = feedback(G1,G2);
Bien quil soit possible de calculer les caractristiques dun systme partir des fonctions standards, il
existe des fonctions ddies.
44
Y. Ariba et J. Cadieux Icam - Toulouse
>> 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).
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
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
- ou en tapant simulink
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;
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.
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 :
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 :
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.
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
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
55