Vous êtes sur la page 1sur 24

Prsentation sur le logiciel : MATLAb

Prsent par :

BOUATTIOUI Marouane MAMOUNI Mohamed ESSABA Imad

Plan de la prsentation :
1- Introduction / Gnralits 2- Fentre de Matlab 3- Programmation 4- Exemple dutilisation de Matlab en Automatique 5- Utilisation de Simulink

1- Introduction / Gnralits:
Matlab (abrviation de " Matrix Laboratory "), est un environnement informatique conu pour le calcul matriciel. L'lment de base est une matrice dont la dimension n'a pas tre fixe. Matlab est un outil puissant qui permet la rsolution de nombreux problmes en beaucoup moins de temps qu'il n'en faudrait pour les formuler en C. S'il est parfaitement adapt l'Automatique et au Traitement du Signal, sa facilit d'emploi avec des nombres complexes et ses possibilits d'affichages graphiques en font un outil intressant pour bien d'autres types d'applications.

2- Fentre de Matlab :
3- Programmation : 3-1- LES MATRICES
En Matlab, une matrice est un tableau rectangulaire de nombres reprsents en virgule flottante avec une double prcision, cest `a dire 8 octets pour un nombre rel et 16 octets pour un nombre complexe. Une matrice 11 est interprte comme un scalaire, celle ayant une seule ligne ou une seule colonne comme un vecteur.

Cration de matrices Pour crer une matrice il suffit douvrir un [, numrer les lments ligne par ligne, puis fermer le ]. Sur une mme ligne les lments sont spars par une virgule ou un espace, deux lignes successives sont spares par un point-virgule ou un retour chariot. Par exemple, linstruction

>> A = [ 1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]


Cre une matrice 4 4 appele A. La rponse de Matlab est

A= 1 5 9 13
-

2 6 10 14

3 7 11 15

4 8 12 16

Linstruction suivante cre la mme matrice, mais le rsultat nest pas affich car un point-virgule termine linstruction :

>> A = [1, 2, 3, 4 ;5, 6, 7, 8 ;9 10 11 12; 13, 14, 15, 16];


On peut aussi crer la mme matrice A avec linstruction suivante :

>> A = [1:4; 5:8; 9:12; 13:16] >> mat = rand(2,3), scal = pi, vlig = [1 2 3 4], vcol = zeros(3,1) mat = 0.4103 0.0579 0.8936 0.3529 scal = 3.1416 vlig = 1 2 3 4 vcol =0 0 0 0.8132 0.0099

Nous avons utilis ici loprateur deux-points. Cet oprateur est trs important, on lutilise trs souvent. Il permet de discrtiser un intervalle avec un pas constant. Linstruction : -

>> u = 0:9
Pour cre un vecteur u contenant les entiers de 0 peut spcifier une autre longueur de pas :

`a 9. Par ddfaut le pas est gal 1, mais on

>> 0:2:9, 9:-3:0, 0:pi/3:2*pi


Noter que dans la ligne ci-dessus, nous avons utilis une virgule pour sparer deux instructions sur une mme ligne. On voit donc que virgule et point-virgule permettent de sparer des lments dune matrice et que ce sont aussi des sparateurs dinstructions. une instruction avec affichage

, spare 2 lments sur une ligne termine ; spare 2 lignes termine une instruction sans affichage

Certaines fonctions permettent de crer des matrices particulires : eye(n) cre une matrice identit de dimension n ; ones et zeros crent des matrices de 1 et de 0 ; rand et randn des matrices dont les lments sont choisis au hasard selon une loi uniforme sur ]0, 1[ et une loi normale centre rduite ; magic(n) cre un carr magique de dimension n (n >=3) ; diag permet dextraire des diagonales ou bien de crer des matrices diagona les ; triu et tril permettent dextraire les parties triangulaire suprieure et triangulaire infrieure Lecture / intrrogation de matrice (accs ses donnes) Pour accder aux lments dune matrice, on utilise la notation standard de lalgbre linaire :

A(i,j) fait rfrence llment de la ligne i et de la colonne j de A.


Dans lexemple prcdent, linstruction A(2,3) retourne la valeur 7. Seul un entier positif non nul est accept comme indice de matrice ou de vecteur. On peut extraire plusieurs lments simultanment, par exemple :

>> A([1,3],2), A([1,3],[2,1,4])


On utilise loprateur deux-points pour extraire une ligne, une colonne ou une sousmatrice.

A(2,:) extrait la deuxime ligne, A(:,1) la premire colonne A(2:4,1:3) retourne le bloc ans = 5 6 7 9 10 11 13 14 15 - Linstruction A(:) cre un vecteur colonne contenant les lments de A numrs colonne
par colonne. - Notons que linstruction A(7) retourne la valeur 10, car les lments dune matrice sont numrots selon ce mme ordre dnumration. Ainsi, llment A(i,j) est numrot i+m*(j-1), o m est le nombre de lignes de A.

1 2 .

m+1 m+2 .

2m + 1 2m + 2 .

. . . m

. . . 2m

. . . 3m

. . . ...

Cette numrotation permet dextraire des lments avec un tableau dindices. Par exemple, linstruction

>> A([1 2 3; 4 5 6]) ans = 1 5 13 2 9 6

Modification d'une matrice On peut modifier les lments dune matrice en leur affectant de nouvelles valeurs :

>> A(4,4) = 0, A(1,:) = A(1,:)*10, A = [A; [1 1 1 1]]

Oprations sur les matrices

3-2- Oprations algbriques


Les oprations algbriques usuelles sont : Soit X une variable alatoire et soit (a, Alors E(aX+b)

b) un couple de nombres rels.

= aE(X)+b

et

(aX + b) = |a|(X).

+ * ^ \ /

addition soustraction produit transposition (complexe conjugue) puissance division gauche

division droite. Toutes ces oprations doivent respecter les rgles usuelles de lalgbre linaire.

>> M = [1,2] * [3;4], P = [1;2] * [3,4], Q = [1,2] * [3,4] M= 11 P= 3 4 6 8 ? ? ? Error using ==> * Inner matrix dimensions must agree.
Quand les oprandes sont une matrice et un scalaire (par exemple A+1, ou A/2), lopration est effectue entre le scalaire et chaque lment de la matrice.

A-1, A*2

>> twos = ones(2) + 1 twos =

2 2

2 2

Oprations lments par lments Matlab utilise un type doprations particulires appeles array operations. Ces oprations concernent *,b, / et \. Lorsquun de ces oprateurs est prcd dun point, lopration est effectue sur chaque lment de la matrice.

>> [1:10].^2 ans = 1 4 >> [1:4]./[2:5] ans = 0.5000

16

25

36

49

64

81

100

0.6667

0.7500

0.8000

>> [1 2 3 ; 4 5 6 ; 7 8 9] .* eye(3) ans = 1 0 0 0 5 0 0 0 9


Ces oprateurs sont trs utiles pour tracer des graphiques. Lorsquon effectue des calculs avec des nombres complexes, la transposition non complexe conjugue est obtenue avec loprateur ..

>> Z1 = [1 ; i] , Z2 = [1 ; i]. Z1 = 1.0000 0 - 1.0000i Z2 = 1.0000 0 + 1.0000i

3-3- Oprateurs relationnels


Les oprateurs relationnels sont == gal ~= diffrent > strictement plus grand >= plus grand ou gal < strictement plus petit <= plus petit ou gal. Les deux oprandes doivent tre de mme dimension, sauf si un des deux oprandes est un scalaire. Le rsultat est une matrice de mme dimension nayant que des 0 (faux) et des 1 (vrai), la comparaison tant effectue lment par lment. Lorquun des deux oprandes est un scalaire,la comparaison est effectue entre chaque lment de la matrice et le scalaire.

>> R = randn(1,6), R>0 R= 1.1892 -0.0376 ans = 1 0 1 1

0.3273 0 1

0.1746

-0.1867

0.7258

LES FONCTIONS USUELLES


Fonctions scalaires Ce sont les fonctions mathmatiques usuelles. sin sinus cos cosinus

asin sinh asinh exp abs rem ceil imag

acos cosh acosh log sqrt round fix conj

tan tangente atan tanh atanh log10 sign floor real angle

Largument dentre peut tre un scalaire, un vecteur ou une matrice. Largument de sortie est une matrice de mme dimension, la fonction etant applique sur chacun de ses lments.

>> log(0:5) Warning: Log of zero. ans = -Inf 0 0.6931 1.0986 1.3863 1.6094

Affichages graphiques

Matlab permet un grand nombre de types d'affichage 1D et 2D, seuls les plus courants seront dcrits ici. La commande plot permet l'affichage d'une courbe 1D : >> x = 0:0.1:2; y = sin(x*pi); >> plot(x*pi,y) % plot(abscisse,ordonne) On aurait pu tracer la courbe en semilog ou en log avec les fonctions semilogx, semilogy et loglog On peut ajouter un titre aux figures ainsi que des labels aux axes avec les commandes title, xlabel, ylabel:

>> title('Courbe y = sinus(pi*x)') >> xlabel('x'); ylabel('y')

4- Matlab en Automatique :
Le logiciel Matlab ralise aussi bien ltude de systmes dynamiques linaires, notamment dans le domaine des asservissements, que la modlisation de systmesplus complexes. Afin de matriser le logiciel "Matlab", nous allons d'abord tudier un systme du second ordre : H(p)= 10 / (s+2.s+10). Les instructions MATLAB sont crites en gras. Pour avoir des dtails, utiliser la commande : "help instruction" (parexemple taper "help nichols"). Ecriture de la fonction de transfert : num=10 ; den=[12 10] ; printsys(num,den) ; Etude de la rponse un chelon :

step(num,den) pour voir la rponse un chelon pendant 10s

t=0:0.1:10 ; y=step(num,den,t); le point virgule ";" vite d'afficher le rsultat plot(t,y)

Pour lire des valeurs sur la courbe :

[x,y]=ginput(3) et cliquer avec la souris sur 3 points mesurer (pas de point-virgule, sinon commande inoprante) Pour tracer un quadrillage ou une ligne :

grid line([0 10],[1.05 1.05]) line([0 10],[1.05 1.05] ,'color','g') ces instructions permettent de tracer deux lignes horizontales et de faire apparatre le "tuyau des rponses 5%" :

line([0 10],[1.05 1.05]) line([0 10],[0.95 0.95]) la commande line([x1,x2],[y1,y2]) trace une ligne du point(x1,y1) au point (y1,y2).

rponse un signal quelconque


Il faut d'abord dfinir le temps : t=0:0.1:10; la variable t prend des valeurs de 0 10 par pas de 0,1 une rampe : ramp=t; y=lsim(num,den,ramp,t); plot(t,y)

Une sinusode :

sinus=sin(t); (Ne pas employer sin comme nom car c'est une fonction de Matlab et cela entranerait une "plante" du programme) z=lsim(num,den,sinus,t); plot(t,z) Afin de visualiser la sinusode originale et le signal de sortie, taper : hold on plot(t,sinus,'r') 'r' permet d'affecter la couleur rouge ce trac pour le diffrencier du prcdent. "hold on" permet de tracer plusieurs courbes dans la mme fentre. "hold off" annule cette commande.

[Gm,Pm,Wcg,Wcp] = MARGIN(num,den) mesure de la marge de phase et de la marge de gain ainsi que des pulsations correspondantes

Gm = Inf ; Pm = 53.1301 Wcg = Inf ;Wcp = 4.0000 figure pour ouvrir une nouvelle fentre "windows" pour avoir un diagramme de Bode personnalis :

puls=logspace(0,1,100); [ampli,phase,puls]=bode(num,den,puls); subplot(211),semilogx(puls,20*log10(ampli)), grid subplot(212),semilogx(puls,phase) grid

Mesure de la marge de phase et de la marge de gain ainsi que des pulsations correspondantes :

margin(num,den) [Gm,Pm,Wcg,Wcp] =margin(num,den)

Lieu des racines

La mthode consiste regarder o se trouvent les ples du systme boucl lorsque l'on fait varier le gain du correcteur proportionnel. Pour afficher le lieu des ples:

Pour prciser une zone sur le lieu des ples :

zeta=0.2; wo=5; sgrid(zeta,wo) Pour chercher la valeur du gain k permettant d'obtenir les ples dsirs en boucle ferme

[k,poles]=rlocfind(num,den); slectionner un point sur le graphique, les coordonnes s'affichent dans le "workspace". Pour construire un systme en boucle ferme :

[numf,denf]=cloop(num,den,-1); step(numf,denf) permet de visualiser la rponse en boucle ferme unitaire un chelon.

Il est facile de voir l'influence d'un correcteur. Par exemple, sion considre un simple gain de 6, il faut redfinir le numrateur par l'instruction :

num=60 (106) Redfinir la fonction de transfert en boucle ferme : [numf,denf]=cloop(num,den,-1); et faire dessiner la rponse un chelon step(numf,denf)

Il apparat donc trs facile de montrer l'influence du changement d'un paramtre sur les rponses. L o il fallait avoir recours des calculs pour obtenir la rponse d'un systme, le logiciel fournit cette rponse de manire aise et rapide. Une autre manire de procder est de recourir Simulink, extension logicielle de Matlab destine faciliter la modlisation de phnomnes physiques. Un schma se substitue aux quations pour constituer le modle. Cette manire de rsoudre numriquement des systmes d'quations diffrentielles est trs proche de la manire de raisonnent par schma bloc, par fonction de transfert. Cela se faisait couramment avec les calculateurs analogiques.

Matlab-Simulink
1-Dfinition :
Simulink est l'extension graphique de MATLAB, il reprsente une plateforme de modlisation et de simulation des systmes dynamiques, en offrant un environnement de dveloppement graphique et une bibliothque permettant de reprsenter les fonctions mathmatiques et les systmes sous forme de diagramme en blocs, et galement on peut travailler avec le Simulink pour effectuer le traitement des signaux.

2-Prsentation de Simulink :
2-1- Lancer Simulink sous Matlab :
- Lancer Matlab: Cliquer licne Matlab sur le bureau pour lancer Matlab.

- Lancer Simulink : Soit taper simulink dans la fentre de Matlab, soit cliquer licne sur les barres doutils pour lancer Matlab.

- Figure 1. Lancer Simulink sous Matlab.

2-2- Fentre de Simulink et les blocs base de simulation :


Utilisez licne pour crer un nouveau programme de simulation. On peut entraner un bloc de la bibliothque au programme cr.

- Figure 2. Fentre de Simulink. - Table 1- Les blocs usuels eutiliss.

N.B : Il faut changer les paramtres dun bloc pour satisfaire notre besoin.

2-3- Lancer la simulation :

Avant de lancer la simulation, il faut spcifier les paramtres de la simulation. Slectionnez Configuration parameters montr comme la figure 3et 4.

- Figure 3- Paramtres dune simulation.

- Figure 4- Paramtres dune simulation.


Aprs la simulation, on peut observer le rsultat de la simulation par un scope en double-cliquant sur son symbole. Pour avoir plus dinformation, slectionnez Help par le menu ou cliquez le bouton Help si ncessaire.

- Figure 5-Aide sur Matlab.

3-Exemples :
- Exemple 1 :(modification des paramtres)
Cliquez avec le bouton droit de la souris sur licne Sine Wave, et puis choisissez Sin parameters (ou directement double-cliquez sur cet icne) pour modifier les valeurs.( v(t) = Asin(wt) = 5sin(2f t) avec f=50 Hz)

- Figure 6,7-Modification des paramtres dun bloc.

- Exemple 2 :( la somme)
w(t) = u(t) + v(t)

N.B : il existe egalement des blocs de soustraction,multiplication et aussi la division.

- Exemple 3 :( bloc intgrateur)

V(t)= u(t)+u(0)

- Exemple 5 : (multiplexeur)

- Exemple 7 : (Liaison entre les lments)


1) Placez les lments :

2) Saisissez la sortie de lchelon en cliquant dessus et en maintenant le bouton droit de la souris enfonc, puis dplacez-la jusqu lentre du gain :

3) Saisissez nimporte quel point dans la ligne en cliquant dessus et en maintenant le bouton droit de la souris enfonc, puis dplacez-la jusqu lentre de lopration

plus :

4) Le reste des liaions sera comme suit :