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 MATLAB et de son extension SIMULINK. Il a t labor partir de lhomonyme guide prpar par Hoang Le-Huy, Professeur lUniversit Laval, Quebec, Canada. Par rapport au document du Prof. Le-Huy quon peut tlcharger 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

Table des matires


Introduction MATLAB Introduction MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Une session de travail MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oprations mathmatiques Nombres et oprations arithmtiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vecteurs et matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variables et fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Graphiques Introduction . . . . . . . . . . . . . . . . . . . Graphiques 2D . . . . . . . . . . . . . . . . . . Graphiques 3D . . . . . . . . . . . . . . . . . . Impression et enregistrement de graphiques . Nouvelles fonctionnalits . . . . . . . . . . . Programmation avec MATLAB Communication avec lutilisateur Contrle de lexecution . . . . . . Fichiers M . . . . . . . . . . . . . Programmation oriente-objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 7 7 7 10 12 12 12 14 15 15 16 16 16 17 18 19 19 20 21 23 23 23 28 30

Introduction S IMULINK Dmarrer S IMULINK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Construction dun diagramme S IMULINK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simulation dun diagramme S IMULINK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La C ONTROL S YSTEM T OOLBOX Introduction . . . . . . . . . . . . . . . Reprsentation des systmes linaires Outils danalyse . . . . . . . . . . . . . Outils de synthse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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 scientiques, 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 applications ; 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 S IMULINK Fichiers MDL Fichiers MEX Toolbox Toolbox Toolbox Toolbox Toolbox M ATLAB Fichiers M Fichiers P Fentre Graphique 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 chiers M ; GUI

UNE SESSION DE TRAVAIL MATLAB


Toolboxes : ( botes outils) ce sont des collections de chiers M dvelopps pour des domaines dapplication spciques (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 spciques (DSP B LOCKSET, P OWER S YSTEM B LOCKSET, etc.) Fichiers MDL : ce sont des chiers 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 lutilisateur. mode excutif : MATLAB excute ligne par ligne un programme en langage MATLAB crit dans un chier M (ou P), ou un chier 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 Dmarrer/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 else ), aussi bien que le dnitions de matrices et vecteurs peuvent de contrle (for , while , if prendre plusieurs lignes, avec une excution diffre. Une ligne peut contenir plusieurs instructions spares 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

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 cd dir, ls mkdir delete copyfile nom du rpertoire courant changer de rpertoire contenu du rpertoire courant crer un nouveau rpertoire effacer un chier copier un chier

Variables et espace de travail (Workspace)


En MATLAB il ny a pas dinstructions pour dclarer ou dimensionner une variable. Une nouvelle variable est dnie 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 4 7 2 5 8 3 6 9

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

P.Tona - Introduction MATLAB et S IMULINK

UNE SESSION DE TRAVAIL MATLAB


AFFICHAGE Pour afcher la valeur dune variable il suft de taper son nom
ts ts = 0.0300

Le rsultat dune instruction est afch par dfaut. Si lon veut que linstruction soit excute sans afcher de rsultat, il faut ajouter ; la n de la ligne
ws=2*pi/ts;

CLASSES Par la syntaxe introduite ci-dessus, MATLAB dnit des variables qui appartiennent la classe double 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-dnies. La plus importante est certainement char array , laquelle appartiennent les chanes de caractres, dnies en utilisant
hi = salut hi = salut

INFORMATION SUR LESPACE DE TRAVAIL who afchage des variables dans lespace de travail whos afchage 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

UNE SESSION DE TRAVAIL MATLAB


ENREGISTRER DES VARIABLES DANS UN FICHIER Pour enregistrer les variables de lespace de travail dans un chier, on utilise les instructions suivantes : enregistrer toutes les variables dans un chier matlab.mat ramne les variables enregistres dans le chier matlab.mat dans lespace de travail save fichier1.mat x Y z enregistrer les variables x, Y, z dans un chier fichier1.mat load fichier1 ramne les variables enregistres dans le chier fichier1.mat dans lespace de travail save load

Clore une session de travail


Pour clore une session de travail, taper quit.

P.Tona - Introduction MATLAB et S IMULINK

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 forme polaire 1.25*exp(j*0.246) -1.2 + j*0.789 2.5 + 9.7i

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

Oprations arithmtiques
+ * / Addition Soustraction Multiplication Division droite Division gauche Puissance
help +

En demandant laide sur lun de ces oprateurs ou


help /

on obtient la liste de tous les oprateurs (arithmtiques et non) disponibles.

Vecteurs et matrices
Vecteurs
On peut dnir 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 dnit 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 3.1000 6.7000 2.7000 -0.7400 -4.3000 4.1000 2.1000 -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) A(2,9) B(:,7) C(3,:) lment no 10 du vecteur t lment se trouvant ligne 2, colonne 9 de la matrice A la colonne 7 de la matrice B la ligne 3 de la matrice B

P.Tona - Introduction MATLAB et S IMULINK

VECTEURS ET MATRICES

Oprations matricielles
Les oprations matricielles excutes par MATLAB sont illustres dans le tableau suivant : B E D Z X X = = = = = = A inv(A) A-B X*Y A\B A/B la matrice B est gale la matrice A transpose la matrice E est gale la matrice A inverse soustraction multiplication rsout le systme dquations 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 D=A./B; D = 0.1667 0.2857 0.3750 0.4444 0.5000 24 36 50

Effacer des lignes et des colonnes


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

Concatnation
Loprateur [ ] permet denchaner des matrices ou des vecteurs entre eux pour former des matrices ou des vecteurs plus grands
A = ones(2) A = 1 1 B = 0 0 C = 1 1 D = 1 1 0 0 0 0 0 0 1 1

B = zeros(2)

C = [A B]

D = [A ; B]

P.Tona - Introduction MATLAB et S IMULINK

VARIABLES ET FONCTIONS
1 1 0 0 1 1 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-dnis pour reprsenter directement des polynmes. Si lon utilise un vecteur P contenant les coefcients du polynme (en ordre dcroissant), les fonctions suivantes sont disponibles roots(P) polyval(P,x) conv(P1,P2) deconv(P1,P2) racines de ; valuation de en ; multiplication polynomiale division polynomiale

Si R est un vecteur contenant les racines dun polynme , la fonction poly(R) reconstruit les coefcients du polynme. Si A est une matrice, poly(A) calcule son polynme caracteristique.

Variables et fonctions
Variables
On dnit une variable en donnant son nom et sa valeur numrique ou son expression mathmatique : a x y z = = = = 1.25; 0:0.5:10; a*x; 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
valeur absolue module (nb. complexe)

angle
argument (nb. complexe)

sqrt
racine carre

real
partie relle arrondir (vers )

imag
partie imaginaire arrondir (vers )

conj
conjugue (nb. complexe)

round
arrondir

fix
arrondir (vers zro)

floor

ceil

sign
signe

rem
reste

exp
exponentielle

log
logarithme base

log10

logarithme base

Les fonctions trigonomtriques sont donnes dans le tableau suivant : sin sinh 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

cos cosh

tan tanh

asin asinh

acos acosh

atan atanh

atan2

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

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

P.Tona - Introduction MATLAB et S IMULINK

11

Graphiques
Introduction
Sil ny a pas de fentres graphiques actives, appeler une fonction graphique suft 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 safcher 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) tracer le vecteur en fonction du vecteur plot(t,x,t,y,t,z) tracer , et sur le mme graphique plot(t,x,r:) tracer 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) semilogx(f,A) semilogy(w,B) polar(theta,r) bar(x,y) tracer tracer tracer tracer tracer

avec chelles linaires avec chelle avec chelle en coordonnes polaires sous forme de barres
donner un titre au graphique tiquette de laxe tiquette de laxe ajouter du texte au graphique avec la souris ajouter une lgende

Ajout de texte au graphique


title(Titre du graphique) xlabel(Temps) ylabel(Amplitude) gtext(Valeur absolue) legend(sortie relle,sortie simule)

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 et 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; y=10*exp(-60*t).*cos(120*pi*t); z=10*exp(-60*t).*sin(120*pi*t); plot(t,y,r,t,z,g),grid a=10*exp(-60*t); hold Current plot held plot(t,a,b-) plot(t,-a,b-) title(Fonctions sinusoidales amorties) xlabel(Temps , s),ylabel(Tension , V)

2 Tension , V

10

0.01

0.02

0.03 Temps , s

0.04

0.05

0.06

hold off plot(y,z),grid axis equal xlabel(y),ylabel(z)

2 z 0 2 4 6 4 2 0 2 y 4 6 8 10

Graphique multiple
On peut tracer plusieurs graphiques dans la mme fentre en utilisant linstruction subplot pour diviser 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 0

w=logspace(0,3,1000); s=j*w; H=225./(s.*s+3*s+225); AdB=20*log10(abs(H)); phase=angle(H)*(180/pi); subplot(2,1,1),semilogx(w,AdB),grid xlabel(w , rad/s),ylabel(Amplitude , dB) subplot(2,1,2),semilogx(w,phase),grid xlabel(w , rad/s),ylabel(Phase , )

Amplitude , dB

20 40 60 80 0 10

10

10 w , rad/s

10

50 Phase ,

100

150

200 0 10

10

10 w , rad/s

10

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; x = exp(-0.05*t).*cos(t); y = exp(-0.05*t).*sin(t); z = t; plot3(x,y,z), grid zlabel(temps)

20

15 temps

10

0 1 0.5 0 0 0.5 1 1 0.5 0.5 1

b=1200*pi; dt=50e-6; for j=1:15 for i=1:150 k(j)=j; a=(16-j)*50; t(i)=(i-1)*dt; y(i,j)=exp(-a*t(i)).*sin(b*t(i)); end end [K,T]=meshgrid(k,t); mesh(T,K,y)

0.5

0.5

1 15 10 6 5 2 0 0 4 x 10
3

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 fentres dans un chier 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 frquents).

P.Tona - Introduction MATLAB et S IMULINK

15

Programmation avec MATLAB


Communication avec lutilisateur
On peut afcher un message, une valeur lcran avec disp : disp(Ceci est un test) afcher "Ceci est un test" sur lcran On peut saisir une valeur avec input : x = input(Valeur de x = ) afcher 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 Exemple boucle FOR simple :
for i=1:100 wt=24*i*0.01; x(i)=12.5*cos(wt+pi/6); end

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 aussi possibles.

end) ou non entiers (for i=1:0.2:4

end) sont

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 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

end ,

Fichiers M
Les chiers M sont des chiers 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 chier test1.m seront excutes une par une. Pour crer des chiers 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 chier M particulier dont la premire ligne contient la dnition 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 chier .m qui la contient, et non pas par le nom qui apparat dans la dnition syntaxique. Dans tous les cas, viter, si possible, dutiliser deux noms diffrents, et, surtout, ne jamais utiliser un nom de fonction qui correspond une fonction dj existante (en vrier 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 chier eff.m on pourra lappeler par eff dans la ligne de commande, dans un autre chier 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 afchs lcran lorsquon tape help eff ; la fonction nest accessible que si le chier qui la dnit 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 daccder un semblant de programmation oriente-objets. En tous cas, la programmation fonctionnelle suft 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 mathmatiques et les systmes dynamiques sous forme de schmas en blocs.

Dmarrer S IMULINK
LINK

Dans la fentre Commande de MATLAB, taper simulink . La fentre contenant la bibliothque S IMU va 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 Sources Sinks Continuous Discrete Math Function & Tables CONTENU sources de signaux afchage, stockage blocs continus blocs discrets oprateurs mathmatiques fonctions, interpolation 19 BLOCS LES PLUS UTILISS gnrateurs de signaux, horloges, chargement de donnes dun chier ou du workspace afcheurs de signaux, stockage de donnes dans un chier ou dans le workspace intgrateur, fonction de transfert, reprsentation dtat, retards intgrateur, fonction de transfert, reprsentation dtat, bloqueurs, ltres fonctions trigonomtriques, signe, valeur absolue, gains, somme, produit expression gnrique, tableaux dinterpolation, fonction MATLAB, S-fonctions

CONSTRUCTION DUN DIAGRAMME SIMULINK


COLLECTION Nonlinear CONTENU blocs non-linaires portes, connections BLOCS LES PLUS UTILISS frottements, jeux, saturations, commutateurs sous-systme, porte dentre et de sortie pour un modle ou un sous-systme, signal vectoriel signaux scalaires (demux) et vice versa (mux)

Signals & Systems

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 bibliothque, 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 chier *.mdl.

Un exemple trs simple


P

position

rfrence

Kp

u V

Satellite

1 P
Scope

Kv

1 u

M masse

1 s

1 s

2 V

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 inuence 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 ERREUR RELATIVE

PAS DE CALCUL MAXIMUM

PAS DE CALCUL INITIAL ERREUR ABSOLUE FACTEUR DE RAFFINAGE (nombre de points supplmentaires)

RGLAGE FIN DU 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 dnir 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 DLIMINATION 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 chier M dinitialisation, quil suft 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

la classe ss correspond des systmes sous forme de variables dtat, comme

la classe zpk , moins utilise que les autres, correspond des systmes sous la forme zros-ples-gain, comme

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 coefcients du numrateurs et les coefcients du dnominateur, tandis que les paramtres suivants (facultatifs) spcient des proprits ultrieures de la fonction de transfert : tf(num,den) tf(num,den,Td,tr) tf(num,den,te) tf(num,den,te,Variable,z^-1) Exemples
nc = [1 1]; dc = [1 2 1]; Gc = tf(nc,dc) Transfer function: s + 1 ------------s^2 + 2 s + 1

crer une f.d.t. continue ; crer une f.d.t. continue avec retard tr ; crer une f.d.t. en avec priode dchantillonnage te ; crer une f.d.t. en

nd dd ts Gd

= = = =

[1 0.985]; = conv([1 -1],[1 -0.999]); 0.03; 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 polynmes dont les coefcients sont dnis par les vecteurs a et b . La fonction tfdata permet de rcuprer (entre autres) le numrateur et le dnominateur dune fonction 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 ts = 0.03 -1.9990 0.9990

Forme zros-ples-gain (classe zpk )


La forme zros-ples-gain est une reprsentation alternative la fonction de transfert . 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 spciant les quatre matrices : (ou vecteurs) de la reprsentation

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 b = x1 x2 c = y1 a = y1 u1 0 x1 1 x2 0 u1 0 2 x1 0 -4 x2 1 -2

Continuous-time system.

P.Tona - Introduction MATLAB et S IMULINK

25

REPRSENTATION DES SYSTMES LINAIRES


On peut extraire le quadrupl
[A1,B1,C1,D1]=ssdata(syst_ss) A1 = 0 -4 B1 = 0 2 C1 = 1 D1 = 0 0 1 -4

dun objet ss par la fonction ssdata

[A,B,C,D,te]=ssdatarcupre aussi la priode dchantillonnage (

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 : bloqueur dordre 0 (zoh), bloqueur dordre 1 (foh), transformation bi-linaire de Tustin (tustin), etc. Si lon ne spcie 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 2 S YST 2 Syst2Syst1 series(Syst1,Syst2)

S YST 1

S YST 2

Syst2+Syst1 parallel(Syst1,Syst2)

feedback(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 Td InputName OutputName Notes retard(s) noms des entres noms des sorties notes perso

Ts priode dch.

Userdata autres donnes/info

PROPRITS TF PROPRITS ZPK num den z p k numrateur dnominateur zros ples gain Variable nom de la variable (s , z ,z^-1 , etc.)

PROPRITS SS a b c d matrice A matrice B matrice C matrice D StateName noms des variables dtat

On peut lire ou modier ces proprits trs facilement. Soit syst un objet TF discret : syst.Ts=nouveauTe change la priode dchantillonnage (sans changer les coefcients) ; 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} A=syst.a rcupre les zros sous forme de vecteur ; rcupre la matrice ;

Une partie des proprits na pas de signication 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 exibilit de ces fonctions, lutilisation de laide est chaleureusement recommande, pour en explorer 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 nal (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) p=pole(syst) z=tzero(syst) [p,z]=pzmap(syst) [w,csi]=damp(syst) gs=dcgain(syst) calculer les valeurs propres de syst ; calculer des ples de syst ; calculer les zros (de transmission, pour un systme multi-variable) de syst ; calculer les ples et les zros de syst ; calculer pulsation naturelle et amortissement des ples de 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 ou . 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 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. bode(syst) 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 norm(sys,inf) norme

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
effectuer la transformation sur le vecteur dtat de syst calculer la forme compagnon de syst (si type gal companion ) calculer la matrice de commandabilit de syst calculer la matrice dobservabilit de syst ajouter les tats de syst ses sorties.

syst=ss2ss(syst,T) systc=canon(syst,type) CO=ctrb(syst) OB=obsv(syst) asys=augstate(sys))

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 rltool(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 appliquer des matrices et non pas des objets LTI. 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 .

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