Initiation Matlab
Initiation Matlab
Initiation Matlab
A MATLAB
Lionel PREVOST
Sommaire :
1 - Initiation Matlab
2 - Vecteurs et Matrices
3 - La Programmation Matlab
4 - Les Graphiques
5 Simulink
6 - Les Toolboxes
1 - INITIATION
A MATLAB
Lionel Prevost
Laboratoire des Instruments & Systmes
Universit Pierre & Marie Curie
INTRODUCTION 1
Introduction (1)
MATrix LABoratory
Langage de programmation
INTRODUCTION 3
Fonctionnement
Mode interactif :
Les instructions sont excutes au
fur et mesure qu elles sont
entres par l utilisateur.
Mode programme :
MATLAB excute, ligne par ligne,
les instructions d un fichier .M
Type de variables :
unique : la matrice
INTRODUCTION 4
L espace de travail :
le Workspace (1)
La fentre de commande
INTRODUCTION 5
L espace de travail (2)
Dclarer des variables :
>> x =12.5 ; y = [1 -5 0 2] ;
dfinies et dimensionnes automatiquement
au fur et mesure de leur dclaration
stockes dans l espace de travail
INTRODUCTION 6
L espace de travail (3)
Supprimer une (ou toutes les) variable(s) :
>> clear x
>> clear all
INTRODUCTION 7
L espace de travail (4)
INTRODUCTION 8
L aide sous MATLAB
>> helpdesk
INTRODUCTION 9
2 - VECTEURS
ET
MATRICES
Scalaires et oprations scalaires
Vecteurs et oprations vectorielles
Matrices et oprations matricielles
Polynmes
VECTEURS ET 1
MATRICES
Les scalaires (1)
Le scalaire : une matrice 1x1
>> s =2.5 ;
>> size(s)
ans =
1 1
ou
>> [i,j] = size(s)
i =
1
j =
1
Les format d affichage
format short 0.0333
format long 0.033333333333
format short e 3.3333E-002
format long e 3.333333333334E-002
format rat 1/30
VECTEURS ET 2
MATRICES
Les scalaires (2)
Les oprations arithmtiques
>> 3 +7 - 2 * 9
ans =
-8
Quelques fonctions
fonctions trigo : cos acos cosh
exponentielle : exp
log nprien : log
log dcimal : log10
racine : sqrt
valeur absolue : abs
arrondis : round ceil floor
fix VECTEURS ET 3
MATRICES
Crer un vecteur (1)
Vecteur ligne
>> v1= [1 2 -5] ;
ou
>> v1(1) =1; v1(2) =2;v1(3)=-5;
ou
>> v1(1) = [1, 2 ,-5] ;
Vecteur colonne
>> v2=[-7;3];
Transposition :
>> v3=v2
v3 =
-73
VECTEURS ET 4
MATRICES
Crer un vecteur (2)
Le vecteur : une matrice 1xn
>> size(v1)
ans =
1 3
longueur d un vecteur
>> long_v1 = length(v1)
long_v1 =
3
Concatnation
>> v4 =[v1 v3]
v4 =
1 2 -5 -7 3
Vecteur vide
>> v =[ ] ;
VECTEURS ET 5
MATRICES
Crer un vecteur (3)
Gnration automatique
composantes espaces d un pas constant
>> v5=1:0.5:3
v5=
1.000 1.500 2.000
2.500 3.000
v =linspace(1, 3, 5)
VECTEURS ET 6
MATRICES
Oprations vectorielles (1)
Extraction
>> v4(3)
ans =
-5
VECTEURS ET 8
MATRICES
Oprations vectorielles (3)
>> v = [1 2 -5 -7 3]
somme des lments d un vecteur
>> sum(v)
ans =
-6
moyenne : mean(v)
mdiane : median(v)
cart-type : std(v)
minimum : min(v)
maximum : max(v)
VECTEURS ET 9
MATRICES
Crer une matrice
Saisie d une matrice
lignes spares par un point virgule
>> M1=[1 0 3;2 5 1]
M1 =
1 0 3
2 5 1
lignes spares par un retour chariot
>> M1=[1 0 3
2 5 1]
M1 =
1 0 3
2 5 1
Dimensions
>> size(M1)
ans =
2 3
VECTEURS ET 10
MATRICES
Les matrices spciales (1)
Matrices identit, nulle et unit
>> IDENTITE =eye( 2,3)
IDENTITE =
1 0 0
0 1 0
ones (m,n) : matrice m x n dont tous les
lments valent 1
zeros(m,n) : matrice m x n dont tous
les lments valent 0
800
600
400
200
0
-4 -3 -2 -1 0 1 2 3 4
250
200
150
100
50
0
0 0 .2 0 .4 0 .6 0 .8 1
VECTEURS ET 12
MATRICES
Oprations matricielles (1)
Extraction
d un lment
>> M1(2,1) >>
M1(4)
ans = ans =
2 2
d une ligne
>> M1(2, : )
ans =
2 5 1
d une colonne
>> M1( : ,2)
ans =
0
5
VECTEURS ET 13
MATRICES
Oprations matricielles (2)
Comparaison
>> M3 = [1 0 3 ; 2 5 1 ; 0 7
12] ;
>> M4 =ones(3) ;
>> M3 >M4
ans =
0 0 1
1 1 0
0 1 1
Extension des instruction min, max ...
>> max(M3) %maximum par colonnes
ans =
2 7 12
>> max(max(M3))
ans =
12
VECTEURS ET 14
MATRICES
Oprations matricielles (3)
Produit classique
Rappel : le produit de A(mxn) par B(pxq)
n est possible que si n = p et le rsultat est
de dimension mxq
Produit de Hadamard
ou produit lment par lment de deux
matrices de mmes dimensions
>> A = [1 2 ; 3 4]
>> A *A >> A .*A
ans = ans =
7 10 1 4
15 22 9 16
VECTEURS ET 15
MATRICES
Oprations matricielles (4)
Fonctions diverses
dterminant :
>> det(M)
norme
>> norm(M)
rang
>> rank(M)
inverse (et pseudo-inverse)
>> inv(M) >> pinv(M)
conditionnement
>> cond(M)
exponentielle
expm: vecteurs et valeurs propres
expm1: approximation de Pad
expm2: srie de Taylor
VECTEURS ET 16
MATRICES
Vecteurs et valeurs propres
>> M = [2 1 ; 1 2] ;
Polynme caractristique : |I - M| = 0
>> poly(M)
ans =
1 -4 3
VECTEURS ET 17
MATRICES
Les polynmes
Vecteur ligne ensemble de donnes
Extension n polynmes
p4(x) = x(x + 2)(2x - 3)
>> p4 =conv([1 0],conv([1 2],[2
-3]))
p4 =
2 1 -6 0
Division de polynmes
>> p1 = deconv(p3, p2)
p1 =
1 0 2
VECTEURS ET 19
MATRICES
Oprations polynomiales (2)
Division de polynmes : cas gnral
p(x) = x3 + x - 1
d(x) = x2 + 3x - 4
>> [q,r] = deconv(p,d)
q =
1 -3
r =
0 0 14 -13
Racines d un polynme
>> poles_p4 = roots(p4)
poles_p4 =
0
-2.0000
1.5000
Inversement
>> p4 =poly(poles_p4)
p4 =
2 1 -6 0
VECTEURS ET 21
MATRICES
3 - LA PROGRAMMATION
MATLAB
LA PROGRAMMATION 1
MATLAB
Oprateurs logiques
== galit
~ = diffrence
<( <=) infrieur (ou gal)
>( >=) suprieur (ou gal)
& ET logique (AND)
~ NON logique (NOT)
| OU logique (OR)
xor OU exclusif (XOR)
Exemple :
>> a = [1 0 0 1] ;
>> b = [1 1 0 1] ;
>> a |b
ans =
1 1 0 1
LA PROGRAMMATION 2
MATLAB
Chanes de caractres (1)
Gnralits
chane = vecteur ligne
nombre de composantes = longueur de
la chane
Affectation
>> ch = bonjour monsieur
>> size(ch)
ans =
1 16
Conversions
num2str : nombre chane
mat2str : matrice chane
str2num : chane nombre
LA PROGRAMMATION 3
MATLAB
Chanes de caractres (2)
Ecriture de chanes formates
syntaxe :
text=sprintf( format1
format2... , data1, data2 ...)
exemple :
>> pi2 = pi^2
pi2 =
9.8696
>> text = sprintf( le carr de
pi vaut %3.2f , pi2)
text =
le carr de pi vaut 9.87
LA PROGRAMMATION 4
MATLAB
L instruction FOR (1)
parcours d'un intervalle
syntaxe :
for variable =debut : fin
instructions
..........
instructions
end
exemple : crer le vecteur [1 2 4 8 .... 2^10]
>> x=[ ];
x =
[ ]
>> for n=0:10 ; x =[x 2^n] ;
end
ou directement
>> for n=0:10; x(n +1)
=2^n;end LA PROGRAMMATION 5
MATLAB
L instruction FOR (2)
On peut utiliser un incrment (pas) autre
que 1 (valeur par dfaut).
syntaxe :
for variable =debut:pas:fin
! Penser l indentation !!
LA PROGRAMMATION 6
MATLAB
La boucle WHILE
tant que . . . faire
syntaxe :
while expression
instructions
..........
instructions
end
exemple: calculer le plus petit entier n tel que
2^n soit suprieur un rel a donn.
>> max =1998; n=1;
>> while (2^n <max);n=n+1;end;
>> n
n =
11
LA PROGRAMMATION 7
MATLAB
Les ruptures de boucle
Il est possible de provoquer une sortie
prmature d'une boucle de contrle.
LA PROGRAMMATION 10
MATLAB
L instruction IF (3)
Permet une slection multiple.
syntaxe
if expression1
instructions 1
elseif expression2
instructions 2
elseif expression3
instructions 3
. . . . . . . . . . .
else expressionN
instructions N
end
LA PROGRAMMATION 11
MATLAB
L instruction SWITCH
Permet une slection multiple.
syntaxe
switch variable
case variable =expression1
instructions 1
case variable =expression2
instructions 2
. . . . . . . . . .
Otherwise
instructions (erreur)
end
LA PROGRAMMATION 12
MATLAB
Script
Fichier (message.m par exemple)
contenant une suite d instructions
matlab.
Excut squentiellement dans
l espace de travail, il accde aux
variables (locales) qui s y trouvent.
>> temps = 1 ;
>> message
il fait beau
LA PROGRAMMATION 13
MATLAB
Fonctions (1)
Fichier (temps.m par exemple)
contenant une suite d instructions
matlab.
LA PROGRAMMATION 14
MATLAB
Fonctions (2)
function y = temps(x)
%retourne le temps en fonction de
if (x)
y = il fait beau
end
LA PROGRAMMATION 15
MATLAB
Fonctions (3)
Evaluation d une fonction dfinie
dans un fichier (f1.m)
function y = f1(x)
y = 2*x.^2 - 5*x +1
>> x = -10:0.1:10;
>> y =feval( f1 , x) ;
>> plot(x,y)
300
250
200
150
100
50
-5 0
-1 0 -5 0 5 10
LA PROGRAMMATION 16
MATLAB
Programmation (1)
Forme gnrale d une
application MATLAB
SCRIPT
Fonctions prives
Fonction 21
et/ou
sous fonctions
Fonction 22
LA PROGRAMMATION 17
MATLAB
Programmation (2)
Quelques recommandations
Choisir des noms significatifs pour les
variables et les fonctions
LA PROGRAMMATION 18
MATLAB
Programmation (3)
Mesure de complexit algorithmique
nombre d oprations depuis le dbut de la
session MATLAB ou une remise zro
>> flop
remise zro du compteur
>> flop(0)
temps d excution (en secondes) :
>> A = rand(200);
>> tic ; inv(A *A) ; toc
elapsed_time =
12.4100
LA PROGRAMMATION 20
MATLAB
Programmation (5)
Le dbogage permet de corriger :
les erreurs de programmation (nombre
d arguments d entre et de sortie,
syntaxe des commandes ...)
les erreurs logiques (bugs)
Utiliser :
le point virgule ;
le mode keyboard : keyboard
pause
le dbugger
>> help debug
Debugging command ...
LA PROGRAMMATION 21
MATLAB
4 - LES GRAPHIQUES
Les graphes en 2D
Les graphes en 3D
L exportation de graphes
LES GRAPHIQUES 1
Tracer de courbes 2D (1)
La commande plot(x,y,s) trace la
courbe y en fonction de x avec les
attributs (facultatifs) s.
>> x =[-10:0.1:10];
>> y1 =x.^2;
>> plot(x, y1, r)
100
90
80
70
60
50
40
30
20
10
0
-1 0 -5 0 5 10
LES GRAPHIQUES 2
Tracer de courbes 2D (2)
plot(y) permet de tracer directement
le vecteur y en fonction de ses indices.
plot(x,y1,s1,x,y2,s2,...) trace
y1, y2 ... en fonction de x sur le mme
graphe avec les attributs s1, s2 ...
>> y2 =0.5*x.^2 - x + 1 ;
>> plot(x, y1, r, x , 2, b)
100
90
80
70
60
50
40
30
20
10
0
-1 0 -5 0 5 10
LES GRAPHIQUES 3
Lgender une courbe (1)
Insrer un titre
>> title(Trac de x^2 et
0.5x^2-x+1)
Insrer du texte
>> gtext(x^2)
>> gtext(0.5x^2 - x + 1)
Ajouter un quadrillage
>> grid
LES GRAPHIQUES 4
Lgender une courbe (2)
2 2
Tra c d e x e t 0 .5 x -x+1
100
90
80
70
2
x
y : a xe d e s o rd o nn e s
60
50
40
30
20
2
0 .5 x - x + 1
10
0
-1 0 -5 0 5 10
x : a xe d e s a b s is s e s
LES GRAPHIQUES 5
Manipuler un graphique
La commande zoom (2D seulement)
permet de zoomer sur une partie de
courbe avec le bouton gauche de la
souris (le bouton droit annule le zoom)
LES GRAPHIQUES 6
Tracer plusieurs courbes
Sur un mme graphique
>> plot(x, y1, r)
>> hold on
>> plot(x, y2, b)
100
50
0
-1 0 -5 0 5 10
80
60
40
20
0
-1 0 -5 0 5 10
LES GRAPHIQUES 7
Tracer le graphe d une
fonction
La commande fplot( f ,x)
permet d afficher les variations de la
fonction f1 (enregistre dans le
fichier f1.m) sur l intervalle x.
>> x =0:0.1:4*pi;
>> fplot (sin, x)
0 .8
0 .6
0 .4
0 .2
-0 .2
-0 .4
-0 .6
-0 .8
-1
0 2 4 6 8 10 12
LES GRAPHIQUES 8
Autres formats (1)
Coordonnes semilog et log-log
exemple : trac du diagramme de Bode
d un filtre.
Soit le circuit RLC de fonction de transfert :
1
H(jw) =
1 - LC2 + jRC
>> R =100 ; C =1e-3 ; L =0.1 ;
>> w =0 : 5000 ;
>> H =1./(1 - L*C*w.^2 +
R*C*w*i);
>> mod = abs(H) ;
>> phase = 180*angle(H)/pi ;
>> subplot(211),loglog(w,mod)
>> ubplot(212),semilogx(w,phase)
LES GRAPHIQUES 9
Autres formats (2)
0
m o d u le
10
-2
10
-4
10
0 1 2 3 4
10 10 10 10 10
p ha s e
0
-5 0
-1 0 0
-1 5 0
-2 0 0
0 1 2 3 4
10 10 10 10 10
De mme :
semilogy %ordonnes en logarithmique
bode(n,d)
n et d sont deux polynmes en (Cf chap
5) reprsentant le numrateur et le
dnominateur de la fonction de transfert.
LES GRAPHIQUES 10
Tracer une courbe 3D
Syntaxe : plot3(x, y, z, s)
>> t =0:0.1:25;
>> x = exp(-0.05*t).*cos(t) ;
>> y = exp(-0.05*t).*sin(t) ;
>> z = t ;
>> plot3(x, y,z)
25
20
15
10
0
1
0 .5 1
0 0 .5
0
-0 .5
-0 .5
-1 -1
LES GRAPHIQUES 11
Grer un graphique
Gestion des fentres
ouvrir une nouvelle fentre : figure
Exportation
crer un fichier postcript (qu il est
possible d importer dans un traitement de
texte). Son nom est alors fig.ps :
print -deps fig
sous Windows, activer
edit copy figure
puis coller (sous Word, Powerpoint ...)
LES GRAPHIQUES 12
5 - SIMULINK
L environnement et les blockset
Construire un schma de simulation
La simulation
SIMULINK 1
Simulink
>> simulink
SIMULINK 2
Le blockset Sources
SIMULINK 3
Le blockset Sinks
SIMULINK 4
Le blockset Linear
N(s) ais i
H(s) = =
D(s) bis i
N(s) (s - zi)
H(s) = =
D(s) (s - pi)
SIMULINK 5
Le blockset Discrete
N(z) aiz i
H(z) = =
D(s) biz i
N(z) (z - zi)
H(z) = =
D(z) (z - pi)
SIMULINK 6
Le blockset Non-linear
SIMULINK 7
Schma de simulation
Construire le schma
Sauvegarder :
SIMULINK 8
Fichier .M de paramtres
Sauvegarder
Excuter (pour dfinir les variables
dans l espace de travail)
SIMULINK 9
Le masquage
Slectionner avec le bouton gauche
SIMULINK 10
Asservissement de vitesse
Echelon de commande
Boucle ferme en vitesse
Correction proportionnelle
SIMULINK 11
Excution
simulation ! parameters
simulation linaire ! linsim
temps de simulation! StopTime
fixer
MinStepSize=MaxStepSize
simulation ! start
M o te u r C C : C o rr e c tio n P : K = 1 :1 0
1 .4
1 .2
K=10
K=2
K=1
0 .8
0 .6
0 .4
0 .2
0
0 5 10 15 20 25 30 35
SIMULINK 12
6 - LES TOOLBOXES
Signal
Control
LES TOOLBOXES 1
La Toolbox Signal (1)
Analyse spectrale : transforme de
Fourier
%gnration des signaux
N = 256 ;
t = 0:Te:(N-1)*Te ;
x1 = cos(2*pi*10*(0:N-1)*Te) ;
x2 = cos(2*pi*20*(0:N-1)*Te) ;
y= x1 + x2 +
1.5*randn(1,length(t));
%calcul des fft
fy = fft(y)/N ;
%affichage
f = (0:N-1)/Te/N ;
subplot(211) ;
plot(t,y) ;
title('y=cos(10t) + cos(60t)') ;
subplot(212) ;
plot(f,abs(fy)) ;
title( module de la TF de y') ;
LES TOOLBOXES 2
La Toolbox Signal (2)
y=c o s (1 0 t) + c o s (6 0 t) + b ruit
10
-5
-1 0
0 0 .5 1 1 .5 2 2 .5 3 3 .5 4
m o d ule d e la TF d e y
0 .8
0 .6
0 .4
0 .2
0
0 10 20 30 40 50 60 70
LES TOOLBOXES 3
La Toolbox Signal (3)
Les estimateur spectraux : fonctions
corrlation et covariance
>>xcorr (x,option)
estimateur d autocorrlation biais
(option=biased) ou non biais
(option=unbiased)
>>xcorr (x,y,option)
estimateur d intercorrlation
>>xcov (x,option)
estimateur d autocovariance
LES TOOLBOXES 4
La Toolbox Signal (4)
La troncature des signaux par la fentre
naturelle (rectangle) entrane des
ondulations dans l espace frquentiel
(phnomne de Gibbs)
LES TOOLBOXES 5
La Toolbox Signal (5)
A : matrice d tat
B : matrice de commande
C : matrice d observation
D : matrice de liaison directe
modle zros/ples
>> zpk(Z,P,K)
Z : zros de transmission
P : ples
K : gain
LES TOOLBOXES 7
La Toolbox Control (2)
Rponses temporelles
>> sys = zpk([],[-1],5)
Zero/pole/gain:
5
---------
(s +1)
>> step(sys) rponse indicielle
>> impulse(sys) rponse
impulsionnelle
>> lsim(sys,u) rponse l entre u
5 6
5
4
4
3
3
2
2
1
1
0 0
0 50 100 150 0 50 100 150
LES TOOLBOXES 8
La Toolbox Control (3)
Lieux de transfert
>> bode(sys) lieu de Bode:Hdb(),()
B o d e D ia g ra m s
15
10
P ha s e (d e g ); Ma g nitud e (d B )
0
-5
-1 0
0
-5 0
-1 0 0
-1 0 1
10 10 10
F re q ue nc y (ra d /s e c )