Académique Documents
Professionnel Documents
Culture Documents
Initiation Matlab PDF
Initiation Matlab PDF
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 & Systèmes
Université Pierre & Marie Curie
INTRODUCTION 1
Introduction (1)
• MATrix LABoratory
• Langage de programmation
INTRODUCTION 3
Fonctionnement
• Mode interactif :
Les instructions sont exécutées au
fur et à mesure qu ’elles sont
entrées par l ’utilisateur.
• Mode programme :
MATLAB exécute, 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 fenêtre de commande
INTRODUCTION 5
L ’espace de travail (2)
• Déclarer des variables :
>> x =12.5 ; y = [1 -5 0 2] ;
– définies et dimensionnées automatiquement
au fur et à mesure de leur déclaration
– stockées 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 opérations scalaires
• Vecteurs et opérations vectorielles
• Matrices et opérations matricielles
• Polynômes
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 opérations arithmétiques
>> 3 +7 - 2 * 9
ans =
-8
• Quelques fonctions
– fonctions trigo : cos acos cosh
– exponentielle : exp
– log népérien : log
– log décimal : log10
– racine : sqrt
– valeur absolue : abs
– arrondis : round ceil floor
fix VECTEURS ET 3
MATRICES
Créer 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
Créer un vecteur (2)
• Le vecteur : une matrice 1xn
>> size(v1)
ans =
1 3
• Concaténation
>> v4 =[v1 v3]
v4 =
1 2 -5 -7 3
• Vecteur vide
>> v =[ ] ;
VECTEURS ET 5
MATRICES
Créer un vecteur (3)
• Génération automatique
composantes espacées 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
Opérations vectorielles (1)
• Extraction
>> v4(3)
ans =
-5
VECTEURS ET 8
MATRICES
Opérations vectorielles (3)
>> v = [1 2 -5 -7 3]
– somme des éléments d ’un vecteur
>> sum(v)
ans =
-6
– moyenne : mean(v)
– médiane : median(v)
– écart-type : std(v)
– minimum : min(v)
– maximum : max(v)
VECTEURS ET 9
MATRICES
Créer une matrice
• Saisie d ’une matrice
– lignes séparées par un point virgule
>> M1=[1 0 3;2 5 1]
M1 =
1 0 3
2 5 1
– lignes séparées 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 spéciales (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
éléments valent 1
– zeros(m,n) : matrice m x n dont tous
les éléments 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
Opérations matricielles (1)
• Extraction
– d ’un élément
>> 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
Opérations 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
Opérations matricielles (3)
• Produit classique
Rappel : le produit de A(mxn) par B(pxq)
n ’est possible que si n = p et le résultat est
de dimension mxq
• Produit de Hadamard
ou produit élément par élément de deux
matrices de mêmes dimensions
>> A = [1 2 ; 3 4]
>> A *A >> A .*A
ans = ans =
7 10 1 4
15 22 9 16
VECTEURS ET 15
MATRICES
Opérations matricielles (4)
• Fonctions diverses
– déterminant :
>> 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: série de Taylor
VECTEURS ET 16
MATRICES
Vecteurs et valeurs propres
>> M = [2 1 ; 1 2] ;
• Polynôme caractéristique : |λI - M| = 0
>> poly(M)
ans =
1 -4 3
VECTEURS ET 17
MATRICES
Les polynômes
• Vecteur ligne ensemble de données
• Extension à n polynômes
p4(x) = x(x + 2)(2x - 3)
>> p4 =conv([1 0],conv([1 2],[2
-3]))
p4 =
2 1 -6 0
• Division de polynômes
>> p1 = deconv(p3, p2)
p1 =
1 0 2
VECTEURS ET 19
MATRICES
Opérations polynomiales (2)
• Division de polynômes : cas général
p(x) = x3 + x - 1
d(x) = x2 + 3x - 4
>> [q,r] = deconv(p,d)
q =
1 -3
r =
0 0 14 -13
• Inversement
>> p4 =poly(poles_p4)
p4 =
2 1 -6 0
VECTEURS ET 21
MATRICES
3 - LA PROGRAMMATION
MATLAB
LA PROGRAMMATION 1
MATLAB
Opérateurs logiques
• == égalité
• ~ = différence
• <( <=) inférieur (ou égal)
• >( >=) supérieur (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
Chaînes de caractères (1)
• Généralités
– chaîne = vecteur ligne
– nombre de composantes = longueur de
la chaîne
• Affectation
>> ch = ‘ bonjour monsieur ’
>> size(ch)
ans =
1 16
• Conversions
num2str : nombre chaîne
mat2str : matrice chaîne
str2num : chaîne nombre
LA PROGRAMMATION 3
MATLAB
Chaînes de caractères (2)
• Ecriture de chaînes formatées
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 : créer 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 incrément (pas) autre
que 1 (valeur par défaut).
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 supérieur à un réel 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
prématurée d'une boucle de contrôle.
LA PROGRAMMATION 10
MATLAB
L ’instruction IF (3)
• Permet une sélection 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 sélection 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.
• Exécuté séquentiellement dans
l ’espace de travail, il accède 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 définie
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 générale d ’une
application MATLAB
SCRIPT
Fonctions privées
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 ’opérations depuis le début de la
session MATLAB ou une remise à zéro
>> flop
– remise à zéro du compteur
>> flop(0)
– temps d ’exécution (en secondes) :
>> A = rand(200);
>> tic ; inv(A ’*A) ; toc
elapsed_time =
12.4100
LA PROGRAMMATION 20
MATLAB
Programmation (5)
• Le débogage permet de corriger :
– les erreurs de programmation (nombre
d ’arguments d ’entrée et de sortie,
syntaxe des commandes ...)
– les erreurs logiques (bugs)
• Utiliser :
– le point virgule ;
– le mode keyboard : keyboard
– pause
– le débugger
>> 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 même
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
Légender une courbe (1)
• Insérer un titre
>> title(‘Tracé de x^2 et
0.5x^2-x+1’)
• Insérer du texte
>> gtext(‘x^2’)
>> gtext(‘0.5x^2 - x + 1’)
• Ajouter un quadrillage
>> grid
LES GRAPHIQUES 4
Légender 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 même 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 (enregistrée 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)
• Coordonnées 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 - LCω2 + 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 même :
– semilogy %ordonnées en logarithmique
– bode(n,d)
➩ n et d sont deux polynômes en ω (Cf chap
5) représentant le numérateur et le
dénominateur 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
Gérer un graphique
• Gestion des fenêtres
– ouvrir une nouvelle fenêtre : figure
• Exportation
– créer 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 schéma 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
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
Schéma de simulation
• Construire le schéma
• Sauvegarder :
SIMULINK 8
Fichier .M de paramètres
➩Sauvegarder
➩Exécuter (pour définir les variables
dans l ’espace de travail)
SIMULINK 9
Le masquage
• Sélectionner avec le bouton gauche
SIMULINK 10
Asservissement de vitesse
• Echelon de commande
• Boucle fermée en vitesse
• Correction proportionnelle
SIMULINK 11
Exécution
➩ simulation ! parameters
• simulation linéaire ! 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 : transformée de
Fourier
%génération 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
corrélation et covariance
>>xcorr (x,‘option’)
➩ estimateur d ’autocorrélation biaisé
(option=biased) ou non biaisé
(option=unbiased)
>>xcorr (x,y,‘option’)
➩ estimateur d ’intercorrélation
>>xcov (x,‘option’)
➩ estimateur d autocovariance
LES TOOLBOXES 4
La Toolbox Signal (4)
• La troncature des signaux par la fenêtre
naturelle (rectangle) entraîne des
ondulations dans l ’espace fréquentiel
(phénomène 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
➩ modèle zéros/pôles
>> zpk(Z,P,K)
Z : zéros de transmission
P : pôles
K : gain
LES TOOLBOXES 7
La Toolbox Control (2)
• Réponses temporelles
>> sys = zpk([],[-1],5)
Zero/pole/gain:
5
---------
(s +1)
>> step(sys) réponse indicielle
>> impulse(sys) réponse
impulsionnelle
>> lsim(sys,u) réponse à l ’entrée 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 )