COURS D'INITIATION AU LOGICIEL MATLAB
E. DIOP
Département de mathématiques, UFR Sciences et Technologies
Université de Thiès, Thiès, Sénégal
Année académique 2014-2015
1
Introduction à MATLAB
MAT LAB
MATrix LABoratory
Données numériques.
Matlab ne permet pas les calculs formels sauf exception.
Obligation d’affecter une valeur numérique à toutes les
variables. 1
Démarrage
Démarrage :: apparition
apparition de
dela
lafenêtre
fenêtrede
decommande
commande
Indication du Sélection du
répertoire répertoire
courant
Espace
mémoire
Fenêtre de commande
Historique
des
commandes 2
1
Commandes
Commandesde
debase
base
Intro : lance une introduction à MATLAB
Demo : programme de démonstration
helpwin : fenêtre d’aide en ligne donnant
une liste des fonctions par thème
helpdesk : aide HTML plus détaillée (nécessite netscape ou autre)
cd : indique le répertoire de travail courant
dir : indique ce que contient le répertoire de travail courant
who : indique la liste des variables dans le workspace
quit : quitter MATLAB
3
Aide
Aidedans
dansMATLAB
MATLAB::helpwin
helpwin
Fenêtre d’aide en ligne
Sélection
du thème
2
Aide
Aidedans
dansMATLAB
MATLAB::help
help
La commande HELP Fournit de l’aide sur une commande ou une fonction
(en particulier, cela donne la syntaxe de la fonction)
» help eye
EYE Identity matrix.
EYE(N) is the N-by-N identity matrix.
EYE(M,N) or EYE([M,N]) is an M-by-N matrix with 1's on the diagonal
and zeros elsewhere.
EYE(SIZE(A)) is the same size as A.
See also ONES, ZEROS, RAND, RANDN.
»
La commande LOOKFOR (lente !)
» lookfor identity
Fournit la liste des fonctions ou commandes EYE Identity matrix.
contenant le mot-clé spécifié dans la SPEYE Sparse identity matrix.
première ligne de leur texte d’aide » 5
Utilisation
Utilisationde
deMATLAB
MATLAB::deux
deuxpossibilités
possibilités
Fenêtre de commande
A utiliser pour des calculs nécessitant peu d’instructions
6
3
Fenêtre de l’éditeur de programme
Permet d’écrire un programme entier, de le sauvegarder
puis de le faire exécuter.
Création d’un fichier [Link]
Puis sauvegarder le fichier (ex: nom-fichier.m)
dans le REPERTOIRE DE TRAVAIL. 7
Impératif : Indiquez le répertoire de travail dans lequel les
programmes ont été sauvegardés.
Procédure : Sélectionnez le répertoire courant
4
Exécution d’un fichier [Link]
Il suffit de taper le nom
du fichier (sans l’extension.m)
sur la fenêtre de commande
Type
Type de
de données
données
Type Matrice Scalaire = Matrice carrée d’ordre 1
Vecteur = Matrice ligne ou colonne
Matrice = Matrice (n,m)
Remarque : Pas de déclaration de type
On peut modifier la dimension d’une variable
au cours d’un programme
Attention : MATLAB fait la distinction
entre minuscule et majuscule
10
5
Type
Type de
de données
données
Constantes pré-définies :
pi 3.14159265358979
Inf infini
eps (précision de 2.2204 10-16
calcul)
NaN (Not a Number)
i ou j Imaginaire pur
11
Actions
Actions élémentaires
élémentaires
>> x = 3
Affectation d’une valeur x=
3
>>
Si la ligne de commande est suivie d’un point >> y = 5;
virgule, la confirmation n’est pas affichée. >>
Liste des variables : WHO >> who
Your variables are:
x y
>>
12
6
Actions
Actions élémentaires
élémentaires
CLEAR >> clear x
>> who
Si on veut effacer une variable, on utilise la Your variables are:
commande clear suivie du nom de la variable. y
>>
Si on veut effacer toutes les variables
>> clear all
>> x
??? Undefined function or variable 'x'.
>>
Les commentaires
Une ligne précédée d’un symbole % sera considérée comme commentaire
13
et ne sera pas exécutée.
7
Chapitre 2 :
Scalaires, Vecteurs et Matrices
Opérations arithmétiques
Respect des priorités usuelles des opérations {+,-,*,/)
(associativité, commutativité ,…)
Existence d’une division à gauche : A\B.
B est divisé par A.
Elévation à une puissance : symbole ^
Exemple : » 3^4
Ans =
81
» 9^(1/2)
Ans =
3 2
1
VECTEURS
Saisie d’un vecteur
» y = [4; 5; 6;]
» x = [1 2 3] y=
Vecteur x= Vecteur 4
ligne 123 colonne 5
6
Construction d’un vecteur à partir d’un autre
»w = [x 4 5] »z = [3; y; 7;]
w= w=
12345 3
4
5
6
7 3
Construction d’un vecteur
On connaît la valeur initiale, la valeur finale et le pas
X = [ Vinitiale : Pas : Vfinale ]
»x = [0:2:8]
x=
02468
On peut omettre le pas. Il est égal à 1 par défaut.
On peut omettre les crochets.
2
Construction d’un vecteur
On connaît la valeur initiale, la valeur finale et le
nombre de points
X = linspace( Vinitiale, Vfinale, nbpoints)
»x = linspace (0,8,5)
x=
02468
On peut omettre le nombre de points.
Il est égal à 100 par défaut.
X = logspace( debut, fin, nbpoints)
-> Valeurs entre 10debut et 10fin
5
Taille d’un vecteur
»x = [0:2:8];
»size(x)
Ans =
Size(x) donne les dimensions de la variable x. 15
»length(x)
length(x) donne la longueur de la variable x. Ans =
5
Transposé d’un vecteur Récupération d’une composante
Soit le vecteur x = [8 0 5]
»x = [0:2:4];
»y = x’ x (1) = 8
Ans =
0 x ([1 3]) = 8 5
2
4
Les indices d’un tableau
commencent à 1 6
3
Opérations sur les vecteurs
Avec un scalaire : addition, soustraction,
multiplication, division.
L’addition et la soustraction de vecteurs de mêmes
dimensions se font élément par élément.
»x = [1 2 3]; »x + y
»y = [0 2 2]; Ans =
145
Le produit d’un vecteur colonne de taille n par un vecteur
Ligne de taille m donne une matrice (n,m).
» x'*y
»x = [1 2 3];
»y = [0 2 2]; ans =
0 2 2
0 4 4
0 6 6
En précédant d’un point les opérateurs, les calculs se
font élément par élément
» x.*y
»x = [1 2 3]; ans =
»y = [0 2 2];
0 4 6
8
4
Fonctions particulières
sum(x) : Somme des composantes du vecteur
prod(x) : Produit des composantes du vecteur
sqrt(x) : Racine carrée des composantes du vecteur
mean(x) : Moyenne des composantes du vecteur
log(x) : Logarithme népérien des composantes du vecteur
sin(x) : Sinus des composantes du vecteur
exp(x) : Exponentielle des composantes du vecteur 9
MATRICES
Saisie d’une matrice
»w = [0 1 2
»w = [0 1 2; 3 4 5] 3 4 5]
w= ou w=
012 012
345 345
Taille d’une matrice
»size(w) On peut aussi écrire :
Ans = [m,n] = Size(w)
23 m : nombre de ligne
n : nombre de colonne
10
5
Extraction d’un élément de matrice
»w = [0 1 2; 3 4 5] Élément de la 2éme ligne et
w= de la 1ère colonne
012
345 W(2,1) = 3
Extraction d’une partie de matrice (colonne ou ligne)
Première ligne : L1 = W(1,:)
Indique que l’on
prend toutes les
Seconde colonne : C2 = W(:,2) colonnes
11
Opérations arithmétiques
L’addition et la soustraction de matrices de mêmes
dimensions se font élément par élément.
La multiplication
A*B = a1 a2 * b1 b2 = a1b1+a2b3 a1b2+a2b4
a3 a4 b3 b4 a3b1+a4b3 a3b2+a4b4
A.*B = a1b1 a2b2
a3b3 a4b4
La division
A/B correspond au calcul A*B-1
12
6
Passage d’une matrice à un vecteur
»w = [0 1 2; 3 4 5] Vecteur colonne
w=
012 v = W(:) ;
345
Matrices particulières
»M = 100
Matrice identité M = eye (3) ; 010
001
Matrice nulle M = zeros (2,3) ; »M = 000
000
13
Matrices particulières
»M = 111
Matrice unité M = ones (2,3) ; 111
Matrice aléatoire M = rand (2,2) ; »M = 0.45 0.82
0.01 0.44
Fonctions particulières
sum(M) ou sum(M,1) : Somme des éléments des colonnes de la matrice
sum(M,2) : Somme des éléments des lignes de la matrice
Idem pour les fonctions prod(M) et mean (M), produit et moyenne.
14
7
Fonctions particulières
Sqrt(M) : racine carrée des éléments de la matrice
det(M) : déterminant de la matrice
inv(M) : inverse de la matrice
15
NOMBRES COMPLEXES
L’imaginaire pur est noté i ou j.
» z = 4+3j
Ecriture d’un nombre complexe z=
4.0000 + 3.0000i
Conjugué d’un nombre complexe » x = conj(z)
x=
4.0000 - 3.0000i
Parties réelle et imaginaire » a = real(z) » b = imag(z)
d’un nombre complexe a= b=
4 3
16
8
Module d’un nombre complexe » r = abs(z)
r=
5
r = abs (z) ;
Argument d’un nombre complexe » theta = angle(z)
theta =
theta = angle (z) ; 0.6435
L’argument est donné en radians.
17
9
Chapitre 3 :
Chaînes de caractère
Saisie d’une chaîne de caractère
>> s= ‘ bonjour '
S = ‘ expression ’ ; s=
bonjour
Les caractères sont mémorisés dans des vecteurs par
des codes allant de 0 à 255. Parmi eux, on peut
distinguer :
•Les caractères de contrôles (de 0 à 31 et 127)
•Les numériques
•Les alphabétiques (a, b, .. et A, B, ..)
•Les spéciaux (&, $, %, ..)
1
Conversion de chaîne à code ASCII
>> r = double('ABC')
r = double( ‘ A ’ ) ; r=
65 66 67
Conversion de code ASCII à chaîne
r = char ( [65 66 67] ) ; >> r=char([65 66 67])
r=
ABC
r = char(65) est équivalent à r = ‘ A ’ ;
Conversion de nombre en chaîne
>> r = num2str(2)
r = num2str( 2 ) ; r=2
>> isstr(r)
ans =1
Conversion d’une chaîne en nombre
>> r = str2num('2')
r = str2num( ‘2’ ) ; r=2
>> isstr(r)
ans =0
2
Comparaison entre chaînes
ind = strcmp ( s1,s2 ) ; Égal à 0 si différent
Affichage de chaînes sur la table de commande
disp(‘message’); ou disp([‘phrase1’,’phrase2’]);
>> disp(['la valeur de z est :',num2str(z),' mètres'])
la valeur de z est :3 mètres
5
3
Chapitre 4
Sauvegarde de données
Ouverture de fichiers
Sauvegarde de fichiers de données ou fichiers MAT
save
Exemple
» t = [1 2 3]
On définit une variable t t=
123
On veut la sauvegarder dans un fichier [Link]
Save nom-fichier variable » save vart t
On peut effacer toutes les variables de la mémoire
Clear all »t
??? Undefined function or variable t
1
Chargement de fichiers de données ou fichiers MAT
load
Si on désire rappeler la variable t » load vart
load nom-fichier
Conséquence : la variable est, de nouveau, connue.
»t
t=
123
S’il existe plusieurs variables
Clear variable » t = [1 2 3]; x = 1; y = 2*x;
» clear t x
Ouverture ou création de fichiers
f=fopen('[Link]','w') Création d’un fichier
Ouverture en écriture
f=fopen('[Link]',‘r+') Ouverture d’un fichier
existant
Ouverture en lecture et écriture
Lecture et écriture dans des fichiers
n=fwrite(f,a,’type’)
Type = char, int8,
n=fread(f,a,’type’) double, …
2
Fermeture de fichiers
v=fclose(f);
Exemple : création d’un fichier contenant un vecteur
>> b
>> a=1:10; b =1
>> f=fopen('[Link]','w'); 2
>> nb=fwrite(f,a) 3
4
nb =10 5
>> v=fclose(f); 6
>> f=fopen('[Link]','r'); 7
>> b=fread(f) 8
>> v=fclose(f); 9
10
Lecture de variables dans un fichier
s = fscanf(f,’format’, taille);
Cette commande permet de lire la ligne courante du fichier f, dans
un format pré-défini (chaine de caractère, entier, …).
Si une taille est indiquée, cela donne le nombre d’éléments qui
seront lus.
%f nombre décimal (float)
Exemples
de format : %d entier
%s chaîne de caractère
%10.5f nombre pouvant avoir 10 chiffres avant la virgule
et 5 chiffres après
Remarque : la commande fgetl permet de passer une ligne dans la lecture
du fichier.
3
Chapitre 5 :
Graphes 2D et 3D
Graphes à deux dimensions
La fonction plot
Elle permet de tracer des graphiques xy.
Plot(x,y) trace y en fonction de x,
x et y étant de mêmes dimensions.
Création automatique de figure.
Si une figure existe déjà, elle trace le graphe
sur cette figure.
Pour créer une autre figure, utiliser la fonction
Figure.
1
Exemple de programmation
X = -pi : 0.1 : pi ; Création de la fonction à calculer
Y = sin(X);
plot(X,Y) Tracé de la fonction
grid Mise en place d’un quadrillage
xlabel (‘ angle’) Légende de l’axe x
ylabel (‘ sin(x) ‘) Légende de l’axe y
title (‘ y = f(x) ’) Titre de la figure
3
Résultat de la programmation
y=f(x)
1
0.8
0.6
0.4
0.2
sin(x)
-0.2
-0.4
-0.6
-0.8
-1
-4 -3 -2 -1 0 1 2 3 4
angle
2
Pour tracer deux courbes sur la même figure
Utilisation de la fonction hold on Plot(x,y,’style1’)
Hold on
Plot(x,-y,’style2’)
Style de représentation : chaîne de trois caractères
couleurs symboles Tracés continus
y jaune . Point - trait continu
m magenta ° cercle : pointillés
c cyan x croix -. trait-point
r rouge + plus -- trait-trait
g vert * étoiles
b bleu d diamants
w blanc p pentagramme
k noir < triangle 5
Exemple
y=f(x) et z=-f(x)
1
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-4 -3 -2 -1 0 1 2 3 4
angle
3
Pour tracer deux courbes dans la même fenêtre
y=f(x)
1
Utilisation de la fonction subplot
0.5
-0.5 Subplot(m,n,p)
-1
-4 -2 0 2 4
z = - f(x)
1
0.5 Découpe la fenêtre graphique en
0
m lignes et n colonnes et trace la
-0.5
courbe dans la case n°p.
-1
-4 -2 0 2 4
Pour fermer les fenêtres graphiques Close all7
Graphes à trois
dimensions
Courbes 3D Plot3(x,y,z)
Hélice circulaire
t = -3*pi:pi/10:3*pi ; 20
x = 4*sin(t) ; 10
y =4*cos(t) ; 0
z
z =2*t ; -10
plot3(x,y,z) -20
4
2 4
0 2
0
-2
-2
y -4 -4
x
4
Surfaces mesh(X,Y,Z) ou surf(X,Y,Z)
Exemple d’une parabole de type : z = x2 + y2.
x = -10:0.8:10; Création des vecteurs x et y.
y = x;
Création de deux matrices X
[X,Y]=meshgrid(x,y); et Y qui définissent le
domaine de calcul de Z.
Z = X.^2 + Y.^2; Calcul de Z.
mesh(X,Y,Z) Représentation en « fil de
fer » de la surface
9
10
5
Autres fonctions : meshc, meshz, surf, surfc et surfl.
contour3(X,Y,Z) ou contour(X,Y,Z)
11
Volumes [x,y,z]=cylinder(R,n)
R : variation du rayon
N : nombre de points sur la
circonférence pour un rayon donné.
Exemple
t = -2*pi:pi/10:2*pi ; Courbe génératrice de
r = sin(t).*exp(-0.1*t)+2 ; la surface de révolution.
[x,y,z]=cylinder(r,20); Calcul des coordonnées des
points de la surface
surf(x,y,z)
Tracé du
volume
12
6
13
Fonctions particulières
zoom
colorbar : apparition de la palette de couleurs.
On peut changer le style de la palette de couleur.
Il existe : hsv, gray, hot, cool, copper, pink.
La commande est : colormap(cool).
14
7
rotation
15
8
Chapitre 6
Instructions : For, While et IF
La boucle FOR
Syntaxe
For compteur = début : pas : fin
Instructions
end
Exemple
% tableau des carrés des n premiers entiers
naturels
N=10 ;
X=[];
for i = 1:N
X=[X i^2]; »x =
end 1 4 9 16 25 36 49 64 41
100
1
La boucle WHILE
Syntaxe
while conditions
Instructions
end
Exemple
% valeur de n, le plus petit entier tel que
n^2<x
n=0 ;
X=15;
while n^2 < X
n = n+1 ;
»n =
end
4
Opérateurs relationnels et logiques
< Inférieur à
> Supérieur à
<= Inférieur ou égal
à
Opérateurs relationnels
>= Supérieur ou
égal à
== Égal à
~= Différent de
& et
Opérateurs logiques | ou
~ non
2
L’instruction IF
Syntaxe
if conditions if conditions
Instructions Instructions
else elseif conditions
Instructions Instructions
end Else
Instructions
end
Exemple
n = input(‘entrer un nombre entier :’)
if rem(n,2) = = 0
disp(‘nombre pair’)
else
disp(‘nombre impair’)
end
Fonctions particulières
input
Variable = input(‘message’) Valeur numérique
Chaîne = input(‘message’,‘s’) Chaîne de
caractère
3
Fonctions particulières
disp
disp(‘message’) Affiche sur la fenêtre de
commande le message
disp([‘phrase1’,’phrase2’])
pause Fait une pause dans un
programme.
Pour poursuivre le calcul, il faut
appuyer sur une touche du clavier.
num2str Fonction qui convertit une donnée
numérique en chaîne de caractère
Exemple Soit x = 2, le résultat d’un calcul que l’on
désire afficher.
» x=2;
» disp([ 'la valeur de x est :‘ , x ])
la valeur de x est :
» disp(['la valeur de x est :‘ , num2str(x) ])
la valeur de x est :2
»
str2num Fonction qui convertit une chaîne de
caractère en donnée numérique
4
L’instruction switch
Syntaxe Avec une valeur numérique
switch variable
case valeur 1
Instructions
case valeur 2
Instructions
case {valeur 3, valeur 4}
Instructions
otherwise
Instructions
end
L’instruction switch
Syntaxe Avec une chaîne de caractère
switch chaine
case ‘expression 1’
Instructions
case ‘expression 2’
Instructions
case {‘expression 3’, ‘expression 4’}
Instructions
otherwise
Instructions
end
5
Chapitre 7
Scripts et fonctions
Script (syntaxe : fichier.m)
Contient des suites d’instructions qui seront exécutées
une à une
exemple
% ceci est un exemple de Mfile
X= 0 : 10;
Y=randn(1,10); Le programme est
Z=2*Y; exécuté et les deux
Plot(X,Y) courbes sont tracées
Figure
Plot(X,Z)
1
fonction Sous-programme contenant des variables locales
La première ligne commence toujours par :
Function [s1,s2] = nomfonction(e1,e2,e3)
Paramètres de sortie Paramètres d’entrée
Si un calcul est répété souvent au cours d’un
programme, on crée une fonction qui a, pour
paramètre de sortie, le résultat escompté.
Les fichiers de fonctions sont stockés sous un
nom identique à celui de la fonction. 3
Exemple :
Function y = eff (x)
% pour un vecteur, eff(x) donne la valeur efficace
% pour un matrice, eff(x) donne un vecteur contenant
% la valeur efficace de chaque colonne
[m,n]=size(x)
if m = =1
m=n;
end
y=sqrt(sum(x.*x)/m) ;
2
Si on appelle cette fonction dans un autre programme :
Vecteur1 = 5*randn(1,10);
Vecteur2= 2*randn(1,10);
% calcul de la valeur efficace
valeff1= eff (vecteur1) ;
valeff2 = eff( vecteur2) ;
Si des variables intermédiaires sont utilisées dans
la fonction, elles seront inconnues dans la table de
commande.
Ce sont des variables locales.