Académique Documents
Professionnel Documents
Culture Documents
Dpartements
GEI & Mcanique
Version 0.1
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.
Icam - Toulouse
Y. Ariba et J. Cadieux
Y. Ariba et J. Cadieux
Icam - Toulouse
Y. Ariba et J. Cadieux
Icam - Toulouse
Icam - Toulouse
Y. Ariba et J. Cadieux
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.
http://www.mathworks.com/
6
Icam - Toulouse
Y. Ariba et J. Cadieux
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/
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/
http://www.gnu.org/
8
Icam - Toulouse
Y. Ariba et J. Cadieux
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 :
Icam - Toulouse
Y. Ariba et J. Cadieux
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.
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
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 :
11
Y. Ariba et J. Cadieux
Icam - Toulouse
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 =
x =
4
>> y =
y =
2
>> x +
ans =
6
>> x *
ans =
8
4
2
y
y
12
Icam - Toulouse
Y. Ariba et J. Cadieux
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
ans
x
y
Size
1x1
1x1
1x1
Bytes
8
8
8
Class
double
double
double
Attribute
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.
Symbole
Signification
Valeur
pi
Nombre
i ou j
Nombre complexe
realmax
1.7977e+308
realmin
2.2251e-308
3.141592...
13
Icam - Toulouse
Y. Ariba et J. Cadieux
cos
acos
cosh
tan
atan
tanh
sqrt
exp
log
log10
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.
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
Icam - Toulouse
Y. Ariba et J. Cadieux
4
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
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
v(3) retourne le 3ime lment du vecteur v. Largument 2:4 permet de slectionner un bloc
dlments (ici du second au quatrime).
max(v)
min(v)
mean(v)
sum(v)
15
Icam - Toulouse
Y. Ariba et J. Cadieux
prod(v)
sort(v)
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
>> cos(v)
ans =
1.0000
0.7071
0.0000
3.1416
6.2832
-1.0000
1.0000
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
4
5
7
8
3
13
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
Icam - Toulouse
Y. Ariba et J. Cadieux
0
0
0
0
0
0
0
0
1
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
de la matrice M, on tapera :
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
4
5
>> M(1,:)
ans =
3
6
17
Icam - Toulouse
Y. Ariba et J. Cadieux
1
>> 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
>> B
>> C
>> M
M =
=
=
=
=
1
1
0
0
0
[1 1 ; 1 1];
[2 2 ; 2 2];
3;
blkdiag(A,B,C)
1
1
0
0
0
0
0
2
2
0
0
0
2
2
0
0
0
0
0
3
18
Icam - Toulouse
Y. Ariba et J. Cadieux
inv()
addition
soustraction
produit
division droite
division gauche
puissance
transposition
inversion
1
12
>> A * B
ans =
-2
-30
3
27
>> A'
ans =
2
1
6
9
>> inv(B)
ans =
1.0000
1.3333
0
0.3333
>> A / B
ans =
3.3333
18.0000
0.3333
3.000
>> A^2
ans =
10
66
11
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
Icam - Toulouse
Y. Ariba et J. Cadieux
>> A .* B
ans =
2
0
-24
27
>> B ./ A
ans =
0.5000
-0.6667
>> A.^2
ans =
4
36
0
0.3333
1
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)
Syntaxe Matlab
Ecriture mathmatique
Composante ij
Aij
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
A/B
AB-1
A\B
A-1B
k Aik Bkj
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)
22
Icam - Toulouse
Y. Ariba et J. Cadieux
blue
green
red
cyan
magenta
yellow
black
white
.
o
x
+
*
s
d
v
^
<
>
p
h
point
circle
:
x-mark
-.
plus
-star
(none)
square
diamond
triangle (down)
triangle (up)
triangle (left)
triangle (right)
pentagram
hexagram
solid
dotted
dashdot
dashed
no line
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.
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
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
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
28
Icam - Toulouse
Y. Ariba et J. Cadieux
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
Icam - Toulouse
Y. Ariba et J. Cadieux
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.
30
Icam - Toulouse
Y. Ariba et J. Cadieux
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
aire
volume
Size
1x1
1x1
Bytes
8
8
Class
Attributes
double
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
Icam - Toulouse
Y. Ariba et J. Cadieux
>> [aire,volume]=mafonction(3);
>> x
x =
3
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
nargout
nargchk
inputname
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
Icam - Toulouse
Y. Ariba et J. Cadieux
Oprateurs logiques
Ces oprateurs effectuent un test logique entre deux variables logiques de mme dimension:
&
|
~
xor
any(x)
all(x)
et
ou
non
ou exclusif
retourne 1 si un des lments de x est non nul
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
>> x | y
ans =
0
>> ~x
ans =
1
>> xor(x,y)
ans =
0
1
>> 0 | 3
ans =
1
>> ~(-2.4)
ans =
0
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.
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.
35
Y. Ariba et J. Cadieux
Icam - Toulouse
36
Icam - Toulouse
Y. Ariba et J. Cadieux
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
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:
position:
vitesse:
rayon:
10
[0 10 100]
[0 0 0]
2
38
Icam - Toulouse
Y. Ariba et J. Cadieux
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.
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=[-1 4 ; 0 -2];
B=[2;3];
C=[1 0];
D=0;
sys = ss(A,B,C,D)
a =
x1
x2
x1
-1
0
x2
4
-2
b =
x1
x2
u1
2
3
c =
y1
x1
1
x2
0
d =
y1
u1
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
0
4
-2
40
Y. Ariba et J. Cadieux
Icam - Toulouse
x1
0.1
0
x2
3
-0.5
b =
x1
x2
u1
0
1
c =
y1
x1
1
x2
1
d =
y1
u1
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
x1
-3
1
x2
-2
0
b =
x1
x2
u1
2
0
c =
y1
x1
0.5
x2
1
d =
y1
u1
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
>> 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);
zero(G)
damp(G)
dcgain(G)
pzmap(G)
ctrb(sys)
44
Y. Ariba et J. Cadieux
obsv(sys)
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).
>> 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
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 :
52
Y. Ariba et J. Cadieux
Icam - Toulouse
3.4 Exemple
Considrons un systme modlis par la fonction de transfert suivante :
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
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