Vous êtes sur la page 1sur 32

Introduction

MATLAB et S IMULINK

Un guide pour les lves


de lcole Nationale Suprieure
dIngenieurs Electriciens de Grenoble

Paolino Tona
Laboratoire dAutomatique de Grenoble
Ce document couvre les aspects principaux du logiciel MAT-
LAB et de son extension SIMULINK.

Il a t labor partir de lhomonyme guide prpar par


Hoang Le-Huy, Professeur lUniversit Laval, Quebec, Ca-
nada.

Par rapport au document du Prof. Le-Huy quon peut tlchar-


ger lURL

http://www.gel.ulaval.ca/~lehuy/intromatlab

ce guide propose une mise jour (version 5.3 de MATLAB et


3.0 de S IMULINK), des corrections et du nouveau matriel.

Plus particulirement, une annexe sur la C ONTROL S YSTEM


T OOLBOX a t ajoute. Pour la prparation de cette annexe,
le Tutorial for Control System Toolbox de Finn Haugen
(Telemark College, Porsgrunn, Norvge), sest avr trs utile.
Ce dernier document peut tre consult lURL :

http://www-pors.hit.no/~finnh/contoolb.html

Commentaires et suggestions sont les bienvenus ladresse


ml :

Paolino.Tona@lag.ensieg.inpg.fr

P.Tona - Introduction MATLAB et S IMULINK 2


Table des matires

Introduction MATLAB 2
Introduction MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Une session de travail MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Oprations mathmatiques 7
Nombres et oprations arithmtiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Vecteurs et matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Variables et fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Graphiques 12
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Graphiques 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Graphiques 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Impression et enregistrement de graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Nouvelles fonctionnalits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Programmation avec MATLAB 16


Communication avec lutilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Contrle de lexecution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Fichiers M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Programmation oriente-objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Introduction S IMULINK 19
Dmarrer S IMULINK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Construction dun diagramme S IMULINK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Simulation dun diagramme S IMULINK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

La C ONTROL S YSTEM T OOLBOX 23


Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Reprsentation des systmes linaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Outils danalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Outils de synthse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

1
Introduction MATLAB

Introduction MATLAB
MATLAB

est un logiciel de calcul matriciel syntaxe simple ;


peut tre considr comme un langage de programmation adapt pour les problmes scientifiques,
grce ses fonctions spcialises ;
est un interprteur, car ses instructions sont interprtes et excutes ligne par ligne ;
possde des bonnes capacits graphiques pour prsenter des rsultats ou pour crer des applica-
tions ;
peut tre intgr avec du code C ou F ORTRAN ;
fonctionne dans plusieurs environnements tels que UNIX/X-Windows, Windows, Macintosh.

Blockset
Blockset
Blockset
Blockset
Blockset
Fichiers MDL
S IMULINK

Fichiers MEX

Toolbox
Toolbox
Toolbox
Toolbox
Toolbox
M ATLAB Fichiers M

Fichiers P

Fentre
Graphique GUI
Fentre de
Commande
Fentre
Graphique

Fentre de Commande : dans cette fentre, lutilisateur donne les instructions et MATLAB retourne les
rsultats ;
Fentres Graphiques : MATLAB trace les graphiques dans ces fentres ;
Fichiers M : ce sont des programmes en langage MATLAB (crits par lutilisateur) ;
Fichiers P : version pr-interprte des fichiers M ;

2
UNE SESSION DE TRAVAIL MATLAB

Toolboxes : ( botes outils) ce sont des collections de fichiers M dvelopps pour des domaines dap-
plication spcifiques (S IGNAL P ROCESSING T OOLBOX, S YSTEM I DENTIFICATION T OOLBOX, C ONTROL
S YSTEM T OOLBOX, -S YNTHESIS AND A NALYSIS T OOLBOX, R OBUST C ONTROL T OOLBOX, O PTIMI -
ZATION T OOLBOX , N EURAL N ETWORK T OOLBOX, S PLINE T OOLBOX, S YMBOLIC M ATH T OOLBOX,
F UZZY L OGIC T OOLBOX, etc.) ;
Simulink : cest lextension graphique de MATLAB permettant de travailler avec des schma en blocs,
pour modliser et simuler des systmes ;
Blocksets : ce sont des collections de blocs S IMULINK dvelopps pour des domaines dapplication sp-
cifiques (DSP B LOCKSET, P OWER S YSTEM B LOCKSET, etc.)
Fichiers MDL : ce sont des fichiers reprsentant des modles S IMULINK ;
Fichier MEX : modules executables crs partir de sources en C ou F ORTRAN ;
GUI : interface graphique utilisateur pour crer des applications bases sur MATLAB ;
En MATLAB, il existe deux modes de fonctionnement :
mode interactif : MATLAB excute les instructions au fur et mesure quelles sont donnes par lutili-
sateur.
mode excutif : MATLAB excute ligne par ligne un programme en langage MATLAB crit dans un
fichier M (ou P), ou un fichier excutable MEX.

Une session de travail MATLAB


Dmarrer MATLAB
Pour activer la Fentre de Commande MATLAB
sous UNIX : dans une fentre cmdtool, taper matlab ;
sous W INDOWS : cliquer sur licne Matlab sur le bureau ou dans le groupe Matlab du menu Dmar-
rer/Programmes .
Dans la Fentre de Commande, linvit de commande permet de taper les instructions une ligne
la fois, chaque ligne etant excute immdiatement aprs la touche Entre (ou Return ). Les instructions
de contrle (for , while , if : : : else ), aussi bien que le dfinitions de matrices et vecteurs peuvent
prendre plusieurs lignes, avec une excution diffre. Une ligne peut contenir plusieurs instructions s-
pares par des virgules (, ).

Aide
Pour obtenir de laide sur un sujet, une instruction ou une fonction, on tape help suivi par le sujet,
linstruction ou la fonction dsire (en minuscule ! ! !).

Exemple

help log10
LOG10 Common (base 10) logarithm.
LOG10(X) is the base 10 logarithm of the elements of X.
Complex results are produced if X is not positive.
See also LOG, LOG2, EXP, LOGM.

P.Tona - Introduction MATLAB et S IMULINK 3


UNE SESSION DE TRAVAIL MATLAB

Dautres commandes utiles sont :

helpwin accder laide travers une fentre de navigation


helpdesk accder la documentation MATLAB
lookfor xyz chercher la chane de caractres xyz dans les descriptions des toutes les
fonctions disponibles
demo lancer les demos MATLAB

Commandes systme
pwd nom du rpertoire courant
cd changer de rpertoire
dir, ls contenu du rpertoire courant
mkdir crer un nouveau rpertoire
delete effacer un fichier
copyfile copier un fichier

Variables et espace de travail (Workspace)


En MATLAB il ny a pas dinstructions pour dclarer ou dimensionner une variable. Une nouvelle
variable est dfinie en donnant son nom et sa valeur numrique

ts=0.03
ts =
0.0300
C=[1 1 0 0]
C =
1 1 0 0

ou son expression mathmatique

ws=2*pi/ts
ws =
209.4395

Si la variable existe dj, MATLAB en change le contenu, et, si ncessaire, alloue plus de place en
mmoire

C = [1 2 3; 4 5 6; 7 8 9]
C =
1 2 3
4 5 6
7 8 9

Les variables ainsi dfinies sont stockes dans lespace de travail et peuvent tre utilises dans les
calculs subsquents.

P.Tona - Introduction MATLAB et S IMULINK 4


UNE SESSION DE TRAVAIL MATLAB

AFFICHAGE
Pour afficher la valeur dune variable il suffit de taper son nom
ts
ts =
0.0300

Le rsultat dune instruction est affich par dfaut. Si lon veut que linstruction soit excute sans
afficher de rsultat, il faut ajouter ; la fin de la ligne

ws=2*pi/ts;

CLASSES
Par la syntaxe introduite ci-dessus, MATLAB dfinit des variables qui appartiennent la classe dou-
ble array , cest dire des tableaux de rels qui peuvent correspondre des scalaires, des vecteurs ou
des matrices. Mise part cette classe fondamentale, il faut signaler quil existe dautres classes MATLAB
pr-dfinies. La plus importante est certainement char array , laquelle appartiennent les chanes de
caractres, dfinies en utilisant

hi = salut
hi =
salut

INFORMATION SUR LESPACE DE TRAVAIL


who affichage des variables dans lespace de travail
whos affichage dtaill des variables dans lespace de travail
Exemples

who
Your variables are:

C hi ts ws

whos
Name Size Bytes Class
C 3x3 72 double array
hi 1x5 10 char array
ts 1x1 8 double array
ws 1x1 8 double array
Grand total is 16 elements using 98 bytes

EFFACER DES VARIABLES DE LESPACE DE TRAVAIL


clear var1 var2 effacer les variables var1 et var2
clear (all) effacer toutes les variables

P.Tona - Introduction MATLAB et S IMULINK 5


UNE SESSION DE TRAVAIL MATLAB

ENREGISTRER DES VARIABLES DANS UN FICHIER


Pour enregistrer les variables de lespace de travail dans un fichier, on utilise les instructions suivantes :

save enregistrer toutes les variables dans un fichier matlab.mat


load ramne les variables enregistres dans le fichier matlab.mat
dans lespace de travail
save fichier1.mat x Y z enregistrer les variables x, Y, z dans un fichier fichier1.mat
load fichier1 ramne les variables enregistres dans le fichier fichier1.mat
dans lespace de travail

Clore une session de travail


Pour clore une session de travail, taper quit.

P.Tona - Introduction MATLAB et S IMULINK 6


Oprations mathmatiques

Nombres et oprations arithmtiques


Nombres
Les nombres rels peuvent tre sous diffrents formats :
5 1.0237 0.5245E-12 12.78e6 0.001234 -235.087
Les nombres complexes peuvent tre crits sous forme cartsienne ou polaire :
forme cartsienne 0.5 + i*2.7 -1.2 + j*0.789 2.5 + 9.7i
forme polaire 1.25*exp(j*0.246)

Formats daffichage
Pour choisir le format daffichage pour les nombres, on utilise linstruction format :
format short 0.1234 (format par dfaut)
format long 0.12345678901234
format short e 1.2341E+002
format long e 0.123456789012345E+002
format hex ABCDEF0123456789

Oprations arithmtiques
+ Addition
- Soustraction
* Multiplication
/ Division droite
n Division gauche
Puissance
En demandant laide sur lun de ces oprateurs
help +
ou
help /
on obtient la liste de tous les oprateurs (arithmtiques et non) disponibles.

Vecteurs et matrices
Vecteurs
On peut dfinir un vecteur x en donnant la liste de ses lments :

7
VECTEURS ET MATRICES

x=[3 0.15 -1.5 2.42 -0.42]


x =
3.0000 0.1500 -1.5000 2.4200 -0.4200

ou en donnant la suite qui forme le vecteur :


x=1:0.5:3
x =
1.0000 1.5000 2.0000 2.5000 3.0000

ou en utilisant une fonction qui gnre un vecteur espacement linaire :


x=linspace(1,10,6)
x =
1.0000 2.8000 4.6000 6.4000 8.2000 10.0000

ou exponentiel :
x=logspace(0,2,7)
x =
1.0000 2.1544 4.6416 10.0000 21.5443 46.4159 100.0000

Matrices
On dfinit une matrice A en donnant ses lments :
A=[0.3 2.7 4.1;3.1 -0.74 2.1;6.7 -4.3 -2.1]
A =
0.3000 2.7000 4.1000
3.1000 -0.7400 2.1000
6.7000 -4.3000 -2.1000

Matrice unitaire :
B=eye(4)
B =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

Emploi des indices


Les lments dun vecteur ou dune matrice peuvent tre adresss en utilisant les indices sous la forme
suivante :

t(10) lment no 10 du vecteur t


A(2,9) lment se trouvant ligne 2, colonne 9 de la matrice A
B(:,7) la colonne 7 de la matrice B
C(3,:) la ligne 3 de la matrice B

P.Tona - Introduction MATLAB et S IMULINK 8


VECTEURS ET MATRICES

Oprations matricielles
Les oprations matricielles excutes par MATLAB sont illustres dans le tableau suivant :

B = A la matrice B est gale la matrice A transpose


E = inv(A) la matrice E est gale la matrice A inverse
D = A-B soustraction
Z = X*Y multiplication
X = A\B Ax = B
rsout le systme dquations
X = A/B quivaut (B/A)(help slash pour plus de details)

Oprations "lment par lment"


Les oprations lment par lment des vecteurs et des matrices sont effectues en ajoutant un
point (.) avant les oprations * \ /
Exemple.
A=[1 2 3 4 5];
B=[6 7 8 9 10];
C=A.*B;
C =
6 14 24 36 50
D=A./B;
D =
0.1667 0.2857 0.3750 0.4444 0.5000

Effacer des lignes et des colonnes


t=[] crer un tableaux vide
X(:,2)=[] effacer la deuxime colonne de X
Y(3,:)=[] effacer la troisime ligne de Y

Concatnation
Loprateur [ : : : ] permet denchaner des matrices ou des vecteurs entre eux pour former des ma-
trices ou des vecteurs plus grands

A = ones(2)
A =
1 1
1 1
B = zeros(2)
B =
0 0
0 0
C = [A B]
C =
1 1 0 0
1 1 0 0
D = [A ; B]
D =

P.Tona - Introduction MATLAB et S IMULINK 9


VARIABLES ET FONCTIONS

1 1
1 1
0 0
0 0

Il agit aussi sur des chanes de caractres

poli = merci;
tres_poli = [poli beaucoup];
tres_poli =
merci beaucoup

Polynmes
MATLAB ne fournit pas de types ou classes pr-dfinis pour reprsenter directement des polynmes.
Si lon utilise un vecteur P contenant les coefficients du polynme (en ordre dcroissant), les fonctions
suivantes sont disponibles

roots(P) racines de P ;
polyval(P,x) valuation de P en x ;
conv(P1,P2) multiplication polynomiale
deconv(P1,P2) division polynomiale
Si R est un vecteur contenant les racines dun polynme P , la fonction poly(R) reconstruit les coeffi-
cients du polynme. Si A est une matrice, poly(A) calcule son polynme caracteristique.

Variables et fonctions
Variables
On dfinit une variable en donnant son nom et sa valeur numrique ou son expression mathmatique :

a = 1.25;
x = 0:0.5:10;
y = a*x;
z = y.^2;

Expressions mathmatiques
On crit les expressions mathmatiques de la faon habituelle :

z = 5*exp(-0.4*x).*sin(7.5*y);

Fonctions mathmatiques
Les fonctions mathmatiques de base sont donnes dans le tableau suivant :

P.Tona - Introduction MATLAB et S IMULINK 10


VARIABLES ET FONCTIONS

abs angle sqrt real imag


valeur absolue argument racine carre partie relle partie imaginaire
module (nb. complexe) (nb. complexe)
conj round fix floor ceil
conjugue (nb. complexe) arrondir arrondir (vers zro) arrondir (vers 1) arrondir (vers +1)
sign rem exp log log10
signe reste exponentielle logarithme base e logarithme base 10

Les fonctions trigonomtriques sont donnes dans le tableau suivant :

sin cos tan asin acos atan atan2


sinh cosh tanh asinh acosh atanh

Exemple

x=-2+5i
x =
-2.0000 + 5.0000i
a=real(x);
a =
-2
b=imag(x);
b =
5
m=abs(x);
m =
5.3852
alpha=angle(x);
alpha =
1.9513

Exemple

w=50;
t=0.5e-3;
y=25*exp(-4*t)*cos(w*t)
y =
24.9423

Cration de fonctions
Lutilisateur peut crer des fonctions particulires pour ses applications. Voir la partie Programma-
tion avec MATLAB .

P.Tona - Introduction MATLAB et S IMULINK 11


Graphiques

Introduction
Sil ny a pas de fentres graphiques actives, appeler une fonction graphique suffit pour en ouvrir
une. Les instructions graphiques suivantes continueront agir sur la mme fentre moins den ouvrir
dautres (fonction figure).

Les fonctions graphiques disponibles peuvent safficher en demandant laide sur graph2D , graph3D et
specgraph (graphiques et fonctions spcialiss).

Graphiques 2D
Trac de courbes
On utilise linstruction plot pour tracer un graphique 2D :

plot(x,y) y
tracer le vecteur en fonction du vecteur x
() () ()
plot(t,x,t,y,t,z) tracer x t , y t et z t sur le mme graphique
plot(t,x,r:) ()
tracer x t en trait pointill rouge
Taper help plot pour explorer toutes les possibilits de cette commande.

Format du graphique
On peut choisir le format du graphique :

plot(x,y) ()
tracer y x avec chelles linaires
semilogx(f,A) ()
tracer A f avec chelle log f ()
semilogy(w,B) ( )
tracer B w avec chelle log B ( )
polar(theta,r) ( )
tracer r theta en coordonnes polaires
bar(x,y) ()
tracer y x sous forme de barres

Ajout de texte au graphique


title(Titre du graphique) donner un titre au graphique
xlabel(Temps) tiquette de laxe x
ylabel(Amplitude) tiquette de laxe x
gtext(Valeur absolue) ajouter du texte au graphique avec la souris
legend(sortie relle,sortie simule) ajouter une lgende

12
GRAPHIQUES 2D

Manipulation de graphiques et de fentres


grid, grid on, grid off ajouter une grille
axis([-1 5 -10 10]) choix des chelles x = ( 1 5)
; et y ; = ( 10 10)
hold, hold on, hold off garder le graphique sur lcran (pour tracer plusieurs courbes sur le
mme graphique)
figure ouvre une nouvelle fentre graphique
close all ferme toutes les fentres graphiques

Un exemple complet
Fonctions sinusoidales amorties
10

t=0:0.01e-3:0.06; 8
y=10*exp(-60*t).*cos(120*pi*t);
6
z=10*exp(-60*t).*sin(120*pi*t);
4
plot(t,y,r,t,z,g),grid
2
a=10*exp(-60*t);

Tension , V
hold 0

Current plot held 2

plot(t,a,b-) 4

plot(t,-a,b-) 6

title(Fonctions sinusoidales amorties) 8

xlabel(Temps , s),ylabel(Tension , V) 10
0 0.01 0.02 0.03 0.04 0.05 0.06
Temps , s

hold off
2
plot(y,z),grid
z

axis equal 0

xlabel(y),ylabel(z)
2

6 4 2 0 2 4 6 8 10
y

Graphique multiple
On peut tracer plusieurs graphiques dans la mme fentre en utilisant linstruction subplot pour di-
viser la fentre en plusieurs parties (le tracs se feront en suite avec plot, semilogx, etc.) :

diviser la fentre en deux parties (2 x 1)

subplot(2,1,1)

subplot(2,1,2)

P.Tona - Introduction MATLAB et S IMULINK 13


GRAPHIQUES 3D

diviser la fentre en deux parties (1 x 2)

subplot(1,2,1) subplot(1,2,2)

diviser la fentre en quatre parties (2 x 2)

subplot(2,2,1) subplot(2,2,2)

subplot(2,2,3) subplot(2,2,4)

diviser la fentre en quatre parties (4 x 1)

subplot(4,1,1)

subplot(4,1,2)

subplot(4,1,3)

subplot(4,1,4)

Exemple
20

w=logspace(0,3,1000);
Amplitude , dB

20

s=j*w; 40

H=225./(s.*s+3*s+225); 60

AdB=20*log10(abs(H)); 80
10
0 1
10
2
10
3
10

phase=angle(H)*(180/pi); w , rad/s

0
subplot(2,1,1),semilogx(w,AdB),grid
xlabel(w , rad/s),ylabel(Amplitude , dB) 50
Phase ,

subplot(2,1,2),semilogx(w,phase),grid 100

xlabel(w , rad/s),ylabel(Phase , ) 150

200
0 1 2 3
10 10 10 10
w , rad/s

Graphiques 3D
Les deux exemples suivants montrent comment tracer des graphiques 3D.

P.Tona - Introduction MATLAB et S IMULINK 14


IMPRESSION ET ENREGISTREMENT DE GRAPHIQUES

25

t = 0:0.05:25; 20

x = exp(-0.05*t).*cos(t); 15

temps
y = exp(-0.05*t).*sin(t); 10

z = t;
5
plot3(x,y,z), grid
0
zlabel(temps) 1

0.5 1
0.5
0
0
0.5
0.5
1 1

b=1200*pi;
dt=50e-6;
1
for j=1:15
for i=1:150 0.5

k(j)=j;
0
a=(16-j)*50;
t(i)=(i-1)*dt; 0.5

y(i,j)=exp(-a*t(i)).*sin(b*t(i));
1
end 15

end 10
6
8

[K,T]=meshgrid(k,t); 5
2
4
3
x 10

mesh(T,K,y) 0 0

Impression et enregistrement de graphiques


Limpression de graphiques se fait normalement partir des menus de la fentre graphique. Plusieurs
possibilits sont offertes en terme de positionnement de la fentre dans la feuille.

Limpression peut aussi se faire par la fonction print , en passant par lun des pilotes dimprimante
disponibles. Toutefois, cette fonction est principalement utilise pour enregistrer le contenu dune fe-
ntres dans un fichier graphique. Par exemple, print -deps enregistre en format Encapsulated PostScript.

Nouvelles fonctionnalits
Lenvironnement propedit permet de changer les proprits dun graphique. Dans la version 5.3 la
plupart de ces proprits sont directement accessibles partir de la fentre graphique. Donc, pratiquement
toutes les manipulations faites par ligne de commande sont disponibles dans les menus, avec davantage
de possibilits. Malheureusement, cet environnement est lheure actuelle un peu fragile (= bogues fr-
quents).

P.Tona - Introduction MATLAB et S IMULINK 15


Programmation avec MATLAB

Communication avec lutilisateur


On peut afficher un message, une valeur lcran avec disp :

disp(Ceci est un test) afficher "Ceci est un test" sur lcran

On peut saisir une valeur avec input :

x = input(Valeur de x = ) afficher sur lcran "Valeur de x = "


en attendant quun nombre soit tap

Contrle de lexecution
Boucle FOR
On peut crer une boucle, ou des boucles imbriques en utilisant for : : : end.

Exemple
boucle FOR simple :
for i=1:100
wt=24*i*0.01;
x(i)=12.5*cos(wt+pi/6);
end

boucles imbriques :
for i=1:5 for j=1:20
amp=i*1.2;
wt=j*0.05;
v(i,j)=amp*sin(wt);
end
end

Des increment ngatifs (for i=5:-1:1 : : : end) ou non entiers (for i=1:0.2:4 : : : end) sont
aussi possibles.

Boucle WHILE
On peut crer une boucle en utilisant while : : : end .

16
FICHIERS M

n=1;
while n<100
x=n*0.05
y(n)=5.75*cos(x);
z(n)=-3.4*sin(x);
n=n+1;
end

Excution conditionnelle
Les instructions if : : : end , if : : : else : : : end , if : : : elseif : : : else : : : end ,
switch : : : case : : : case : : : end permettent de choisir entre plusieurs options.

Exemple

n=input(Donner un nombre positif: );


if rem(n,3)==0
disp(Ce nombre est divisible par 3)
elseif rem(n,5)==0
disp(Ce nombre est divisible par 5)
else
disp(Ce nombre nest pas divisible par 3 ou par 5)
end

Fichiers M
Les fichiers M sont des fichiers ASCII (pur texte) contenant des suites dinstructions MATLAB et
ayant extension .m , par exemple test1.m . Si lon tape test1 , les instructions contenues dans le fichier
test1.m seront excutes une par une. Pour crer des fichiers M on peut utiliser nimporte quel diteur
de texte, ou bien lditeur MATLAB intgr (commande edit ).
Exemple

% ceci est un exemple de fichier M


% les lignes de commentaire commencent par "%"
for i=1:10 for j=1:4
x=0.005*i;
x=30+j;
z(i,j)=10*exp(y*x)*cos(120*pi*x);
end
end

Cration de fonctions MATLAB


Des nouvelles fonctions peuvent tre ajoute aux fonctions MATLAB prexistantes. Une nouvelle
fonction nest autre quun fichier M particulier dont la premire ligne contient la dfinition syntaxique de
la fonction, travers le mot cl function :

function y = mafonct1(x) fonction qui retourne y partir de x


function z = mafonct2(x,z) fonction qui retourne z partir de x et de y
function [y1,y2] = mafonct3(x1,x2) fonction qui retourne y1 et y2 partir de x1 et de x2

P.Tona - Introduction MATLAB et S IMULINK 17


PROGRAMMATION ORIENTE-OBJETS

Le nom de la fonction est dtermin par le nom du fichier .m qui la contient, et non pas par le nom
qui apparat dans la dfinition syntaxique. Dans tous les cas, viter, si possible, dutiliser deux noms dif-
frents, et, surtout, ne jamais utiliser un nom de fonction qui correspond une fonction dj existante (en
vrifier lexistence avec which nomfonct ).

Exemple

function y = eff(x)

% eff Calcul de la valeur efficace


% Pour un vecteur eff(x) donne la valeur efficace
% Pour une matrice, eff(x) donne un vecteur contenant
% la valeur efficace de chaque colonne.

m = length(x);
y=sqrt(sum(x.*x)/m);

Si la fonction est contenue dans un fichier eff.m on pourra lappeler par eff dans la ligne de com-
mande, dans un autre fichier M ou dans une autre fonction utilisateur :

v = [1; 2; 3];
val_effy = eff(v)
val_eff =
2.1602

Remarques

les commentaires dentte donns dans la fonction eff seront affichs lcran lorsquon tape help
eff ;
la fonction nest accessible que si le fichier qui la dfinit se trouve dans le repertoire courant ou dans
un repertoire inclus dans le path (help addpath ou help path pour plus de details).

Programmation oriente-objets
Pour le courageux, des fonctions telles que class , superiorto , inferiorto permettent dacc-
der un semblant de programmation oriente-objets. En tous cas, la programmation fonctionnelle suffit
largement pour rsoudre les problmes plus communs.

P.Tona - Introduction MATLAB et S IMULINK 18


Introduction S IMULINK

S IMULINK est lextension graphique de MATLAB permettant de reprsenter les fonctions mathma-
tiques et les systmes dynamiques sous forme de schmas en blocs.

Dmarrer S IMULINK
Dans la fentre Commande de MATLAB, taper simulink . La fentre contenant la bibliothque S IMU -
LINKva souvrir.

( bibliothque Windows bibliothque UNIX (et vielles versions)

Bien que linterface de la bibliothque ne soit pas homogne entre diffrentes versions et diffrentes
machine, le concept de base est le mme : la bibliothque contient des collections de blocs simples quon
peut connecter pour former des diagrammes.

Collections de blocs
Dans la version 3.0 de SIMULINK les principaux blocs sont organiss comme suit

COLLECTION CONTENU BLOCS LES PLUS UTILISS


gnrateurs de signaux, horloges, charge-
Sources sources de signaux ment de donnes dun fichier ou du works-
pace
afficheurs de signaux, stockage de donnes
Sinks affichage, stockage
dans un fichier ou dans le workspace
intgrateur, fonction de transfert, reprsen-
Continuous blocs continus
tation dtat, retards
intgrateur, fonction de transfert, reprsen-
Discrete blocs discrets
tation dtat, bloqueurs, filtres
fonctions trigonomtriques, signe, valeur
Math oprateurs mathmatiques
absolue, gains, somme, produit
expression gnrique, tableaux dinterpola-
Function & Tables fonctions, interpolation
tion, fonction MATLAB, S-fonctions

19
CONSTRUCTION DUN DIAGRAMME SIMULINK

COLLECTION CONTENU BLOCS LES PLUS UTILISS


frottements, jeux, saturations, commuta-
Nonlinear blocs non-linaires
teurs
sous-systme, porte dentre et de sortie
pour un modle ou un sous-systme, signal
vectoriel!signaux scalaires (demux) et vice
Signals & Systems portes, connections
versa (mux)

Dautres blocs utiles se trouvent dans les collections des diffrentes toolbox.

Construction dun diagramme S IMULINK


Les tapes de base sont les suivantes

pour commencer, dans le menu File , slectionner New Model (pour la version 3.0 sur Windows,
cliquer sur lcne feuille blanche ) : une fentre de travail Untitled souvrira ;
choisir les blocs dont on a besoin pour construire le diagramme dans les collections de la biblio-
thque, et les faire glisser un par un dans la fentre de travail,
faire des liaisons entre les blocs laide de la souris ;
cliquer sur les blocs dont on veut changer les paramtres : une fentre de dialogue souvrira pour
permettre cette opration ;
sauvegarder le schma ainsi obtenu dans un fichier *.mdl.

Un exemple trs simple

P position
rfrence Kp u
V

Satellite
1
P

Kv Scope
1 1
1 M 2
s s
u V
masse

Dhabitude, on commence par mettre ensemble des sous-systmes plus simples. Ces sous-systmes
doivent avoir des portes dentre (bloc In ) et de sortie (bloc Out ), pour relier les sous-systmes au schma
principal. On cre des sous-systmes par lentre Create subsystem du menu Edit , aprs avoir cadr
les blocs quon veut regrouper laide de la souris. Une deuxime faon consiste copier un groupe de
blocs lintrieur dun bloc Subsystem dans la fentre du schma principal.

Dans le schma principal, il faut se poser la question de comment grer le passage des donnes de et
vers lespace de travail. Plusieurs solutions soffrent : on peut utiliser des blocs des collections Sources et
Sinks ou bien encore des portes dentre-sortie.

P.Tona - Introduction MATLAB et S IMULINK 20


SIMULATION DUN DIAGRAMME SIMULINK

Simulation dun diagramme S IMULINK


Une fois le modle compos, il faut ajuster les paramtres de la simulation dans le menu Simulation
Parameters .

Paramtres du solveur
Pour faire des premiers essais on peut se contenter des paramtres proposs par dfaut, en choisissant
juste la dure dsire de la simulation. Cependant, ce menu a une influence norme sur la qualit de la
simulation pour des systmes peine compliqus et il faut apprendre bien sen servir.

DBUT DE LA SIMULATION FIN DE LA SIMULATION

PAS VARIABLE/PAS FIXE


ALGORITHME
DINTEGRATION

PAS DE CALCUL MAXIMUM ERREUR RELATIVE

PAS DE CALCUL INITIAL


ERREUR ABSOLUE

FACTEUR DE RAFFI-
NAGE (nombre de points
RGLAGE FIN DU supplmentaires)
NOMBRE DE VALEURS
A CALCULER

Paramtres dentre-sortie par rapport lespace de travail


Par dfaut, le vecteur de temps de la simulation, quon utilise dans la plupart des graphiques, est
enregistr dans la variable tout , qui sera disponible dans lespace de travail. On peut aussi utiliser ce
menu pour dfinir les entres du modle et pour en enregistrer les sorties, si on sest servi de portes
dentrs-sortie dans le schma principal.

VARIABLES SAUVEGARDES
DANS LESPACE DE TRAVAIL

LONGUEUR MAXIMALE
DES VECTEURS

FACTEUR DLIMINA-
TION DE POINTS
VARIABLES CHARGES
DE LESPACE DE TRAVAIL

FORMAT DE SAUVEGARDE

P.Tona - Introduction MATLAB et S IMULINK 21


SIMULATION DUN DIAGRAMME SIMULINK

Paramtres du diagnostic
Cette fentre permet de rgler le diagnostic pour la simulation et fournit aussi des mcanismes pour
dboguer le schma.

VNEMENTS DTECTS

MESSAGE DCLENCHE
PAR LA DETECTION

POUR DBOGUER

Initialisation dun modle


Dans les schmas il est souvent prfrable de rentrer des noms de variables, plutt que des valeurs
numriques. Pour que la simulation puisse avoir lieu, il faut que ces paramtres soit prsents dans lespace
de travail. Normalement, on crit les paramtres du systme dans un fichier M dinitialisation, quil suffit
dappeler une fois par session de travail ( moins de vouloir changer les paramtres, videmment).

P.Tona - Introduction MATLAB et S IMULINK 22


La C ONTROL S YSTEM T OOLBOX

Introduction
La C ONTROL S YSTEM T OOLBOX (CST) est la bote outils MATLAB ddie lAutomatique de
base. Elle fournit un support pour

crer et manipuler des modles linaires de systmes ;


analyser ces modles avec les outils classiques de lAutomatique ;
synthtiser des rgulateurs.

La liste complte des fonctions de cette toolbox sobtient en tapant help control .

Reprsentation des systmes linaires


Dans la Control System Toolbox, les systmes linaires ( paramtres constants dans le temps) sont
reprsents par des objets 1 appartenant la classe LTI (comme Linear Time-Invariant).

Trois diffrentes reprsentations des systmes sont disponibles, travers trois sous-classes de LTI :

la classe tf correspond des systmes sous forme de fonctions de transfert, comme

2
5 s 1
3
s+2 2s ; 0:7869z
1 0:4773z 2 6 s+1 s+2 7
s2 + 3s + 1
e
1 1:213z 1 + 0:3679z 2 ; 4 1 2 5

s+3 s+2
la classe ss correspond des systmes sous forme de variables dtat, comme

x_ 1 1 1 0 x1  =  0:5 0   x1  +  0 1   u1
8        8  
x1
>
>
<
x_ 2
= 0 2 x2 + 2 u >
>
<
x 0   0:8  x2 2 1 u2
;  2 
= 11 10 xx12
  
  x1 y1
>
>
: y = 1 1 >
>
:
x2 y2
la classe zpk , moins utilise que les autres, correspond des systmes sous la forme zros-ples-gain,
comme

2
(s + 3)(s + 5) 3

100 s((ss +1)( s + 2)


1)(s + 3) ;

5 1  64 (s 1)(s + 1)
s+2
7
5

(s 1)(s + 1)
1
La plupart des fonctions de la CST peuvent sappliquer des vecteurs et des matrices sans passer forcment par les objets
LTI, comme dans les anciennes versions de cette toolbox (utiliser help pour plus de details)

23
REPRSENTATION DES SYSTMES LINAIRES

Une classe ultrieure (FRD ) a t mise disposition dans la version 5.3 pour reprsenter des rponses
en frquence, qui peuvent aussi provenir de donnes exprimentales.

Fonctions de transfert (classe tf )


Les fonctions de transfert se crent laide de la fonction tf . Les premirs deux paramtres de
tf sont des vecteurs MATLAB contenant respectivement les coefficients du numrateurs et les coeffi-
cients du dnominateur, tandis que les paramtres suivants (facultatifs) spcifient des proprits ult-
rieures de la fonction de transfert :

tf(num,den) crer une f.d.t. continue num


den ;
tf(num,den,Td,tr) crer une f.d.t. continue avec retard tr ;
tf(num,den,te) crer une f.d.t. en z avec priode dchantillonnage te ;
tf(num,den,te,Variable,z^-1) crer une f.d.t. en z 1

Exemples

nc = [1 1];
dc = [1 2 1];
Gc = tf(nc,dc)
Transfer function:
s + 1
-------------
s^2 + 2 s + 1

nd = [1 0.985];
dd = = conv([1 -1],[1 -0.999]);
ts = 0.03;
Gd = tf(nd,dd,ts)
Transfer function:
z + 0.985
---------------------
z^2 - 1.999z + 0.999
Sampling time: 0.03

La fonction conv(a,b) utilise ci-dessus permet dobtenir la multiplication polynomiale entre les po-
lynmes dont les coefficients sont dfinis par les vecteurs a et b .

La fonction tfdata permet de rcuprer (entre autres) le numrateur et le dnominateur dune fonc-
tion de transfert :

[num,den]=tfdata(fdt,v) extraire le numrateur et le dnominateur ;


[num,den,te]=tfdata(fdt,v) extraire aussi la priode dchantillonnage ;
[num,den,te,retard]=tfdata(fdt,v) extraire encore le retard.

Exemple

[num,den,ts]=tfdata(Gd,v);
num =
0 1.0000 0.9850

P.Tona - Introduction MATLAB et S IMULINK 24


REPRSENTATION DES SYSTMES LINAIRES

den =
1.0000 -1.9990 0.9990

ts =
0.03

Forme zros-ples-gain (classe zpk )


La forme zros-ples-gain est une reprsentation alternative la fonction de transfert num
den . On cre des
systmes dans cette forme laide de la fonction zpk , qui prend en paramtres deux vecteurs contenant
respectivement les zros et les ples, plus un scalaire qui indique un gain

zeros=[];
poles=[-1,-2];
gain=-10;
G_zpk=zpk(zeros,poles,gain)
Zero/pole/gain:
-10
------------
(s+1) (s+2)

La fonction zpkdata a un rle analogue celui de tfdata , considre prcdemment.

Reprsentation dtat (classe ss )


Les systmes en variables dtat se crent laide de la fonction ss , en spcifiant les quatre matrices
(ou vecteurs) de la reprsentation x_ = Ax + Bu y = Cx + Du
; :

ss(A,B,C,D) crer un systme continu en variables dtat ;


ss(A,B,C,D,te) crer un systme discret avec priode dchantillonnage te .

Exemple

A=[0,1;-4,-4];B=[0;2];C=[1,0];D=0;
syst_ss=ss(A,B,C,D);
a =
x1 x2
x1 0 1
x2 -4 -2
b =
u1
x1 0
x2 2
c =
x1 x2
y1 1 0
a =
u1
y1 0
Continuous-time system.

P.Tona - Introduction MATLAB et S IMULINK 25


REPRSENTATION DES SYSTMES LINAIRES

On peut extraire le quadrupl A; B; C; D dun objet ss par la fonction ssdata


[A1,B1,C1,D1]=ssdata(syst_ss)
A1 =
0 1
-4 -4

B1 =
0
2

C1 =
1 0

D1 =
0

[A,B,C,D,te]=ssdatarcupre aussi la priode dchantillonnage ( = 0 pour un systme continu).


Passage dune reprsentation lautre
Soit syst un objet LTI appartenant lune des trois classes, introduites ci-dessus. Alors :
ss(syst) met le systme syst en reprsentation dtat ;
tf(syst) met le systme syst sous forme de fonction de transfert ;
zpk(syst) met le systme syst sous forme zros-ples-gain.

Exemple

syst_tf = tf(syst_ss);
Transfer function:
2
-------------
s^2 + 4 s + 4
syst_zpk = zpk(syst_tf);
Zero/pole/gain:
2
-------
(s+2)^2

Les fonctions tfdata , zpkdata , ssdata peuvent en fait sappliquer nimporte quel objet LTI, car
elles se chargent aussi de la conversion de reprsentation.

Conversion continu )discret


Un modle LTI se discrtise au moyen de la fonction c2d , avec la syntaxe
syst_disc = c2d(syst_cont, te, methode) ,
o te est la priode dchantillonnage et methode est la mthode de discrtisation utiliser : blo-
queur dordre 0 (zoh), bloqueur dordre 1 (foh), transformation bi-linaire de Tustin (tustin),
etc. Si lon ne spcifie pas de mthode, le bloqueur dordre 0 est utilis.

P.Tona - Introduction MATLAB et S IMULINK 26


REPRSENTATION DES SYSTMES LINAIRES

syst_tf_z=c2d(syst_tf,0.1)
Transfer function:
0.008762 z + 0.007668
---------------------
z^2 - 1.637 z + 0.6703
Sampling time: 0.1

Manipulation de schmas en blocs


Les systmes LTI peuvent sinterconnecter pour former des systmes plus grands

S YST 1 +
+ S YST 1
S YST 1 S YST 2 +
S YST 2 S YST 2

Syst2Syst1
series(Syst1,Syst2) Syst2+Syst1 feedback(Syst1,Syst2)
parallel(Syst1,Syst2)

Les fonctions series , parallel , feedback possdent des options pour obtenir des systmes plus
complexes (help sur les noms de ces fonctions pour plus de dtails). Toutefois, partir dun certain degr
de complexit il faut prendre en considration loption de dessiner les blocs dans un schma S IMULINK.
TRUC : la fonction linmod , conue pour linariser un modle (non linaire) S IMULINK, peut tre aussi
utilise pour rcuprer la reprsentation dtat globale dun ensemble de blocs linaires connects.

Proprits des modles LTI


Pour une utilisation plus avance il peut tre utile de connatre les proprits les plus importantes que
les objets MATLAB reprsentant des modles LTI possdent

PROPRITS COMMUNES TOUS LES OBJETS LTI


Ts Td InputName OutputName Notes Userdata
priode dch. retard(s) noms des entres noms des sorties notes perso autres donnes/info

PROPRITS TF PROPRITS ZPK PROPRITS SS


num den z p k a b c d
numrateur dnominateur zros ples gain matrice A matrice B matrice C matrice D
Variable StateName
nom de la variable (s , z ,z^-1 , etc.) noms des variables dtat
On peut lire ou modifier ces proprits trs facilement. Soit syst un objet TF discret :

syst.Ts=nouveauTe change la priode dchantillonnage (sans changer les coefficients) ;


n=syst.num{1} rcupre le numrateur sous forme de vecteur ;
syst.num=nouveauNum change le numrateur ;

P.Tona - Introduction MATLAB et S IMULINK 27


OUTILS DANALYSE

Dune faon analogue

zeros=syst.z{1} rcupre les zros sous forme de vecteur ;


A=syst.a A
rcupre la matrice ;

Une partie des proprits na pas de signification mathmatique, mais sert mieux documenter le
modle

G.InputName=tension (V);G.OutputName=vitesse (rad/s)


Transfer function from input "tension (V)" to output "vitesse (rad/s)":
1
-------
s^2 + s

Outils danalyse
Les fonctions mentionnes dans la suite sont applicables indiffremment des objets tf , zpk et ss .
Vue la flexibilit de ces fonctions, lutilisation de laide est chaleureusement recommande, pour en ex-
plorer toutes les possibilits.

Analyse temporelle
La fonction step permet de tracer la rponse indicielle dun systme

step(syst) tracer la rponse indicielle, intervalle de temps et nombre de points


choisis par MATLAB ;
step(syst,tfin) tfin scalaire dtermine le temps final (continu) ou le nombre total
dchantillons (discret) ;
step(syst,T) T vecteur de temps fourni par lutilisateur ;
step(syst1,syst2,...) T tracer les rponses indicielles superposes de plusieurs systmes ;
[y,t]=step(syst,...) stocke la rponse indicielle sans la tracer.

Exemple

T=0:0.1:10;
step(syst_tf,T)

La rponse impulsionnelle sobtient par la fonction impulse , dont la syntaxe est identique step .
Pour la rponse initiale dun systme en variables dtats on utilise la fonction initial(sys,x0) avec
des options similaires celles vue pour les fonctions ci-dessus.

Pour obtenir des rponses des signaux dentres plus complexe on a deux choix :

utiliser la fonction lsim avec un signal gnr par gensig , square ou sawtooth ;
utiliser SIMULINK et le blockset LTI.

P.Tona - Introduction MATLAB et S IMULINK 28


OUTILS DANALYSE

Ples, zros, valeurs propres, . . .


[vp]=eig(syst) calculer les valeurs propres de syst ;
p=pole(syst) calculer des ples de syst ;
z=tzero(syst) calculer les zros (de transmission, pour un systme multi-variable) de syst ;
[p,z]=pzmap(syst) calculer les ples et les zros de syst ;
[w,csi]=damp(syst) calculer pulsation naturelle et amortissement des ples de syst ;
gs=dcgain(syst) calculer le gain statique de syst .

En tapant pzmap(syst)tout court, les ples et le zros du systme sont tracs sur le plan s ou z . Des
grilles correspondantes des frquences et des amortissements constants peuvent tre tracs laide de
sgrid et zgrid , respectivement.

Analyse frquentielle
La fonction bode permet de tracer le diagramme de Bode dun systme

bode(syst) tracer le diagramme de Bode, intervalle de frquences et nombre


de points choisis par MATLAB ;
bode(syst,wi,wf) tracer le diagramme de Bode entre les frquences wi et wf ;
bode(syst,W) tracer le diagramme de Bode avec un vecteur de frquences gnr
par lutilisateur (dhabitude avec logspace ) ;
bode(syst1,syst2,...) tracer les diagrammes de Bode indicielles superposs de plusieurs
systmes ;
[G,P,W]=bode(syst,...) stocke le diagramme de Bode (gain, phase et frquence) sans le
tracer.

Une syntaxe similaire est prvue pour les fonctions nyquist et nichols . La grille pour le diagramme
de Nichols se dessine avec ngrid .

Pour un systme stable, la fonction


[mg,mp,wmg,wmp]=margin(syst),
calcule le marge de gain et phase, aussi bien que les frquences qui leur sont associes.

Le LTIVIEWER
En tapant ltiview ou ltiview(syst) , on rentre dans un environnement graphique interactif
pour lanalyse des modles LTI, qui est trs performant, mis part des bogues et une tendance fcheuse
se planter, quon espre voir disparatre dans une prochaine version du logiciel.

Normes
norm(sys,2) norme H2
norm(sys,inf) norme H1

Analyse et manipulation des systmes en variables dtat


La plupart de fonctions suivantes nont du sens que si le systme considr est en forme dtat :

P.Tona - Introduction MATLAB et S IMULINK 29


OUTILS DE SYNTHSE

syst=ss2ss(syst,T) effectuer la transformation z = Tx x


sur le vecteur dtat de syst
systc=canon(syst,type) calculer la forme compagnon de syst (si type gal companion )
CO=ctrb(syst) calculer la matrice de commandabilit de syst
OB=obsv(syst) calculer la matrice dobservabilit de syst
asys=augstate(sys)) ajouter les tats de syst ses sorties.

Pour mieux comprendre (et contrler) ce que ces fonctions font, il est probablement plus raisonnable
de les utiliser sur les matrices et/ou les vecteurs de la reprsentation dtat, plutt que sur lobjet ss :

CO=ctrb(syst.A,syst.B) calculer la matrice de commandabilit


OB=obsv(syst.A,syst.C) calculer la matrice dobservabilit

Outils de synthse
Pour un systme mono-variable, il est possible de tracer le lieu de racines par la fonction rlocus(syst) .
La fonction rlocfind(syst) permet de dterminer le gain sur lieu de racines de faon interactive.
Un environnement graphique complet pour la synthse par cette mthode est accessible en tapant rl-
tool(syst) .

Le placement de ples en variables dtat sobtient par les fonctions acker et place , cette dernire
tant mieux conditionne et applicable aussi aux systmes multi-variables. Les deux fonctions sont ap-
pliquer des matrices et non pas des objets LTI.

L
La fonction estim(syst,L) permet de former un observateur partir dun gain , et la fonction
estim(syst,K,L) permet de crer un ensemble rgulateur-observateur partis des gains et . K L
Autres outils
Dautres outils de synthse sont disponibles :

pour la commande LQR (lqr, dlqr, lqry, lqrd ) ;


pour la commande LQG (kalman, kalmd, lqgreg ) ;
pour la rsolution dquations de Lyapounov (lyap, dlyap ) ;
pour la rsolution dquations de Riccati (care, dare ).

P.Tona - Introduction MATLAB et S IMULINK 30

Vous aimerez peut-être aussi