Ecole Nationale Des Sciences Appliquée de Khouribga
Initiation au logiciel Matlab
Pr. Abdelkabir LAHRECH
Année 2011-2012 1
MATLAB MATLAB signifie MAT MATrix rix LAB LABoratory. oratory. C’est un logiciel de calcul
numérique créé en 1984. Il permet de façon interactive de faire des calculs
matriciels; de simuler des systèmes; d’analyser des données; de visualiser les résultats en 2D et 3D MATLAB inclut un ensemble de fonctions (fichiers .m) Plusieurs
fonctions prédéfinies pour analyser et représenter des données MATLAB peut être intégré avec du code C ou FORTRAN ; 2
MATLAB MATLAB signifie MAT MATrix rix LAB LABoratory. oratory. C’est un logiciel de calcul
numérique créé en 1984. Il permet de façon interactive de faire des calculs
matriciels; de simuler des systèmes; d’analyser des données; de visualiser les résultats en 2D et 3D MATLAB inclut un ensemble de fonctions (fichiers .m) Plusieurs
fonctions prédéfinies pour analyser et représenter des données MATLAB peut être intégré avec du code C ou FORTRAN ; 2
MATLAB En MATLAB, il existe deux modes de fonctionnement : mode interactif : MATLAB exécute les instructions au fur et à mesure qu’elles sont données par l’utilisateur
mode exécutif : MATLAB exécute ligne par ligne un
en angage
cr
programme
ans un c er .m
Fichiers
.m : ce sont des des programme programmess ( en langage langage MATLAB MATLAB
Fichiers
.dat : ce sont des fichiers de données en langage MATLAB
(écrits par l’utilisateur) ;
Un programme programme est une suite suite d’instru d’instruction ctionss Les
instructions instructions contiennent des opérateurs, opérateurs, des mots-clefs mots-clefs ou des fonctions
3
Démarrer MATLAB cliquer sur l’icône
Matlab sur le bureau ou dans le groupe
Matlab du menu Démarrer/Programmes. voici ce que vous devez voir apparaître
4
Se repérer dans l’environnement de travail de MATLAB dossier travail
fenêtre de commande ou espace de travail
Données
Les
instructions sont exécutées au fur et à mesure qu’elles sont entrées par l ’utilisateur Historique des commandes
soit
sous forme de séquences d’expressions ou scripts enregistrées dans des fichiers-texte appelés m-files et exécutées depuis la fenêtre de commande ; 5
Commandes système
pwd : nom du répertoire courant
cd : changer de répertoire
dir, ls : contenu du répertoire courant
mkdir : créer un nouveau répertoire
delete : effacer un fichier
copyfile :
copier un fichier
6
Aide en ligne sous MATLAB INSTRUCTION HELP
help " nom de la fonction " donne des renseignements sur l'utilisation de la fonction. Exemple Tapez
: help cos >> COS Cosine. COS(X) is the cosine of the elements of X.
Tapez
: y= cos(pi) >>cos(pi) y= -1 7
Variables utilisées par MATLAB(1) 1. Variables spéciales Tapez : eps % (l’erreur de la machine (epsilon) ) >> ans = 2.2204e-16 Tapez
Tapez
: i ou j
>> i = 0 + 1.0000 i
realmax % ( le plus grand nombre positif ) >> realmax
Tapez
= 1.7977e+308
realmin % (le plus petit nombre positif ) >> realmin =
2.2251e-308
Remarque : En MATLAB il n’y a pas d’instructions pour déclarer
une variable. Une nouvelle variable est définie en donnant son nom 8 et sa valeur numérique
Variables utilisées par MATLAB(2) 2. Scalaire : une matrice 1x1 :s=8
Tapez
% nombre réel positif
>> s = 8 Tapez
: s = 2.5 + i*8.06
% nombre complexe
>> s = 2.5000 + 8.0600i Tapez >> s
: s’
% son conjugué complexe
= 2.5000 - 8.0600i 9
Variables utilisées par MATLAB(3) 3. vecteurs et matrices Tapez :
A = [1 2 3 4]
% vecteur ligne
>> A 1 Tapez
2 3
4
: A = [1 ; 2 ; 3 ; 4]
% vecteur colonne
>> A = 1 2 3 4 Tapez
: A (4)
% on accède à la composante 4
>> ans 4
10
Variables utilisées par MATLAB(4) Tapez
: A = [1 2 3 ; 6 5 7] % matrice 2x3
>> A 1 6 Tapez
2 3 5 7
: size(A)
% dimensions de la matrice A
>> ans 2 3 Tapez :
A’
% matrice transposé de A
>> ans 1 2 3
6 5 7
11
Variables utilisées par MATLAB (5) 4. Matrices prédéfinies Matrice identité : Tapez
eye( nlin ,ncol)
: Id = eye( 2,2) % matrice identité d’ordre 2
>> 1 0 0 1 Matrice Unité : Tapez :
ones(nlin ,ncol) (tous les éléments valent 1)
unite = ones( 2,2)
>> unite 1 1
1 1
12
Variables utilisées par MATLAB (6) Matrice nulle : Tapez
zeros( nlin,ncol)
: Id = zeros( 2,2)
>> Id 0
0
Matrice aléatoire randn(nlin,ncol) (moyenne =0, écart type =1)
Tapez
: y = randn( 1000,1)
% matrice remplie % aléatoirement
13
Fonctions mathématiques dans MATLAB (1) Fonction trigonométriques sin : sinus cos : cosinus tan : tangente asin : sinus inverse (arcsin)
acos : cosinus inverse (arccos) atan : tangente inverse (arctan) asinh : sinus hyperbolique inverse
sinh
: sinus hyperbolique (sh) cosh : cosinus hyperbolique (ch) acosh : cosinus hyperbolique inverse tanh : tangente hyperbolique (th) atanh : tangente hyperbolique inverse
14
Fonctions mathématiques dans MATLAB (2) Fonction mathématiques de base
exp : exponentielle
log10 : log
logarithme base 10
: logarithme base e
sqrt
: racine carrée
abs : valeur absolue, module (nb. complexe)
real : partie réelle
imag
: partie imaginaire
angle: argument (nb. complexe)
round: arrondir
15
Fonctions portant sur les Matrices (1)
det(A) : renvoie le déterminant de la matrice carrée A
eig(A) : renvoi les valeurs propre (eigenvalues) de la matrice carrée A
inv(A) : renvoie l’inverse de la matrice carrée A
trace(A) : renvoie trace de la matrice carrée A
rank(A)
: renvoie le rang de la matrice carrée A
16
Fonctions portant sur les Matrices (2) norm(A)
: norme 2 de la matrice A
norm(A,2) : même chose que norm(A) ρ AA tels que T
A
2
=
,
= i = 1, n
norm(A, 1) : norme 1 de la matrice A n
A 1 norm(A, inf)
=
max j
∑a
ij
i =1
: norme infini de la matrice A n
A
∞
=
max i
∑a
ij
j =1
17
Manipulation de matrices Extraction de sous -matrices A
( 2 , 5 ) Extraction d’un élément
A
(: , 5 )
A
(1: 3 , 5) Extraction d’une sous colonne
A
(1,:)
Extraction d’une colonne
Extraction d’une ligne
diag(A) Extraction de la diagonale
18
Polynômes sous MATLAB Les polynômes dans MATLAB sont décrits par des vecteurs lignes dont les éléments sont égaux aux coefficients par puissance décroissante. Par exemple, pour entrer le polynôme P(x) = x3 + 4x2 + 2x+ 3, Tapez
P = [1 4 2 3].
Ce polynôme peut être évalué en utilisant la commande po yva .
Par exemple pour calculer le polynôme P en x =2, on écrit : polyval(P,2)
roots(P) racines de P polyval(P,x) évaluation de P en x conv(P1,P2)
multiplication polynomiale
deconv(P1,P2)
division polynomiale 19
Opérateurs arithmétiques (1) Matlab peut effectuer plusieurs opérations entre matrices. Les opérations fondamentales peuvent être partagées en deux catégories
1) Opérations matricielles Les opérations matricielles usuelles sont définies par : + - * / ^
:a
on
ij
ij
A - B : soustraction ⇒ [aij − bij ]
A*B : multiplication⇒ [∑ aik * bkj ] k
A/ B : division
⇒ [ A * B 1 ] −
A^ 3 : puissance ⇒ A * A * A
seulement pour matrices carrées 20
Opérateurs arithmétiques (2) 2) Opérations élément par élément Pour exécuter des opérations entre matrices élément par élément il faut faire précéder l’opérateur d’un point « . » Les opérateurs élément par élément sont donc :
.*
./
.^
A .* B : multiplication terme à terme ⇒ [aij * bij ] A ./ B : division terme à terme
⇒ aij / bij
A .^ 3 : puissance terme à terme ⇒ a ij3 21
Opérateurs logiques et de relation Opérateurs de comparaison
== ~= < > >= <=
égal à (x==y) différent de (x~=y) strictement plus petit que (x y) plus grand ou égal à (x >= y) plus petit ou égal à (x <= y)
Opérateurs logique
& | ~
et logique (x & y) ou logique (x |y) non logique (~y)
22
Exercices Exercice 1
1 − 5 On note : u1 = 2 , u 2 = 2 , 3 1 Définir ces vecteurs sous matlab
− 1 u3 = − 3 7
a cu er u1 + u2 , u1 + 3u2 − 5u3 u3 / 3 Calculer u1 2 u2 1 u3 ∞
Exercice 2 2 3 , A = On note : 6 5
2 3 4 B = 7 6 5 2 8 7
Définir ces matrices sous matlab Calculer les déterminants, inverses, valeurs propres et vecteurs propres des matrices A et B
23
Génération Automatique de nombres Pour générer systématiquement des vecteurs on utilise l'opérateur " : " 1. composantes espacées linéairement d ’un pas constant syntaxe : c = début : pas : Tapez
fin
: C= 0 : 0.5 : 3
>> C = 0
0.5000
1.000
1.500
2.000
2.5000
3.000
2. composantes espacées logarithmiquement (10 debut à 10fin ) syntaxe : c = logspace(log 10(début), log10(fin), Npoints) 24
Formats d’affichage Il existe plusieurs types de format d'affichage dans Matlab. Voici ceux que l'on utilise le plus couramment.
format short % format par défaut à cinq chiffres
format long
format short e % format court à 5 chiffres avec
% format long à 15 chiffres
notation en virgule flottante
format long e % format long à 15 chiffres avec notation en virgule flottante 25
Formats d ’affichage Exemple
Suivant le format pi, s’écrira : .
format long
format short e
format long e
3.14159265358979 3.1416e+000 3.141592653589793e+000 26
Commandes Graphiques(1) Les données peuvent être tracées en utilisant des commandes graphiques puissantes.
plot(x,y) : tracé cartésien en coordonnées X-Y normal affiche le vecteur y en fonction du vecteur x
semilogx(x,y) :
tracé en échelle semi-logarithmique (abscisse)
semilogy(x,y) :
tracé en échelle semi-logarithmique (ordonnée)
stairs(x,y) :
graphe en escalier
stem(x,y) : graphe de raie
bar(x,y)
: graphe en barres 27
Commandes Graphiques (2) title(’ …’) :
titre du graphique
xlabel(’…’) : légende pour l’abscisse
ylabel(’ …’) :
légende pour l’ordonnée
axis([ xmin xmax ymin ymax]) : définit l’échelle des axes x et y
ginput(n) : renvoie la position de la souris sur un graphique pour acquérir les coordonnées intéressantes
gtext(‘…’) : placement de texte avec la souris
grid
: met une grille au graphe 28
Exemple On veut tracer la courbe suivante : Tapez le
programme suivant :
X= 0 : 10 : 100 ; Y= [ 4 4 6 9 13 17 22 30 37 51 56 ] ;
figure(1) plot( X,Y); xlabel(‘Ouverture de la vanne (%)’); ylabel(‘Débit en m3/h’); title(‘Caractéristique d’une vanne’); grid
29
Graphique multiple On peut tracer plusieurs graphiques dans la même fenêtre en utilisant l’instruction subplot pour diviser la fenêtre en plusieurs parties
diviser la fenêtre en deux parties (2 x 1)
diviser la fenêtre en deux parties (1 x 2)
30
Exemple On veut tracer la courbe suivante : Tapez
le programme suivant :
X= 0 : 10 : 100 ; = 4 4
9 13 17 22 30 37 51 5
;
figure(2) subplot(211), plot(X); subplot(212) plot(Y) ; grid
31
Exemple
figure1
figure2 32
Commandes Graphiques Exercice 1 visualiser
la courbe suivante :
>> x = 0:pi/100:2*pi; >> y = s n(x); >> plot(x,y) >> xlabel(‘temps’); ylabel(‘amplitude’)
33
Commandes Graphiques Exercice 2 visualiser les courbes
: >> x = 0:pi/100:2*pi; >> y = sin(x); p o
x,y
>> xlabel(‘temps’); ylabel(‘amplitude’) >> t = 0:pi/100:2*pi; >> y1=sin(t); >> y2=sin(t+pi/2); >> plot(t,y1,t,y2) >> grid on
34
Commandes Graphiques Exercice 3 visualiser les courbes
:
>> plot(sin(pi*(0:0.2:10))) >> p ot(s n(p *(0:0.2:10)),’g’) >> hold on >> plot(sin(pi*(0:0.2:10)),’*r’) >> title(‘cosinus’); >> xlabel(‘temps’); ylabel(‘amplitude’) 35
Contrôle de la fenêtre d’écran
home : Repositionne le curseur en haut de l'écran
load: Récupérer des variables du disque
save: Sauver des variables sur disque c ear:
acer es onct ons et es var a es
Exemple
Effacer l'écran en tapant home
Retaper y et vous aurez le résultat affiché
Enlevez de la mémoire les résultats en tapant clear
Retapez y et vous aurez : ??? Undefined function or variable y. 36
Scripts et fonction On définit la fonction myfunction de la manière suivante: function [vars1 ,…, varsn,]=myfunction(vare1,…,varen)
séquence d’instructions vars1,…,varsn
sont les variables de sortie de la fonction
vare1,…,varen
sont les variables d’entrée de la fonction
séquence d’instructions est le corps de la fonction
Il est impératif que la fonction ayant pour nom myfunction soit enregistrée dans un fichier de nom myfunction.m On l'utilise sous Matlab en tapant : [vars1 ,…, varsn,] = myfunction(vare1,…,varen)
37
Boucle FOR : parcours d’un intervalle La boucle for parcourt un vecteur d'indices et effectue a chaque pas toutes les instructions délimitées par l'instruction end. Syntaxe : for indice = born_inf : born_sup
’ Où :
end
born_inf est une variable appelée l’indice de la boucle born_sup et
born_sup sont deux constantes réelles (appelées
paramètres de la boucle)
séquence d’instructions est le traitement à effectuer pour les
valeurs d’indices variant entre born_inf et born_sup avec un incrément de 1
38
Boucle WHILE : tant que … faire La boucle while effectue une suite de commandes jusqu'a ce qu'une condition soit satisfaite. Syntaxe : While expression logique
’ Où :
end
expression logique est une expression dont le résultat peut être
vrai ou faux séquence d’instruction est le traitement à effectuer tant que expression logique est vraie
39
Instruction conditionnée : IF L’instruction conditionné a la forma suivante Syntaxe : if expression logique
séquence d’instructions 1 séquence d’instructions 2 Où : end
expression logique est une expression dont le résultat peut être
vrai ou faux séquence d’instruction 1 est le traitement à effectuer si expression logique est vraie
séquence d’instruction 2 est le traitement à effectuer si expression logique est faux
40
Instruction conditionnée : switch Une autre alternative à l’utilisation d’une séquence d’instructions conditionnées pour effectuer un choix. Il s’agit de l’instruction switch Syntaxe : switch expression (une variable numérique ou une variable chaîne de caractères)
case va ue1 instructions 1 (instructions effectuées si expression=value1) case value2 instructions 2 ... otherwise instructions 3 end
41