Vous êtes sur la page 1sur 87

Universit Paris-Dauphine

Dpartement MIDO
Introduction MATLAB
-8
-6
-4
-2
0
2
4
6
8
-10
-5
0
5
10
-0.5
0
0.5
1
Andr Casadevall
mars 2013
p. 2 AJ.Casadevall - mars 2013
Table des matires
1 MATLAB 7
1.1 Quest ce que MATLAB? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Une session MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Lancer, quitter MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.2 Fonctions et commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.3 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.4 Aide en ligne - help - lookfor . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.5 Liste des functions usuelles - helpwin . . . . . . . . . . . . . . . . . . . . . . 9
1.2.6 Interaction avec le systme dexploitation . . . . . . . . . . . . . . . . . . . . 9
2 Les objets" de MATLAB - Listes, vecteurs, tableaux 11
2.1 Objets et classes de MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Valeurs littrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2 Tableaux de nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Caractres et chanes de caractres . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Cellules et tableaux de cellules - cell array . . . . . . . . . . . . . . . . . . 14
2.3 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.1 Identicateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.2 Aectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.3 Espace de travail - workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Listes et vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4.1 Construction de listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4.2 Construction de vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.3 Nombre dlments dune liste ou dun vecteur - length . . . . . . . . . . . . 20
2.4.4 Norme vectorielle - norm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.5 Accs aux lments dune liste ou dun vecteur - end . . . . . . . . . . . . . . 21
2.4.6 Extraction de sous-listes ou de sous-vecteurs . . . . . . . . . . . . . . . . . . 22
2.5 Tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5.1 Construction de tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5.2 Accs aux lments dun tableau - end . . . . . . . . . . . . . . . . . . . . . 23
2.5.3 Lignes et colonnes dun tableau . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5.4 Sous-tableaux et blocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5.5 Fonction repmat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5.6 lments diagonaux dun tableau - diag . . . . . . . . . . . . . . . . . . . . . 26
2.5.7 Fonction tril et triu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5.8 Tableaux particuliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.6 Fonctions oprant sur les lments dun tableau . . . . . . . . . . . . . . . . . . . . . 28
TABLE DES MATIRES
2.6.1 Fonctions sum et prod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.6.2 Fonctions max et min . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.6.3 Fonctions statistiques - mean et cov . . . . . . . . . . . . . . . . . . . . . . . 30
2.6.4 Fonctions abs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.6.5 Norme matricielle dun tableau - norm . . . . . . . . . . . . . . . . . . . . . . 31
2.6.6 Rorganisation des lments dun tableau - reshape et sort . . . . . . . . . 31
3 Expressions, scripts et fonctions 33
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Oprations de MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2.1 Oprateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2.2 Oprateurs et oprations sur les tableaux . . . . . . . . . . . . . . . . . . . . 35
3.2.3 Oprations boolennes - Tableaux boolens . . . . . . . . . . . . . . . . . . . 36
3.2.4 valuation des expressions - ans . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3 Scripts et m-les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.1 Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.2 Cration de m-les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.3 Excution dun m-le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.3.4 lments dcriture de m-les . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4 Structures algorithmiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.1 Slection - if...end et if...else...end . . . . . . . . . . . . . . . . . . . . 42
3.4.2 Rptition - for...end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4.3 Itration conditionnelle - while...end . . . . . . . . . . . . . . . . . . . . . . 45
3.4.4 Construction switch...case . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4.5 Traitement des erreurs - try...catch...end . . . . . . . . . . . . . . . . . . 46
3.5 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.1 m-Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.5.2 Fonctions Inline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.5.3 Fonctions anonymes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.5.4 Fonctions argument dautres fonctions . . . . . . . . . . . . . . . . . . . . . . 50
3.5.5 Commandes et fonctions nargin et nargout . . . . . . . . . . . . . . . . . . 51
3.6 Optimisation des calculs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4 MATLAB et lanalyse numrique 53
4.1 Fonctions numriques" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2 Polynmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3 Calcul matriciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.4 Fonctions dune variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4.1 Recherche de minimum - fmin . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4.2 Recherche de racines - fzero . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4.3 Intgration - trapz, quad et quad8 . . . . . . . . . . . . . . . . . . . . . . . . 57
5 Courbes et surfaces 59
5.1 Fentres graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.1.1 Cration dune fentre - fonctions figure et gcf . . . . . . . . . . . . . . . . 59
5.1.2 Attributs dune fentre - get . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2 Courbes du plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2.1 La fonction plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2.2 Tracer dans une ou plusieurs fentres . . . . . . . . . . . . . . . . . . . . . . . 62
5.2.3 La commande print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
p. 4 AJ.Casadevall - mars 2013
TABLE DES MATIRES
5.2.4 Courbes paramtriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.2.5 Personnalisation des axes et de la plotting-box . . . . . . . . . . . . . . . . . 65
5.2.6 Autres fonctions de trac de courbes planes . . . . . . . . . . . . . . . . . . . 68
5.3 Courbes de lespace - Fonction plot3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.4 Surfaces de lespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.4.1 Modlisation du domaine [x
0
, x
1
] [y
0
, y
1
] - fonction meshgrid . . . . . . . . 69
5.4.2 Trac de la surface - fonctions mesh et surf . . . . . . . . . . . . . . . . . . 69
5.4.3 Surfaces et courbes de niveau . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6 Importation et exportation de donnes 73
6.1 Retour sur les commandes save et load . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.1.1 Enregistrement de la valeur de tableaux dans un chier-text - save . . . . . 73
6.1.2 Retrouver la valeur dun tableau - load . . . . . . . . . . . . . . . . . . . . . 74
6.2 Lire et crire dans un chier Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.2.1 Importer des valeurs dun chier Excel - xlsread . . . . . . . . . . . . . . . 75
6.2.2 Exporter des valeurs vers une feuille Excel - xlswrite . . . . . . . . . . . . 76
7 Matrices-test 77
8 Exemples 81
Index 85
AJ.Casadevall - mars 2013 p.5
TABLE DES MATIRES
p. 6 AJ.Casadevall - mars 2013
1
MATLAB
1.1 Quest ce que MATLAB? . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Une session MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Lancer, quitter MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.2 Fonctions et commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.3 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.4 Aide en ligne - help - lookfor . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.5 Liste des functions usuelles - helpwin . . . . . . . . . . . . . . . . . . . . . 9
1.2.6 Interaction avec le systme dexploitation . . . . . . . . . . . . . . . . . . . 9
1.1 Quest ce que MATLAB?
MATLAB pour MATtrix LABoratory, est une application qui a t conue an de fournir un
environnement de calcul matriciel simple, ecace, interactif et portable, permettant la mise en
uvre des algorithmes dvelopps dans le cadre des projets linpack et eispack.
MATLAB est constitu dun noyau relativement rduit, capable dinterprter puis dvaluer les
expressions numriques matricielles qui lui sont adresses :
soit directement au clavier depuis une fentre de commande ;
soit sous forme de squences dexpressions ou scripts enregistres dans des chiers-texte
appels m-les (ou chiers .m) et excutes depuis la fentre de commande ;
soit plus rarement sous forme de chiers binaires appels mex-les (ou chiers .mex) gnrs
partir dun compilateur C ou fortran.
Ce noyau est complt par une bibliothque de fonctions prdnies, trs souvent sous forme de
chiers m-les, et regroups en paquetages ou toolboxes. A ct des toolboxes requises local et matlab,
il est possible dajouter des toolboxes spciques tel ou tel problme mathmatique, Optimization
Toolbox, Signal Processing Toolbox par exemple, ou encore des toolboxes cres par lutilisateur lui-
mme. Un systme de chemin daccs ou path permet de prciser la liste des rpertoires dans lesquels
MATLAB trouvera les dirents chiers m-les utiliss.
1.2 Une session MATLAB
Linterface-utilisateur de MATLAB varie lgrement en fonction de la version de MATLAB et du
type de machine utilise. Elle est constitu dune fentre de commande qui peut tre complte par
une barre de menu et pour les versions les plus rcentes de plusieurs fentres, achant lhistorique
de la session, la structure des rpertoires accessibles par MATLAB. . . Avant la premire utilisation
de MATLAB, il est vivement recommand (cest mme indispensable dans le cas dune installation
CHAPITRE 1. MATLAB
en rseau) que chaque utilisateur cre un rpertoire de travail, tpMatlab par exemple, o il pourra
enregistrer ses chiers. Lors de la premire session, le chemin daccs ce rpertoire sera ajout
aux chemins daccs connus de MATLAB (MATLABPATH), soit en utilisant litem Set Path du menu
File, soit en tapant la commande addpath suivie du chemin daccs au rpertoire de travail.
1.2.1 Lancer, quitter MATLAB
Dans lenvironnement unix, pour laner MATLAB on tape la commande matlab sur la ligne
de commande active ; dans les environnements Windows ou MacOs, il sut de cliquer sur licne de
lapplication. La fentre de commande de MATLAB souvre alors et on tape les commandes ou les
expressions valuer droite du prompt . Le processus dvaluation est dclench par la frappe
de la touche <enter>.
A chaque dbut session, lutilisateur indiquera MATLAB que le rpertoire myMatlab dni
prcdemment est le rpertoire de travail de la session en tapant la commande cd suivie du chemin
daccs au rpertoire myMatlab.
On quitte MATLAB en tapant quit dans la fentre de commande ou en slectionnant quit dans
le menu File de la barre de menu pour les versions Windows ou MacOs.
1.2.2 Fonctions et commandes
Certaines fonctions de MATLAB ne calculent pas de valeur numrique ou vectorielle, mais ef-
fectuent une action sur lenvironnement de la session en cours. Ces fonctions sont alors appeles
commandes. Elles sont caractrises par le fait que leurs arguments (lorsquils existent) ne sont
pas placs entre parenthses. Les autres fonctions se comportent de faon assez semblable aux
fonctions mathmatiques et la valeur quelles calculent peut tre aecte une variable.
Dans de nombreux cas, fonctions ou commandes peuvent tre appeles avec des arguments qui
dirent soit par leur nombre, soit par leur nature (nombre, vecteur, matrice, . . . ). Le traitement
eectu dpend alors du nombre et de la nature des arguments. Par exemple, nous verrons plus
loin que la fonction diag appele avec une matrice pour argument retourne le vecteur constitu par
sa diagonale principale ou vecteur diagonal. Lorsque cette mme fonction est appele avec un
vecteur pour argument, elle retourne la matrice diagonale dont le vecteur-diagonal est le vecteur
donn. Aussi une fonction ou une commande nest pas caractrise par son seul nom, mais par sa
signature cest dire lensemble constitu de son nom et de la liste des types de ses paramtres.
1.2.3 Historique
MATLAB conserve lhistorique des commandes. Il est donc possible laides des ches du clavier
de remonter dans la liste des instructions dj entres pour retrouver une instruction particulire
pour la rutiliser et ventuellement la modier avant de lutiliser nouveau.
1.2.4 Aide en ligne - help - lookfor
MATLAB comporte un trs grand nombre doprateurs, de commandes et de fonctions. Tous ne
seront pas dcrits dans ce document dautant quune aide en ligne ecace peut tre utilise. On
peut taper les commandes suivantes :
help permet dobtenir laide de laide et donne une liste thmatique ;
help nom de fonction donne la dnition de la fonction dsigne et des exemples dutilisation;
lookfor sujet donne une liste des rubriques de laide en ligne en relation avec le sujet indiqu.
Exemple 1.2.1 :
>> lookfor min
minus.m: %- Minus.
uminus.m: %- Unary minus.
REALMIN Smallest positive floating point number.
p. 8 AJ.Casadevall - mars 2013
1.2. UNE SESSION MATLAB
FLOOR Round towards minus infinity.
MIN Smallest component.
FMIN Minimize function of one variable.
FMINS Minimize function of several variables.
COLMMD Column minimum degree permutation.
GMRES Generalized Minimum Residual Method.
QMR Quasi-Minimal Residual Method
SYMMMD Symmetric minimum degree permutation.
. . .
>> help fmin
FMIN Minimize function of one variable.
X = FMIN(F,x1,x2) attempts to return a value of x which is a local
minimizer of F(x) in the interval x1 < x < x2. F is a string
containing the name of the objective function to be minimized.
X = FMIN(F,x1,x2,OPTIONS) uses a vector of control parameters.
If OPTIONS(1) is positive, intermediate steps in the solution are
displayed; the default is OPTIONS(1) = 0. OPTIONS(2) is the termination
tolerance for x; the default is 1.e-4. OPTIONS(14) is the maximum
number of function evaluations; the default is OPTIONS(14) = 500.
The other components of OPTIONS are not used as input control
parameters by FMIN. For more information, see FOPTIONS.
X = FMIN(F,x1,x2,OPTIONS,P1,P2,...) provides for additional
arguments which are passed to the objective function, F(X,P1,P2,...)
[X,OPTIONS] = FMIN(...) returns a count of the number of steps
taken in OPTIONS(10).
Examples
fmin(cos,3,4) computes pi to a few decimal places.
fmin(cos,3,4,[1,1.e-12]) displays the steps taken
to compute pi to about 12 decimal places.
See also FMINS.
1.2.5 Liste des functions usuelles - helpwin
On obtient la liste des fonction MATLAB usuelles en classes par thme en tapant helpwin :
helpwin elfun ache la liste des fonctions mathmatiques lmentaires,
helpwin specfun ache la liste des fonctions mathmatiques avances,
helpwin elmat ache la liste des fonctions matricielles lmentaires,
1.2.6 Interaction avec le systme dexploitation
Les commandes et fonctions suivantes permettent MATLAB dinteragir avec le systme dex-
ploitation de la machine sur laquelle il est utilis :
addpath path : ajoute le chemin daccs (path) la liste des chemins daccs connus de
MATLAB (MATLABPATH) ;
cd ou pwd : ache le chemin daccs au rpertoire de travail actuel ;
cd path : xe le rpertoire de chemin daccs path comme repertoire de travail ;
AJ.Casadevall - mars 2013 p.9
CHAPITRE 1. MATLAB
dir ou ls : ache le contenu du rpertoire de travail actuel ;
delete : eace le chier spci (peut tre utilise sous forme de fonction sous la forme :
delete(nomDeFichier)) ;
mkdir path : cre le repertoire de chemin daccs path ;
rmpath path : supprime le chemin daccs (path) du (MATLABPATH) ;
isdir (path ) : fonction boolenne qui retourne 1 si le chemin daccs (path) est celui dun
rpertoire, 0 sinon;
filesep : variable dont la valeur est celle du symbole sparateur de lignes (dpend du systme
dexploitation de la machine utilise) ;
p. 10 AJ.Casadevall - mars 2013
2
Les objets" de MATLAB - Listes,
vecteurs, tableaux
2.1 Objets et classes de MATLAB . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Valeurs littrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2 Tableaux de nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Caractres et chanes de caractres . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.4 Cellules et tableaux de cellules - cell array . . . . . . . . . . . . . . . . . 14
2.3 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.1 Identicateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.2 Aectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.3 Espace de travail - workspace . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Listes et vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4.1 Construction de listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4.2 Construction de vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.3 Nombre dlments dune liste ou dun vecteur - length . . . . . . . . . . . 20
2.4.4 Norme vectorielle - norm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.5 Accs aux lments dune liste ou dun vecteur - end . . . . . . . . . . . . . 21
2.4.6 Extraction de sous-listes ou de sous-vecteurs . . . . . . . . . . . . . . . . . 22
2.5 Tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5.1 Construction de tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5.2 Accs aux lments dun tableau - end . . . . . . . . . . . . . . . . . . . . 23
2.5.3 Lignes et colonnes dun tableau . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5.4 Sous-tableaux et blocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5.5 Fonction repmat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5.6 lments diagonaux dun tableau - diag . . . . . . . . . . . . . . . . . . . . 26
2.5.7 Fonction tril et triu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5.8 Tableaux particuliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.6 Fonctions oprant sur les lments dun tableau . . . . . . . . . . . . . . 28
2.6.1 Fonctions sum et prod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.6.2 Fonctions max et min . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.6.3 Fonctions statistiques - mean et cov . . . . . . . . . . . . . . . . . . . . . . 30
2.6.4 Fonctions abs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.6.5 Norme matricielle dun tableau - norm . . . . . . . . . . . . . . . . . . . . . 31
CHAPITRE 2. LES OBJETS" DE MATLAB - LISTES, VECTEURS, TABLEAUX
2.6.6 Rorganisation des lments dun tableau - reshape et sort . . . . . . . . 31
2.1 Objets et classes de MATLAB
Un objet est une abstraction du monde rel (pour MATLAB celui du calcul matriciel), qui
caractrise par :
des informations structures ou partie data (pour une matrice, par exemple, le nombre de
lignes, le nombre de colonnes, la valeur des coecients . . . ) ;
par un certain comportement dni par des mthodes (pour les matrices, la somme, le produit
. . . ).
La famille des objets possdant le mme type de structure pour la partie data et les mme mthodes
constitue une classe.
La classe fondamentale de MATLAB est la classe double qui modlise les tableaux mono ou
bi-dimensionnels de nombres rels ou complexes la norme IEEE (double array). Les nombres
rels ou complexes sont considrs comme des tableaux 11. Cette classe permet galement
de crer, mais de faon moins naturelle, des tableaux de dimension suprieure deux.
Les classes suivantes, sont moins frquemment utilises :
la classe char modlise les chanes de caractres (char array), un caractre unique tant
une chane de longueur un;
la classe sparse modlise les matrices creuses (i.e. dont la plupart des lments sont nuls)
relles ou complexes.
A partir de la version 5, MATLAB a propos des structures de donnes complmentaires souvent
utilises dans les objets prdnis de MATLAB, les objets graphiques en particulier :
la classe structure modlise les tableaux de structures" ; les structures" au sens de MATLAB
sont des structure de donnes assez semblables aux struct du C pour leur partie data du
moins (leurs composantes ou champs sont accessibles par une notation pointe) ;
la classe cell modlise les tableaux de cellules" ou cell array ; les cellules sont des sortes
de conteneurs dans les quels on peut plaer dautres objets ; on accde chacun par une
notation indice.
Dans les versions antrieures la version 7, MATLAB ne proposait ni valeurs prdnies
true ou false ni classe pour modliser les boolens. Depuis la version 7 MATLAB possde
une classe logical . Comme dans les versions antrieures, false est associ la valeur 0 ; true
est associ 1 et par extension, toute valeur non nulle.
En conclusion, toutes les classes de MATLAB sont associes des tableaux de structures de
donnes (au sens gnral) relativeent classiques.
2.2 Valeurs littrales
Le terme de valeur littrale dsigne les valeurs quon peut directement taper au clavier et qui
peuvent tre alors aectes une variable.
2.2.1 Nombres
Les nombres rels et entiers (MATLAB ne distingue pas entre rels et entiers) sont crits sous
les formes dcimales ou scientiques usuelles :
2, 3.214, 1.21E33.
Les nombres complexes sont crits sous la forme a + bi, comme dans 1+2i.
p. 12 AJ.Casadevall - mars 2013
2.2. VALEURS LITTRALES
Fonctions relatives aux nombres complexes
real et imag renvoient respectivement la partie relle et la partie imaginaire du complexe
pass en paramtre,
abs et arg renvoient respectivement le module et largument du complexe pass en paramtre,
conj renvoie le complexe conjugu du nombre complexe pass en paramtre.
2.2.2 Tableaux de nombres
Les tableaux de nombres rels ou complexes de dimension un ou deux suivent la syntaxe sui-
vante :
un tableau est dlimit par des crochets ;
les lments sont entrs ligne par ligne ;
les lments appartenant la mme ligne sont spars par des espaces (ou par des virgules) ;
les direntes lignes qui doivent possder le mme nombre dlments, sont spares
par des points-virgule.
Exemple 2.2.1 :
Les tableaux :
1 2 3 4
1
2
3
4
1 2 0 0
0 2 3 1
0 0 2 2
scrivent sous la forme [1 2 3 4 ] [1; 2; 3; 4 ] [1 2 0 0 ; 0 2 3 1 ; 0 0 2 2 ] :
>> [1 2 3 4 ]
ans =
1 2 3 4
>> [1; 2; 3; 4 ]
ans =
1
2
3
4
>> [1 2 0 0 ; 0 2 3 1 ; 0 0 2 2 ]
ans =
1 2 0 0
0 2 3 1
0 0 2 2
Lorsque toutes les lignes ne possdent pas le mme nombre dlments :
>> [1 2 ; 1 2 3]
??? Number of elements in each row must be the same.
Dans la suite, on appelera :
vecteur un tableau de format (n, 1) i.e. ne comportant quune seule colonne ;
liste ou encore vecteur-ligne un tableau de format (1, n) i.e. ne comportant quune seule
ligne ;
tableau un tableau au sens commun du terme, cest dire une structure organise en lignes
et colonnes.
AJ.Casadevall - mars 2013 p.13
CHAPITRE 2. LES OBJETS" DE MATLAB - LISTES, VECTEURS, TABLEAUX
2.2.3 Caractres et chanes de caractres
On crit les caractres et les chanes de caractres entre apostrophes : a, toto et
MATLAB les considre comme des chanes de caractres de longueur un.
Dautre part, pour MATLAB, chanes de caractres et liste de caractres sont des objets de
mme nature :
Exemple 2.2.2 :
La liste de caractres [a b c d e] est identique la chanes de caractres
[abcde] :
>>[a b c d e]
ans =
abcde
Mieux encore, abcde ; [abc de] est identique abcde :
>>[abc de]
ans =
abcde
Cet exemple donne un ide du rle des crochets [ ]. Les crochets sont le symbole de loprateur
de concatnation :
concatnation "en ligne" lorsque le sparateur est un espace ou une virgule ;
concatnation "en colonne" lorsque le sparateur est un point-virgule comme dans les tableaux
de nombres (il est alors ncessaire que les listes de nombres ou de caractres ainsi concatnes
possdent le mme nombre dlments).
Exemple 2.2.3 :
La liste de caractres [a b c d e] est identique la chanes de caractres
[abcde] :
>>[abc ; abcd]
??? All rows in the bracketed expression must have the same
number of columns.
2.2.4 Cellules et tableaux de cellules - cell array
Une cellule est un conteneur dans le quel on peut placer toute sorte dobjets : nombre, chane
de caractres, tableau et mme tableau de cellules. Les tableaux de cellules permettent regrouper
dans une mme structure des lments de nature trs dirente. La syntaxe des tableaux de cellules
est voisine de celle des tableaux usuels, les crochets tant remplacs par des accolades.
Exemple 2.2.4 :
>> {paul 4 ; vincent 7;... 0}
ans =
paul [4]
vincent [7]
... [0]
La manipulation des ces objets (sauf lorsquon on se limite des composants qui sont des nombres
ou des chanes de caractres) est un peu plus dlicate que celle des tableaux usuels et sera examine
dans un prochain chapitre.
p. 14 AJ.Casadevall - mars 2013
2.3. VARIABLES
2.3 Variables
Une caractristique de MATLAB est que les variables nont pas tre dclares, leur nature se
dduisant automatiquement de lobjet qui leur est aect (cf. exemple 2.3.4 - section 2.3.3).
2.3.1 Identicateurs
Les rgles de dnomination des variables sont trs classiques :
un identicateur dbute ncessairement par une lettre, ventuellement suivie de lettres, de
chires ou du caractre soulign (_) ;
sa longueur est infrieure ou gale 31 caractres ;
dans les identicateurs, les majuscules sont distingues des minuscules (on dit quils sont
case-sensitive).
Voici quelques identicateurs prdnis :
ans dsigne le rsultat de la dernire valuation;
pi est le nombre = 3, 416 ;
eps dsigne lepsilon-machine", cest dire le nombre inf{ 0 tels que 1 < 1 + } ;
inf dsigne linni au sens dune valuation du type (1/0) ;
NaN signie Not a Number - peut tre le rsultat dune valuation du type (0/0) ;
i,j - i et j reprsentent tous deux le nombre imaginaire unit (

1) - attention ne pas
utiliser i et j comme indices pour accder aux lments dun tableau;
realmin dsigne le petit nombre rel positif ;
realmax dsigne le plus grand nombre rel positif.
2.3.2 Aectation
Le symbole daectation de valeur une variable est le caractre =.
Exemple 2.3.1 :
>> a = [1 2 3 4 ]
a =
1 2 3 4
>> a = abc
a =
abc
Lexemple ci-dessus montre bien que dans MATLAB les variables ne sont ni dclares ni types.
2.3.3 Espace de travail - workspace
Lensemble des variables et les objets qui leur sont associes constitue lespace de travail ou
workspace de la session en cours. Le contenu de cet espace de travail va se modier tout au long
du droulement de la session et plusieurs commandes ou fonctions permettent de le grer de faon
ecace.
Les commande who et whos
Ces commandes (le nom dune commande est contrairement aux fonctions, suivi par la liste non
parenthse du ou des paramtres) donnent la liste des variables composant lespace de travail. La
commande who donne la liste des variables prsentes dans lespace de travail. La commande whos
retourne une information plus complte comportant pour chaque variable, la dimension du tableau
qui lui est associ, la quantit de mmoire utilise et la classe laquelle elle appartient.
Exemple 2.3.2 :
On dnit les variables a, b et c :
AJ.Casadevall - mars 2013 p.15
CHAPITRE 2. LES OBJETS" DE MATLAB - LISTES, VECTEURS, TABLEAUX
>> a = 2 ; b = azerty; c = [1 2 3 ; 5 3 4] ;
% la partie de la ligne qui suit le symbole % est un commentaire
% les points-virgules inhibent laffichage de la valeur des variables
>> who
Your variables are :
a b c
La commande whos donne une information plus complte :
whos
Name Size Bytes Class
a 1x1 8 double array
b 1x6 12 char array
c 2x3 48 double array
Grand total is 13 elements using 68 bytes
leaving 14918672 bytes of memory free
On peut galement appliquer whos avec pour argument une ou plusieurs variables :
Exemple 2.3.3 :
whos b c
Name Size Bytes Class
b 1x6 12 char array
c 2x3 48 double array
Grand total is 12 elements using 60 bytes
leaving 14918960 bytes of memory free.
Ce dernier exemple montre bien que le type dune variable est induit par sa valeur.
Exemple 2.3.4 :
On modie la valeur de la variable a son type est alors modi en consquence :
clear
a = [1 2 3 4 ] ; whos a
Name Size Bytes Class
a 1x4 32 double array
a = abc ; whos a
Name Size Bytes Class
a 1x3 32 char array
Les fonctions size, size( ,1) et size( ,2)
La fonction size retourne le couple (nl,nc) form du nombre de lignes nl et du nombre de
colonnes nc du tableau associ la variable donne comme comme argument.
Exemple 2.3.5 :
On suppose que lenvironnement de travail est constitu des trois variables a, b et c de lexemple
prcdent. La fonction size produit lachage suivant :
>> size(a)
ans =
1 1
>> size(b)
ans =
1 6
p. 16 AJ.Casadevall - mars 2013
2.3. VARIABLES
Pour accder plus facilement au nombre de lignes et au nombre de colonnes, on peut aecter la
valeur retourne par size un tableau deux lments [nl, nc] :
>> size(c)
>> [nl, nc] = size(c)
nl =
2
nc =
3
Enn size( ,1) et size( ,2) permettent laccs direct au nombre de lignes et au nombre de
colonnes dun tableau :
>> size(c,1)
ans =
2
>> size(c,2)
ans =
3
La fonction class
La fonction class retourne le nom de la classe laquelle appartient la variable donn comme
comme argument.
Exemple 2.3.6 :
Avec le mme espace de travail que dans lexemple prcdent, la fonction class produit lachage
suivant :
>> ca = class(a)
ca =
double
>> cb = class(b)
cb =
char
Les commandes save, load et clear - chiers.mat
Les commandes save, load et clear permettent dintervenir directement sur lenvironnement
de travail :
save permet de sauver tout ou partie de lespace de travail sous forme de chiers binaires
appels mat-les ou chiers .mat, plus prcisment :
save : enregistre la totalit de lespace de travail dans le chier matlab.mat ;
save nom de chier : lespace de travail est enregistr dans le chier nom de chier ;
save nom de variable . . . nom de variable : enregistre les variables indiques (et les objets
qui leurs sont associs) dans un chier .mat qui porte le nom de la premire variable ;
save nom de chier nom de variable . . . nom de variable : enregistre les variables dans le
chier dont le nom a t indiqu.
load permet dajouter le contenu dun chier .mat lespace de travail actuel ;
clear supprime une ou plusieurs variables (et les objets aux quelles elles font rfrence) de
lenvironnement de travail, plus prcisment :
clear sans argument, supprime toutes les variables de lespace de travail actuel ;
AJ.Casadevall - mars 2013 p.17
CHAPITRE 2. LES OBJETS" DE MATLAB - LISTES, VECTEURS, TABLEAUX
clear nom de variable . . . nom de variable : supprime les variables indiques de lespace de
travail.
Exemple 2.3.7 :
Cet exemple illustre les eets de save, load et clear. Tout dabord on dnit trois variables a, b
et c
>> a = 1; b = 2.5; c = hello
c =
hello
>> save a b
% les variables a et b sont enregistres dans le fichier a.mat cr
% dans le rpertoire de travail
>> clear a b
% les variables a et b sont supprimes comme le montre lvaluation
>> a, c
??? Undefined function or variable a
c =
hello
>> load a
% on copie les variables du fichier a.mat dans lespace de travail en cours
>>
>> x = a + b
x =
3.5
% les variables a et b sont bien prsentes
2.4 Listes et vecteurs
Les listes et les vecteurs sont des tableaux de nombres au format particulier : un vecteur est un
tableau qui ne comporte quune seule colonne ; une liste (ou vecteur-ligne) est un tableau qui ne
comporte quune seule ligne. MATLAB propose un certain nombre de fonctions qui en simplient
lusage.
2.4.1 Construction de listes
Valeurs littrales de type liste
Ainsi que nous lavons dj vu, on peut dnir la valeur dune liste en donnant la suite de ses
lments spars par des espaces (ou des virgules) ; la liste est dlimite par des crochets :
Exemple 2.4.1 :
>> l1 = [1 3 5 10 ] , l2 = [2, 4]
l1 =
1 3 5 10
l2 =
2 4
Constructeur de listes
Lexpression (v
i
: p : v
f
) cre une liste dont les lments constituent une progression arithm-
tique de valeur initiale v
i
, de pas p et dont tous les termes sont infrieurs ou gaux v
f
. Lorsque
la valeur du pas est omise comme dans lexpression (v
i
: v
f
), la valeur du pas est par dfaut xe
p. 18 AJ.Casadevall - mars 2013
2.4. LISTES ET VECTEURS
un.
Exemple 2.4.2 :
>> l2 = 1 : 4
l2 =
1 2 3 4
% le pas par dfaut vaut 1
>> l3 = 1 : 5.6
l3 =
1 2 3 4 5
(puisque 5.0000 + 1 est strictement suprieur 5.6)
>> l4 = 1.5 : 0.3 : 2.5
l4 =
1.5000 1.8000 2.1000 2.4000
(puisque 2.4000 + 0.3 est strictement suprieur 2.5)
Fonctions valeur liste
La fonction linspace(v
i
, v
f
, n) cre une liste de n nombres uniformment rpartis entre les
valeurs v
i
et v
f
; linspace(v
i
, v
f
, n) est quivalent
_
v
i
:
v
f
v
i
n 1
: v
f
_
.
La fonction ones(n) cre une liste de n lments tous gaux 1 ;
La fonction zeros(n) cre une liste de n lments tous gaux 0.
Exemple 2.4.3 :
>> l4 = linspace(0,5, 2, 4)
l4 =
0,5000 1.0000 1.5000 2.0000
Dans la suite (c.f. 2.5.8), on dcouvrira dautres fonctions qui permettent de construire des tableaux
de format (m, n) quelconque ; ces fonctions permettent en consquence la construction de listes et
de vecteurs particuliers.
2.4.2 Construction de vecteurs
Valeurs littrales de type vecteur
On peut dnir la valeur dun vecteur en tapant entre deux crochets la suite de ses lments
spares par des points-virgule comme on le voit dans lexemple suivant :
Exemple 2.4.4 :
>> v1 = [1 ; 3 ; 5 ]
v1 =
1
3
5
Transposition
Loprateur de transposition est not (ou . pour les listes et les vecteurs de nombres com-
plexes).
AJ.Casadevall - mars 2013 p.19
CHAPITRE 2. LES OBJETS" DE MATLAB - LISTES, VECTEURS, TABLEAUX
La transpose dune liste tant un vecteur, pour construire des vecteurs, on peut utiliser les
expressions et les fonctions vues pour les listes puis transposer le liste obtenue.
Exemple 2.4.5 :
>> v2 = [1 2 3]
v2 =
1
2
3
>> v3 = (1.5 : 0.3 : 2.5)
v3 =
1.5000
1.8000
2.1000
2.4000
On noubliera pas les parenthses ncessaires pour dlimiter le constructeur de liste.
2.4.3 Nombre dlments dune liste ou dun vecteur - length
La fonction size applique une liste ou un vecteur retourne, comme pour tous les tableaux,
le nombre de lignes et le nombre de colonnes de la liste ou du vecteur. Le nombre de ligne dune liste
est bien videmment un. La mme remarque vaut pour le nombre de colonnes dun vecteur. Aussi,
pour les listes et les vecteurs on utilise de prfrence la fonction length qui retourne le nombre
dlments ou longueur de la liste ou du vecteur.
Exemple 2.4.6 :
>> l = [1 2 3 4] ; length(l)
ans =
4
>> v = [5 6 7 8 9] ; length(v)
ans =
5
Remarque : !!!
Les exemples prcdents montrent que lon peut crire sur la mme ligne plusieurs expressions la
suite la condition de les sparer par une virgule ou un point-virgule. La dirence entre ces deux
sparateurs est que le rsultat de lvaluation dune expression suivie dun point-virgule
nest pas ach.
2.4.4 Norme vectorielle - norm
La notion de longueur synonyme de nombre dlments ne doit pas tre confondue avec la notion
mathmatique de norme vectorielle. Les fonctions suivantes permettent de calculer les normes
usuelles dun vecteur ou dun vecteur-ligne (ou liste) v de R
n
:
norm(v,p) =
_
n

k=1
|v
k
|
p
_
1/p
p. 20 AJ.Casadevall - mars 2013
2.4. LISTES ET VECTEURS
norm(v) = norm(v,2) =
_
n

k=1
(v
k
)
2
_
1/2
norm(v,inf) = max
k
|v
k
|.
Exemple 2.4.7 :
>> l = [1 1 1 1] ; v = l ; norm(v)
ans =
2
>> norm(l)
ans =
2
2.4.5 Accs aux lments dune liste ou dun vecteur - end
Soient s une liste ou un vecteur non-vide, et k un entier compris entre 1 et la longueur de la
liste ou du vecteur considr (1 k length(s)). On accde llment dindice k de la liste ou du
vecteur s par s(k), le premier lment de la liste ou du vecteur tant indic par 1. s(end) dsigne
llment de plus grand indice de la liste ou du vecteur.
Attention ne pas utiliser i ou j qui dsignent

1, pour indicer les lments dune liste ou dun
vecteur (c.f. 2.3.1).
Exemple 2.4.8 :
>> s = [1 3 5 8] ; s(1)
ans =
1
>> k = 3 ; s(k)
ans =
5
>> s(end)
ans =
8
Laccs en lecture un lment dindice ngatif ou dont la valeur est strictement
suprieure la longueur de la liste (ou du vecteur), conduit une erreur :
Exemple 2.4.9 :
>> s = [1 3 5] ; length(s)
ans =
3
>> s(4)
??? Index exceeds matrix dimensions.
Par contre, il est possible daecter une valeur un lment dune liste ou dun vecteur
dont lindice dpasse la longueur de la liste ou du vecteur. Comme le montre lexemple
suivant, les lments dont lindice est compris entre la longueur de la la liste (ou du vecteur) et
lindice donn sont aects de la valeur 0. La longueur de la liste (ou du vecteur) est alors modie
en consquence.
Exemple 2.4.10 :
AJ.Casadevall - mars 2013 p.21
CHAPITRE 2. LES OBJETS" DE MATLAB - LISTES, VECTEURS, TABLEAUX
>> s = [1 3 5] ; length(s)
ans =
3
>> s(6) = 6 ; s
s =
1 3 5 0 0 6
>> length(s)
ans =
6
2.4.6 Extraction de sous-listes ou de sous-vecteurs
Soient s une liste (ou un vecteur) non-vide et lst une liste dentiers dont la valeur est
comprise entre 1 et la longueur length(s) de la liste (ou du vecteur), alors s(lst) est la
liste (ou le vecteur) form par les lments de s dont lindice appartient lst.
Exemple 2.4.11 :
>> s = [1 3 5 0 0 6] ;
% on veut extraire de s la sous-liste forme des lments de rang impair
% on dfinit lst par :
lst = 1 : 2 : length(s) ; % on aurait aussi pu crire : lst = [1 3 5]
s(lst) =
1 5 0
2.5 Tableaux
2.5.1 Construction de tableaux
Valeurs littrales de type tableau
On a dj vu que pour dnir la valeur dun tableau (sauf pour les tableaux dordre 1), il sut
de concatner en colonne des listes de nombres de mme longueur :
Exemple 2.5.1 :
Le tableau
1 2 0 0
0 2 3 1
0 0 2 1
est dni par :
>> T = [1 2 0 0 ; 0 2 3 1 ; 0 0 2 1]
T =
1 2 0 0
0 2 3 1
0 0 2 1
Concatenation de tableaux - [ ]
Loprateur [ ] permet la concatnation de tableaux :
si les tableaux {T
k
}
k=1,2, ,n
possdent le mme nombre de lignes les expressions quiva-
lentes [T
1
, T
2
, , T
p
] ou [T
1
T
2
T
p
] crent un tableau :
qui a le mme nombre de lignes que les tableaux composants ;
p. 22 AJ.Casadevall - mars 2013
2.5. TABLEAUX
dont le nombre de colonnes est la somme des nombres de colonnes de chacun des tableaux
composants ;
qui est obtenu en concatnant en ligne" les tableaux composants.
si les tableaux T
k
ont le mme nombre de colonnes lexpression [T
1
; T
2
; ; T
p
] cre un
tableau :
qui a le mme nombre de colonnes que les tableaux composants ;
dont le nombre de lignes est la somme des nombres de lignes de chacun des tableaux
composants ;
qui est obtenu en concatnant en colonne" les tableaux composants.
Exemple 2.5.2 :
>>T1 = [1 2 ; 2 3]
T1 =
1 2
2 3
>>T2 = [3 4 ; 6 7]
T2 =
3 4
6 7
>> T3 = [T1 , T2] ou [T1 T2]
T3 =
1 2 3 4
2 3 6 7
>> T4 = [T1 ; T2]
T4 =
1 2
2 3
3 4
6 7
2.5.2 Accs aux lments dun tableau - end
Soient T un tableau, et l et k deux entiers tels que (1 l size(T,1)) et (1 k size(T,2)).
Alors T(l,k) dsigne llment de la ligne l et de la colonne k du tableau T.
Utilis comme indice de ligne, respectivement de colonne, end est gal la plus grande valeur
possible pour cet indice.
Attention ne pas utiliser i ou j qui dsignent

1, pour indicer les lments dun tableau (c.f.
2.3.1).
Exemple 2.5.3 :
>>T = [1 2 0 0 ; 0 2 3 1 ; 0 0 2 4]
T =
1 2 0 0
0 2 3 1
0 0 2 4
>> x = T(2, 3)
x =
3
>> x = T(2, end)
x =
AJ.Casadevall - mars 2013 p.23
CHAPITRE 2. LES OBJETS" DE MATLAB - LISTES, VECTEURS, TABLEAUX
1
>> x = T(end, end)
x =
4
Laccs en lecture un lment dont les indices seraient ngatifs ou dont la valeur serait
strictement suprieure au nombre de lignes ou au nombre de colonnes du tableau,
conduit une erreur :
Exemple 2.5.4 :
>>x = T(1,5)
??? Index exceeds matrix dimensions
Par contre, il est possible daecter une valeur un lment dun tableau dont les indices
dpassent le nombre de ligne pour le premier indice, le nombre de colonnes pour le second.
Comme le montre lexemple suivant, les lments du tableau dont les indices sont compris entre le
nombre de lignes et le nombre de colonnes, et les indices spcis, prennent la valeur 0.
Exemple 2.5.5 :
>> T = [1 2 0 0 ; 0 2 3 1 ; 0 0 2 1]
T =
1 2 0 0
0 2 3 1
0 0 2 1
>> T(1,5) = 2
T =
1 2 0 0 2
0 2 3 1 0
0 0 2 1 0
2.5.3 Lignes et colonnes dun tableau
Soient T un tableau et l un entier compris entre 1 et la nombre de lignes du tableau. Alors
T(l,:) dsigne la ligne l de T et T(end,:) dsigne la dernire ligne de T . De mme, si k est un
entier compris entre 1 et le nombre de colonnes de T, T(:,k) dsigne la colonne k de T et T(:,end)
dsigne la dernire colonne de T .
Exemple 2.5.6 :
>> T
1 2 0 0 2
0 2 3 1 0
0 0 2 1 0
>> x = T(2, :)
x =
0 2 3 1 0
>> y = T(:, 3)
y =
0
3
2
p. 24 AJ.Casadevall - mars 2013
2.5. TABLEAUX
2.5.4 Sous-tableaux et blocs
Soient T un tableau, l une liste dentiers compris entre 1 et le nombre de lignes de T, et k une
liste dentiers compris entre 1 et le nombre de colonnes de T. Alors T(l, k) est le sous-tableau de
T form par les lments de T dont lindice de ligne appartient l et lindice de colonne appartient
k.
Exemple 2.5.7 :
>> T = [1 2 3 4 5 ; 2 2 3 1 0 ; 3 0 2 1 1]
1 2 3 4 5
2 2 3 1 0
3 0 2 1 1
>> l = [1 2]; k = [1 3 5];
>> T1 = T(l, k)
T1 =
1 3 5
2 3 0
T(l, k) est un bloc lorsque les listes l et k sont constitues dentiers conscutifs, ce qui est le cas
de T2 dans lexemple suivant :
Exemple 2.5.8 :
>> T = [1 2 3 4 5 ; 2 2 3 1 0 ; 3 0 2 1 1]
1 2 3 4 5
2 2 3 1 0
3 0 2 1 1
>> l = [1 2]; k = [1 2 3];
>> T2 = T(l, k)
T2 =
1 3 3
2 2 3
2.5.5 Fonction repmat
La fonction repmat ralise lopration inverse. Elle permet la cration dun "grand" tableau
dont chaque bloc est identique au tableau pass comme premier argument ; les deux autres argu-
ments reprsentent respectivement le nombre de fois o la matrice-argument est rpte suivant les
colonnes, respectivement suivant les lignes :
Exemple 2.5.9 :
>> T = [ 1 3 ; 2 4]
1 2
3 4
>> T1 = repmat( T, 2, 3)
T1 =
1 2 1 2 1 2
3 4 3 4 3 4
1 2 1 2 1 2
3 4 3 4 3 4
AJ.Casadevall - mars 2013 p.25
CHAPITRE 2. LES OBJETS" DE MATLAB - LISTES, VECTEURS, TABLEAUX
2.5.6 lments diagonaux dun tableau - diag
Soit T un tableau, diag(T) retourne le vecteur (vecteur diagonal de T) form des lments
de la diagonale "principale" de T, cest dire les lments de la forme T(p,p) o p est un en-
tier compris entre 1 et min(size(T,1), size(T,2)) ; remarquons quil nest pas ncessaire que le
tableau T soit carr.
Plus gnralement pour tout entier k compris entre size(T,1) et size(T,2), on appelle diago-
nale de rang k lensemble des lments de T de la forme T(p, p+k) o :
1 k size(T,2) et 1 p min(size(T,1), size(T,2) k) (sur-diagonale de rang k)
k = 0 et 1 p min(size(T,1), size(T,2)) (diagonale principale)
size(T,1) k 1 et 1 k p min(size(T,1), size(T,2) k) (sous-diagonale de
rang k-
La fonction diag(T,k) retourne le vecteur form des lments de la diagonale de rang k de T.
Exemple 2.5.10 :
>> T = [ 1 2 3 4 5 ; 2 2 0 0 2 ;
3 2 3 1 0 ; 4 0 2 1 1]
1 2 3 4 5
2 2 0 0 2
3 2 3 1 0
4 0 2 1 1
>> v = diag(T) % diagonale "principale"
v =
1
2
3
1
>> v = diag(T,1) % sur-diagonale de rang 1
v =
2
0
1
1
>> v = diag(T,-2) % sous-diagonale de rang 2
v =
3
0
2.5.7 Fonction tril et triu
Les fonctions tril et triu extraient respectivement les termes situs sur et au-dessous de la
diagonale de rang k, et les termes situs sur et au-dessus de la diagonale de rang k.
p. 26 AJ.Casadevall - mars 2013
2.5. TABLEAUX
Exemple 2.5.11 :
Avec le mme tableau T que dans lexemple 2.5.10 ci-dessus :
>> tril(T,1)
ans =
1 2 0 0 0
2 2 0 0 0
3 2 3 1 0
4 0 2 1 1
>> triu(T,1)
ans =
0 2 3 4 5
0 0 0 0 2
0 0 0 1 0
0 0 0 0 1
Remarque : !!!
tril(t,0) scrit aussi tril(t), de mme, triu(t,0) scrit aussi triu(t).
2.5.8 Tableaux particuliers
Les fonction ci-dessous permettent de construire des tableaux correspondant aux matrices
usuelles : identit, matrice nulle, ainsi qu des matrices-test trs utiles pour valider des algorithmes
danalyse matricielle (voir aussi la fonction gallery) .
Fonction Argument Rsultat
diag(s) un vecteur ou une liste s matrice diagonale dont la diagonale est
la liste ou le vecteur s
vander(s) un vecteur ou une liste s matrice de Vandermonde dordre
length(s) engendre par s
eye(n) un entier n matrice identit dordre n I
n
eye(n,m) deux entiers n et m sous-matrice (n, m) de I
max(n,m)
(1)
hilb(n) un entier n matrice de Hilbert dordre n : h
i,j
= 1/(i + j 1)
invhilb(n) un entier n inverse de la matrice de Hilbert dordre n
magic(n) un entier n carr magique dordre n
ones(n) un entier n matrice A carre dordre n telle que a
i,j
= 1
ones(n,m) deux entiers n et m matrice A de format (n, m) telle que a
i,j
= 1
pascal(n) un entier n matrice de Pascal dordre n
rand(n) un entier n matrice alatoire carre dordre n
zeros(n) un entier n matrice nulle dordre n
zeros(n,m) deux entiers n et m matrice nulle de format (n, m) (1)
zeros(n,1) un entier n vecteur nul de R
n
wilkinson(n) un entier n matrice de Wilkinson dordre n
(1) Les fonctions eye, ones et zeros peuvent tre appeles avec deux arguments entiers n et m. Le
rsultat est alors une matrice de format n m forme des n premires lignes et des m premires
AJ.Casadevall - mars 2013 p.27
CHAPITRE 2. LES OBJETS" DE MATLAB - LISTES, VECTEURS, TABLEAUX
colonnes de la matrice carre du mme type dordre max(n, m).
Dautre part, on peut remarquer que la fonction diag retourne une valeur trs dirente suivant le
type de son argument (cette proprit est appele polymorphisme) :
lorsque largument est un tableau, diag retourne le vecteur diagonal du tableau;
lorsque largument est un vecteur, diag retourne une matrice diagonale dont le vecteur dia-
gonal est largument avec lequel diag est appel .
Ce petit exemple illustre les deux aspects de la fonction diag :
Exemple 2.5.12 :
>> T =
1 2 3
1 2 1
0 1 3
>> d = diag(T)) % d est le vecteur diagonal de T
d =
1
2
3
>> D = diag(diag(T)) % D est le tableau diagonal dont la diagonale est celle de T
D =
1 0 0
0 2 0
0 0 3
2.6 Fonctions oprant sur les lments dun tableau
Les fonctions prsentes ci-dessous eectuent des oprations arithmtiques itrativement sur les
lments dune liste ou dun vecteur. Appliques un tableau, elles eectuent ces mmes oprations
sur les colonnes du tableau (sauf pour cov). Ce sont des fonctions extrmement ecaces (c.f. 3.6).
2.6.1 Fonctions sum et prod
Applique une liste ou un vecteur, la fonction sum (respectivement prod) calcule la somme
(respectivement le produit) des lments la liste ou du vecteur.
Applique un tableau la fonction sum (respectivement prod) retourne une liste dont chacun
des lments est la somme (respectivement le produit) des lments de chaque colonne.
Exemple 2.6.1 :
>> s = [5 2 3 1 7] ; p = prod(s) , s = sum(s)
p =
210
s =
18
>> T = vander([1 2 3])
T =
1 1 1
4 2 1
9 3 1
p. 28 AJ.Casadevall - mars 2013
2.6. FONCTIONS OPRANT SUR LES LMENTS DUN TABLEAU
>> p = prod(T)
p =
36 6 1
>> s = sum(T)
s =
14 6 3
2.6.2 Fonctions max et min
Applique une liste ou un vecteur, la fonction max (respectivement min) dtermine le plus
grand lment (respectivement le plus petit lment) de la liste ou du vecteur et ventuelle-
ment la position de cet lment dans la liste ou le vecteur.
Applique un tableau la fonction max (respectivement min) retourne la liste des plus grands
(respectivement plus petit lments) de chaque colonne.
Exemple 2.6.2 :
>> s = [5 2 3 1 7] ; [ma, ind] = max(s)
ma =
7
ind =
5
>> [mi, ind] = min(s)
mi =
1
ind =
4
Exemple 2.6.3 :
>> T = magic(3) , [ma, ind] = max(T)
T =
8 1 6
3 5 7
4 9 2
ma =
8 9 7
ind =
1 3 2
Pour obtenir la valeur de llment maximal du tableau, il sut dapplique deux fois la fonction
max :
Exemple 2.6.4 :
>> m = max(max(T))
m =
9
AJ.Casadevall - mars 2013 p.29
CHAPITRE 2. LES OBJETS" DE MATLAB - LISTES, VECTEURS, TABLEAUX
2.6.3 Fonctions statistiques - mean et cov
Applique une liste ou un vecteur, la fonction mean dtermine la moyenne des lment de
la liste ou du vecteur.
Applique une liste ou un vecteur, cov dtermine la variance des lment de la liste ou du
vecteur.
Exemple 2.6.5 :
>> s = [5 2 3 1 7] ; m = mean(s)
m =
3.6000
>> c = cov(s)
c =
5.8000
Applique un tableau la fonction mean retourne la liste des moyennes des lments de chaque
colonne.
Applique un tableau o chaque ligne reprsente une observation et o chaque colonne
correspond une variable, la fonction cov retourne la matrice de covariance des lments du
tableau.
Exemple 2.6.6 :
>>T = pascal(3) , m = mean(t)
T =
1 1 1
1 2 3
1 3 6
m =
1.0000 2.0000 3.3333
On obtient la moyenne des lments du tableau par :
>> m = mean(mean(T))
m =
2.1111
Pour la covariance :
>>C = cov(T)
C =
0 0 0
0 1.0000 2.5000
0 2.5000 6.3333
Pour obtenir la variance de chaque colonne sous forme de vecteur-ligne :
>> c = diag(cov(T))
c =
0 1.0000 6.3333
2.6.4 Fonctions abs
La fonction abs (nous le verrons dune faon plus dtaille dans le prochain chapitre) applique
a un tableau retourne un tableau de mme format dont les lments sont les valeurs absolues des
lments du tableau argument.
p. 30 AJ.Casadevall - mars 2013
2.6. FONCTIONS OPRANT SUR LES LMENTS DUN TABLEAU
Exemple 2.6.7 :
>>
T =
1 -1 1
-1 -2 3
1 3 -6
>> U = abs(T)
U =
1 1 1
1 2 3
1 3 6
2.6.5 Norme matricielle dun tableau - norm
Tout comme les normes vectorielles le font pour les vecteurs ou les listes, les normes matriciel-
les donnent une mesure de la taille des lments dun tableau. La fonction norm permet le calcul
des normes matricielles usuelles dun tableau. Si T dsigne un tableau de format (m, n) :
norm(T) retourne la plus grande valeur propre de TT
T
;
norm(T,1) = max
k
m

l=1
|T(l, k)| = max(sum(abs(T)))
norm(T, 2) = norm(T)
norm(T, inf) = max
l
n

k=1
|T(l, k)| = max(sum(abs(T)))
norm(T,fro) =

_
n

k=1
m

l=1
T(l, k)
2
= sqrt(sum(diag(T*T))) (norme de Frobenius).
Dans les dnitions ci-dessus, dans T*T par exemple, * est loprateur MATLAB du produit ma-
triciel.
2.6.6 Rorganisation des lments dun tableau - reshape et sort
Soit T un tableau de format (m, n). Si mn = p q, reshape(T,p,q) retourne un tableau de
format (p, q) dont les lments sont pris dans T en le parcourant colonne par colonne ; si mn = pq,
reshape(T,p,q) retourne une erreur.
Exemple 2.6.8 :
>> T =
1 4 7 10
2 5 8 11
3 6 9 12
>> U = reshape(A,2,6)
U =
1 3 5 7 9 11
2 4 6 8 10 12
Si u est un vecteur ou une ligne, la fonction sort ordonne les lments de u par ordre croissant :
AJ.Casadevall - mars 2013 p.31
CHAPITRE 2. LES OBJETS" DE MATLAB - LISTES, VECTEURS, TABLEAUX
Exemple 2.6.9 :
>> u = [4 2 1 7 3 ] ;
>> c = sort(u))
c =
1 2 3 4 7
Si T est un tableau, la fonction sort(T, dim) ordonne par ordre croissant :
les colonnes de T si la variable dim a la valeur 1 ;
les lignes de T si la variable dim a la valeur 1.
Exemple 2.6.10 :
>> T = [3 1 7 ; 2 8 5]
T =
3 1 7
2 8 5
>> U = sort(T, 1) % on ordonne le tableau T selon les colonnes
U =
2 1 5
3 8 7
>> V= sort(T, 2) % on ordonne le tableau T selon les lignes
V =
1 3 7
2 5 8
La fonction issorted teste si une colonne, une ligne (plus gnralement un vecteur ou une
ligne) est ordonne :
>> issorted(U(: , 1))
ans =
1 % la premire colonne de U est ordonne
>> issorted(U(2 , :))
ans =
0 % la deuxime ligne de U nest pas ordonne
p. 32 AJ.Casadevall - mars 2013
3
Expressions, scripts et fonctions
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Oprations de MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2.1 Oprateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2.2 Oprateurs et oprations sur les tableaux . . . . . . . . . . . . . . . . . . . 35
3.2.3 Oprations boolennes - Tableaux boolens . . . . . . . . . . . . . . . . . . 36
3.2.4 valuation des expressions - ans . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3 Scripts et m-les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.1 Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.2 Cration de m-les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.3 Excution dun m-le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.3.4 lments dcriture de m-les . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4 Structures algorithmiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.1 Slection - if...end et if...else...end . . . . . . . . . . . . . . . . . . . 42
3.4.2 Rptition - for...end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4.3 Itration conditionnelle - while...end . . . . . . . . . . . . . . . . . . . . . 45
3.4.4 Construction switch...case . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4.5 Traitement des erreurs - try...catch...end . . . . . . . . . . . . . . . . . 46
3.5 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.1 m-Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.5.2 Fonctions Inline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.5.3 Fonctions anonymes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.5.4 Fonctions argument dautres fonctions . . . . . . . . . . . . . . . . . . . . . 50
3.5.5 Commandes et fonctions nargin et nargout . . . . . . . . . . . . . . . . . 51
3.6 Optimisation des calculs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.1 Introduction
Un des avantages de MATLAB est de proposer une syntaxe trs simple pour traduire les calculs
matriciels. Les oprateurs sont reprsents par les mmes symboles ( une ou deux exceptions prs)
que ceux utiliss communment en algbre linaire. Mieux, ils oprent directement sur les tableaux
(par exemple, il nest pas ncessaire dcrire des boucles pour eectuer la somme ou ou le produit
de deux matrices).
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET FONCTIONS
3.2 Oprations de MATLAB
3.2.1 Oprateurs
Classs par ordre de priorit dcroissante, les oprateurs utiliss par MATLAB sont les suivants :
exponentiation et transposition
lexponentiation ^ et .^
la conjugaison et la transposition .
oprateurs multiplicatifs
les produits * et .*,
les divisions droite /, ./ et gauche \, .\
oprateurs additifs et de ngation
les oprateurs additifs unaire et binaires + et -
la ngation ~
oprateurs boolens avec par ordre de priorit :
les oprateurs de comparaison
<, >, <= et >=
galit ==, non galit ~=
puis les oprateurs logiques
et logique &
ou logique |
et logique court-circuit &&
ou logique court-circuit ||
Les oprateurs logiques court-circuits sont des oprateurs pour lesquels le rsultat est acquis
ds que lvaluation du premier oprande permet darmer le rsultat global sans valuer le second
oprande. Si a et b sont des variables boolennes :
a && b vaut false ds que a vaut false
a || b vaut true ds que a vaut true.
Dautre part on rappelle quil nexiste pas dans MATLAB de vrai" type boolen : false est repr-
sent par la valeur 0 et que true est reprsente par la valeur 1 et par extension par toute valeur
non nulle, ce qui est conrm par lvaluation des expressions suivantes :
Exemple 3.2.1 :
>> 2&3
ans =
1 % true ET true vaut true
>> 2&0
ans =
0 % true ET false vaut false
>> 2|3
ans =
1 % true OU true vaut true
>> ~3
ans =
0 % le contraire de true (= 3) est false
>> 2==3
ans =
0 % lgalit est bien celle des nombres et non celle des prdicats !
p. 34 AJ.Casadevall - mars 2013
3.2. OPRATIONS DE MATLAB
3.2.2 Oprateurs et oprations sur les tableaux
Lorsquils sont appliqus des nombres ou des expressions boolennes, le rsultat fourni par les
oprateurs dcrits ci-dessous, est le rsultat usuel. Ils sappliquent encore des listes, des vecteurs
ou plus gnralement des tableaux ; on dit quils sont vectoriss. Le rsultat est bien sr quelque
peu dirent.
Dans le tableau suivant, A et B sont des tableaux et c est un nombre :
Oprateur Rsultat Conditions
A + B tableau dont les lments sont dnis par a
ij
+ b
ij
A et B mme format
A + c = c + A tableau dont les lments sont dnis par a
ij
+ c
AB tableau dont les lments ont pour valeur a
ij
b
ij
A et B mme format
Ac tableau dont les lments ont pour valeur a
ij
c
c A tableau dont les lments ont pour valeur c a
ij
A B tableau rsultant du produit matriciel de A par B nb col. A = nb lign. B
A c = c A tableau dont les lments ont pour valeur c a
ij
A. B tableau dont les lments ont pour valeur a
ij
b
ij
A et B mme format
An (n > 0) A A A (n fois) A carre
An (n < 0) A
1
A
1
A
1
(|n| fois) A inversible
A.B tableau dont les lments ont pour valeur (a
ij
)
b
ij
A et B mme format
A

transpos-conjugue du tableau A, a

ij
= a
ji
A.

transpos du tableau A, a

ij
= a
ji
si tous les lments de A sont rels, A.

= A

B/A tableau X solution de lquation matricielle XA = B nb col. A = nb col. B


si A est inversible X = BA
1
A\B tableau X solution de lquation matricielle AX = B nb lign. A = nb lign. B
si A est inversible X = A
1
B
A./B tableau dont les lments ont pour valeur a
ij
/b
ij
A et B mme format
A.\B tableau dont les lments ont pour valeur b
ij
/a
ij
A et B mme format
A.\B = B./A
A/c tableau dont les lments ont pour valeur a
ij
/c
On notera qu certains oprateurs est associ un oprateur point, * et .* par exemple.
De faon gnrale, loprateur point correspond une opration semblable celle reprsente par
loprateur non point, mais applique non pas "matriciellement" mais terme terme" : * est
loprateur matriciel alors que .* est loprateur du produit terme terme".
Exemple 3.2.2 :
On cre deux matrices A et B. La fonction ones(n) cre une matrice carre dordre 2 dont tous les
termes sont gaux 1 ; la fonction eye(2) cre la matrice identit dordre 2.
>> A = [1 2;1 0]
A =
1 2
1 0
AJ.Casadevall - mars 2013 p.35
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET FONCTIONS
>> B = ones(2)+eye(2)
B =
2 1
1 2
>> C = A*B
C =
4 5
2 1
>> D = A.*B
D =
2 2
1 0
Notez bien la dirence entre lopration matricielle et lopration terme terme" ..
3.2.3 Oprations boolennes - Tableaux boolens
Dans la suite, tableau boolen" ou logical array dsignera un tableau dont les lments ont
pour valeur 0 ou 1, 0 reprsentant false et 1, reprsentant true. La fonction islogical teste le
caractre boolen dun tableau.
Oprateurs de comparaison
Les oprateurs boolens sont peut-tre ceux dont le comportement peut apparatre le plus
droutant parce quil fonctionnent terme terme " et que le rsultat est un tableau boolen :
Exemple 3.2.3 :
Avec les variables A et B dnies dans lexemple prcdent on obtient :
>> A , B
A =
1 2
1 0
B =
2 1
1 2
>> C =(A == B)
C = % C est le tableau resultant dune opration boolenne
0 0
1 0
>> islogical(C)
ans =
1 % C est bien un tableau boolen
Dans lexpression a == b la comparaison porte sur les lments homologues de A et B :
1 == 3 false 0, 2 == 1 false 0
1 == 1 true 1, 0 == 2 false 0
Il en est de mme pour A > B :
p. 36 AJ.Casadevall - mars 2013
3.2. OPRATIONS DE MATLAB
>> A > B
ans =
0 1
1 0
En rsum, si A et B sont des tableaux de mme format et si op dsigne un des oprateurs
boolens <, >, <=, >=, ==, = le rsultat de A op B est dni par la rgle suivante :
Oprateur Rsultat Condition
A op B tableau boolen" dont les lments sont dnis par A
ij
op B
ij
mme format
Ainsi que le montre lexemple ci-dessous, un tableau form de 0 et de 1 nest pas ncessairement
un tableau boolen :
Exemple 3.2.4 :
>> A = eye(2)
A =
1 0
0 1
>> islogical(A)
ans =
0 % A nest pas un tableau boolen
>> class(A)
ans =
double
Seuls les tableaux
rsultant dune opration boolenne ;
forms de 0 et de 1 et transforms en tableaux boolens par la fonction logical ;
sont des tableaux boolens.
Exemple 3.2.5 :
Avec le mme tableau A que prcdemment :
>> B = logical(A)
B =
1 0
0 1
>> test = islogical(B)
test =
1 % B est un tableau boolen
Oprateurs logiques
Soient A et B deux tableaux de mme format, valuons A & B :
Exemple 3.2.6 :
>> A = [1 2 ; 1 0] , B = [2 1 ; 1 0]
A =
1 2
1 0
AJ.Casadevall - mars 2013 p.37
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET FONCTIONS
B =
2 1
1 2
>> A & B
ans =
1 1
1 0
>> islogical(ans)
ans =
1
MATLAB value sans problme A & B bien que les tableaux A et B ne soient pas des tableaux
boolens. Le rsultat de lvaluation ans, est un tableau boolen : avant lvaluation MATLAB
a transform les deux tableaux en tableaux boolens en suivant la rgle usuelle, puis a eectu
lopration logique terme terme.
Il en est de mme pour les autres oprateurs logiques |, || , &&.
3.2.4 valuation des expressions - ans
Les expressions sont values de la gauche vers la droite, suivant lordre de priorit indiqu plus
haut. Pour des oprateurs de mme ordre de priorit, la rgle est comme en mathmatiques, celle
de lassociativit gauche.
La frappe de <entrer> dclenche lvaluation. La valeur de expression value est ache sous
la ligne courante et en labsence daectation explicite, elle est aecte une variable-systme
gnrique dsigne par ans pour answer.
Exemple 3.2.7 :
>> a = .5
a =
0.5000
>> a*pi
ans =
1.5708
>> b = 2*ans % affectation explicite de levaluation b
b =
3.1416
>> ans
ans =
1.5708
La dernire valuation na pas modi la valeur de ans puisquelle comportait une aectation
explicite la variable b.
p. 38 AJ.Casadevall - mars 2013
3.3. SCRIPTS ET M-FILES
3.3 Scripts et m-les
3.3.1 Scripts
Un script est une squence dexpressions ou de commandes. Un script peut se dvelopper sur
une ou plusieurs lignes. Les direntes expressions ou commandes doivent tre spares par une
virgule, un point-virgule ou par le symbole de saut de ligne qui en ligne de commande est constitu
du symbole de continuation ... suivis de <entrer> (la prsence du symbole de continuation inhibe
le mcanisme dvaluation dclench par la frappe de <entrer>).
Les expressions sont values dans leur ordre dcriture. Seule la valeur des expression suivie dune
virgule ou dun saut de ligne est ache, celle des expressions suivies dun point-virgule, ne lest
pas.
Exemple 3.3.1 :
>> a = .5, 2*a, save a, b = pi; 2*b, c = a*b
a =
0.5000
c =
1.5708
ans =
6.2832
c =1
.5708
>> ans
ans =
6.2832
crire un script est assez fastidieux, aussi MATLAB permet denregistrer le texte dun script sous
forme de chier de texte appels m-les, ne pas confondre avec les emphmat-les que nous avons
voqus dans le chapitre prcdant et qui sont des chiers binaires permettant denregistrer des
valeurs.
3.3.2 Cration de m-les
Les m-les permettent denregistrer les scripts sous forme de chiers-texte et servent en
particulier dnir de nouvelles fonctions (une grande partie des fonctions prdnies de MATLAB
sont stockes sous forme de m-les dans la toolbox matlab.
Les m-les peuvent tre cres par nimporte quel diteur. Dans les versions rcentes de MATLAB
il existe un petit diteur intgr que lon peut appeler partir du menu file ou partir de la barre
de menu de la fentre de commande.
Exemple 3.3.2 :
Dans la fentre de lditeur tapez les lignes suivantes :
% script - essai . m
a = .5;
b = pi;
c = a * b
Sauvez le chier dans le rpertoire de travail sous le nom de essai.m.
AJ.Casadevall - mars 2013 p.39
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET FONCTIONS
Remarque : !!!
On peux utiliser les techniques du copier/coller pour transfrer des parties de script de la fentre de
commande de MATLAB vers lditeur et rciproquement. Il faut prendre garde au fait que dans la
fentre de commande de MATLAB les sauts de ligne <entrer> lancent lvaluation des expressions ;
il faut alors faire prcder les sauts de ligne du symbole de continuation ...
3.3.3 Excution dun m-le
Pour excuter le script contenu dans un m-le et Il sut de taper le nom de ce m-file dans la
fentre de commande suivi de < entrer >
Exemple 3.3.3 :
Pour excuter le script prcdent, on tape essai et on obtient :
>> essai
c =
1.5708
La prsence dun point-virgule ; la n des deux premires lignes du script a neutralis lachage
des valeurs de a et b.
3.3.4 lments dcriture de m-les
Commentaires
Les lignes de commentaires sont prcdes du caractre %.
Entres - input et menu
La fonction input permet la saisie dune valeur depuis le clavier. Plus prcisment :
Pour les valeurs numriques, n = input(message) ache message et aecte la variable
n la valeur numrique entre au clavier.
Pour les chanes de caractres, str = input(message,s) ache message et aecte la
variable str la valeur entre au clavier considre alors comme une chane de caractres.
Exemple 3.3.4 :
>> n = input(Entrez la valeur de n )
>> nom = input(Entrez votre nom ,s)
La fonction menu gnre une fentre contenant un menu dans lequel lutilisateur doit choisir une
option :
result = menu(titre, opt1, opt2, ..., optn)
La valeur retourne dans la variable result est gale au numro de loption choisie ; menu est souvent
utilis en relation avec la structure algorithmique switch-case c.f. 3.4.4.
Exemple 3.3.5 :
result = menu(Traitement, Gauss, Gauss-Jordan, Quitter)
Sans la fentre ci-aprs, si lutilisateur slectionne Gauss, la variable result prend la valeur 1, la
valeur 2 sil slectionne Gauss-Jordan et la valeur 3 sil slectionne Quitter.
p. 40 AJ.Casadevall - mars 2013
3.3. SCRIPTS ET M-FILES
Achages - disp - num2str - format
La valeur dune variable est trs simplement ache en faisant valuer une expression rduite
la variable elle-mme.
Exemple 3.3.6 :
>> a = [1 2] ;
>> a
a =
1 2
La fonction num2str(x) o x est un nombre, retourne la valeur littrale de ce nombre.
Exemple 3.3.7 :
>> s = [la valeur de pi est : num2str(pi)] ;
>> s
s =
la valeur de pi est : 3.1416
La commande disp(t) o t est une chane de caractres ou un tableau, ache la valeur de cette
chane de caractre ou de ce tableau sans faire rfrence au nom de la variable. Cette commande
sera souvent utilise avec num2str pour acher les valeurs des expressions numriques.
Exemple 3.3.8 :
>> a = [1 2;3 4] ;
>> disp(a)
1 2
3 4
>> disp([ ordre de la matrice a : num2str(size(a,1)) ] );
ordre de la matrice a : 2
AJ.Casadevall - mars 2013 p.41
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET FONCTIONS
La commande format permet de choisir entre plusieurs modes dachage (sans inter-
frer avec le type des valeurs numriques aches qui est toujours le type double) :
Commande Achage Exemple
format short dcimal 5 chires 31.416
format short e scientique 5 chires 31.416e+01
format long dcimal 16 chires 31.4159265358979
format long e scientique 16 chires 314159265358979e+01
format hex hexadcimal
format bank virgule xe deux dcimales 31.41
format rat fractionnaire 3550/113
format + utilise les symboles +, - et espace pour +
acher les nombres positifs ngatifs et nuls
Commande pause
La commande pause permet de mnager une pause dans lexcution dun m le :
sans argument pause suspend lexcution jusqu ce que lutilisateur presse sur une touche.
pause(n ) suspend lexcution pendant n secondes.
Interaction avec le systme dexploitation
MATLAB possde des fonctions et des commandes qui permettent dobtenir la liste des rper-
toires accessibles ou matlabpath, la liste des chiers dun rpertoire donn, les diter et ventuel-
lement les eacer :
addpath path : ajoute path la liste matlabpath des rpertoires accessibles par MATLAB;
p = pwd : retourne dans p le chemin daccs au rpertoire de travail actuel ;
cd path : change le rpertoire de travail pour celui spci par path ;
d = dir ou d = ls : retourne dans d la liste des chiers du rpertoire de travail ;
what : retourne la liste des m-les et des mat-files du rpertoire de travail ;
edit test : dite le m-le test.m, identique Open dans le menu File ;
delete test.m : eace le m-le test.m ;
type test : ache le le m-le test.m dans la fentre de commande.
3.4 Structures algorithmiques
3.4.1 Slection - if...end et if...else...end
Syntaxe
if (expression boolenne) / script / end
if (expression boolenne) / script si vrai / else / script si faux / end
Le symbole / remplace lun des symboles sparateur : virgule (,), point-virgule (;) ou saut de ligne.
Lusage du point-virgule est vivement conseill pour viter les achages souvent redondants. Dans
danciennes versions de MATLAB et en mode commande, il est indispensable de faire prcder
< enter > par le symbole de continuation constitu dune squence de trois points (...) pour
passer la ligne sans dclencher le processus dvaluation.
Exemple 3.4.1 :
>> m = -1;
>> if (m<0) a =-m, end
a =
1
p. 42 AJ.Casadevall - mars 2013
3.4. STRUCTURES ALGORITHMIQUES
Cette autre prsentation est plus lisible :
>> f (m<0)
a = -m ;
end
Utilisation de elseif
Lorsquil y a plus de deux alternatives, on peut utiliser la structure suivante :
if (exp1)
script1 (valu si exp 1 est vraie)
elseif (exp2)
script2 (valu si exp 2 est vraie)
elseif (exp3)
. . .
else
script (valu si aucune des expressions exp1, exp2, . . . nest vraie)
end
3.4.2 Rptition - for...end
Syntaxe
for (k = liste) / script / end
Le symbole / reprsente comme dans le paragraphe prcdent un symbole sparateur virgule (,),
point-virgule (;) ou saut de ligne. Dautre part, il est prfrable de ne pas utiliser i et j comme
indices puisque dans MATLAB i et j sont des variables prdnies dont la valeur est
_
( 1).
Exemple 3.4.2 :
>> x = [ ] ;
>> for (k = 1 : 5), x = [x, sqrt(k)], end
x =
1
x =
1.0000 1.4142
x =
1.0000 1.4142 1.7321
x =
1.0000 1.4142 1.7321 2.0000
x =
1.0000 1.4142 1.7321 2.0000 2.2361
cette autre prsentation plus lisible, doit tre privilgie :
>> for (k = 1 : 5)
x = [x, sqrt(k)] ;
end
AJ.Casadevall - mars 2013 p.43
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET FONCTIONS
Boucles for embots
Exemple 3.4.3 :
>> for (l = 1 : 3)
for ( k = 1 : 3)
A(l,k) = l^2 + k^2 ;
end
end
>> disp(A)
2 5 10
5 8 13
10 13 18
Utilisation de break et de continue
Il est possible de sortir directement dune boucle for ou while en utilisant la commande break :
Exemple 3.4.4 :
>> epsi = 1;
>> for (n = 1 : 100)
epsi = epsi / 2;
If ((epsi + 1) <= 1)
epsi = epsi*2
break
end
end
epsi =
2.2204e-16
>> n
n =
52
Le test (epsi + 1) <= 1 provoque la sortie de la boucle for la 52
i` eme
itration.
Dans lexemple suivant, le tableau A est celui de lexemple prcdent.
>> for (l = 1 : 3)
for (k = 1 : 3)
if (A(l,k) == 10)
[l,k]
break
end
end
end
ans =
1 3
p. 44 AJ.Casadevall - mars 2013
3.4. STRUCTURES ALGORITHMIQUES
ans =
3 1
La double boucle se sest pas arrt aprs que le test A(l,k) == 10 ait t valid lorsque l=1 et
k=3. En eet break provoque la sortie de la boucle la plus proche, ici la boucle for interne.
Une version corrige du test prcdent pourrait tre la suivante avec deux break pour pouvoir
sortir des deux boucles for :
Exemple 3.4.5 :
>> sortie = 0;
>> for (l=1:3)
if (sortie)
break
end
for (k = 1:3)
if (A(l,k) == 10)
[l,k]
sortie = 1 ;
break
end
end
end
ans =
1 3
La commande continue interromps lexcution du corps de la boucle et provoque le passage
litration suivante.
3.4.3 Itration conditionnelle - while...end
Syntaxe
while (expression boolenne) / script / end
Le symbole / reprsente comme dans les dnitions prcdents, un sparateur : virgule (,), point-
virgule (;) ou saut de ligne. Dautre part, il faut viter lutilisation des variables i et j comme
indices puisquelles sont des variables prdnies dont la valeur est
_
( 1).
Exemple 3.4.6 :
>> n = 1 ;
>> while (2^n <= 100)
n = n + 1;
end
>> disp(n-1)
6
AJ.Casadevall - mars 2013 p.45
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET FONCTIONS
3.4.4 Construction switch...case
Syntaxe
switch (slecteur)
case valeur 1, . . . / script 1 /
case Valeur 2, . . . / script 2 /
. . .
otherwise / script
end
Comme dans les dnitions prcdentes, le symbole / remplace un sparateur : virgule (,), point-
virgule (;) ou saut de ligne.
slecteur dsigne une expression dont les valeurs peuvent correspondre aux valeurs associes aux
dirents case. Lorsque la valeur du slecteur correspond une valeur de case, une fois le script
correspondant excut, lexcution se continue immdiatement aprs le end contrairement ce qui
se passe pour certains langages. Ceci explique labsence de break aprs chaque script.
Exemple 3.4.7 :
>> n =17
>> switch rem(n,3) % reste de la division de n par 3
case 0, disp(Multiple de 3)
case 1, disp(1 modulo 3)
case 2, disp(2 modulo 3)
otherwise, disp(Nombre ngatif)
end
2 modulo 3
3.4.5 Traitement des erreurs - try...catch...end
La commande try...catch a pour but de permettre un traitement qui permette lutilisateur
dintervenir en prsence derreurs ou de situations inhabituelles. Sa syntaxe est la suivante :
try script1 catch script2 end
Le fonctionnement en est assez simple pour les habitus des langages modernes, java par exemple :
lexcution de script1 est lance ;
si une erreur survient, alors lexcution de script1 est arrte et script2 est excut ;
sinon, script1 est excut jusqu son terme, script2 nest pas excut, les excutions suivantes
se poursuivent aprs le end nal.
On peut utiliser lasterr pour accder lerreur qui provoque larrt de lexcution de script1.
3.5 Fonctions
A cot des fonctions prdnies c.f.4.1, MATLAB ore lutilisateur la possibilit de dnir ses
propres fonctions. Trois mthodes sont possibles : les m-fonctions qui sont associes des m-les
auxiliaires, les fonctions anonymes et les fonction Inline. Ces deux derniers types de fonction
peuvent tre dnies directement dans lespace de travail o ces fonctions vont tre utilises.
p. 46 AJ.Casadevall - mars 2013
3.5. FONCTIONS
3.5.1 m-Fonctions
Ces fonctions sont associes un m-le auxiliaire, ce qui apporte deux avantages : la fonction
possde son propre espace de travail (pas deet de bord) et il ny a pas de limite la complexit
de la squence de commandes qui dnit la fonction.
Exemple 3.5.1 :
La m-fonction moyenne dnie ci-dessous calcule la moyenne des lments dune liste ou dun
vecteur.
Saisissez le texte ci-aprs dans un diteur (par exemple lditeur intgr MATLAB mais tout
diteur fait laaire) et enregistrez le sous le nom moyenne.m.
1 function m = moyenne(x)
2 % MOYENNE(X) : moyenne des lments dune liste ou dun vecteur
3 % un argument autre quune liste ou un vecteur conduit a une erreur
4 [k,l] = size(x) ;
5 if ( (k~=1) & (l~=1) )
6 error(l"argument doit tre une liste ou un vecteur)
7 end
8 m = sum(x)/length(x) ;
9 return
On appelle la fonction moyenne depuis le fentre de commande par :
>> rsultat = moyenne(1 : 9)
resultat =
5
>> A = [ 1 2 ; 3 4] ; moyenne(A)
??? Error using ==> moyenne
l"argument doit tre une liste ou un vecteur
Le traitement de lerreur sur la nature de largument a t ralis aux lignes 5 7 et par la commande
error.
MATLAB utilise la section de commentaires des lignes 2 et 3 en conjonction avec la commande help
pour fournir des informations sur la fonction :
Exemple 3.5.2 :
>> help moyenne
MOYENNE(X) : moyenne des lments dune liste ou dun vecteur
un argument autre quune liste ou un vecteur conduit a une erreur
Syntaxe
Une fonction est constitue par :
un en-tte qui si la fonction renvoie une seule valeur, a la forme suivante :
function rsult = nom-de-fonction (liste de paramtres )
ou si la fonction renvoie plusieurs valeurs :
function [rsult1, result2, ...] = nom-de-fonction (liste de paramtres )
une section de commentaires (9 lignes au plus, dbutant par le symbole %) utilise par les
commande help ou lookfor ;
le corps de la fonction dni par un script ;
le return terminal est nest pas obligatoire ; il est conseill car il entraine un retour "propre"
la fonction ou au script appelant ou par dfaut la fentre de commande.
AJ.Casadevall - mars 2013 p.47
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET FONCTIONS
Rgles et proprits
Le nom de la fonction nom-de-fonction est un identicateur construit conformment aux
rgles dnies au paragraphe
Le nom de la fonction et celui du chier m-le qui en contient la dnition doivent tre
identiques. Ce chier est le chier m-le associ la fonction.
Chaque fonction possde son propre espace de travail et toute variable apparaissant dans
le corps dune fonction est locale celle-ci, moins quelle ait t dclare comme globale
au moyen du qualicateur global prcdant le nom de la variable dans tous les espaces
de travail o cette variable est utilise.
Il est prfrable que les fonctions soient vectorises comme le sont les fonctions prdnies. Il
faut alors nutiliser que des oprateurs points dans la dnition de la fonction.
Lexcution dune fonction sachve :
lorsque la n du script dnissant la fonction a t atteint ;
lorsque une commande return ou un appel de la fonction error a t rencontr :
return termine immdiatement lexcution de la fonction sans que la n du script d-
nissant celle-ci ait t atteint,
error(message ) procde de mme, mais en plus, ache le contenu de message.
Le contrle est alors renvoy au point dappel de la fonction, fentre de commande ou autre
fonction.
Le chier m-le associ une fonction peut contenir dautres dnitions de fonctions. La
fonction qui partage son nom avec le chier ou fonction principale doit apparatre en
premier. Les autres fonctions ou fonctions internes peuvent tre appeles par la fonction
principale, mais pas par dautres fonctions ou depuis la fentre de commande.
Exemple 3.5.3 :
1 function [m, v] = myStat(x)
2 % MYSTAT(X) : moyenne et variance des elements dune liste ou dun vecteur
3 % un argument autre quune liste ou un vecteur conduit a une erreur
4 [k,l] = size(x) ;
5 if ( (k~=1) & (l~=1) )
6 error(l"argument doit tre une liste ou un vecteur)
7 end
8 m = moyenne(x);
9 v = variance(x);
10 return
11 function a = moyenne(u)
12 % Calcul de la moyenne
13 a = sum(u)/length(u);s
14 function b = variance(u)
15 % Calcul de la variance
16 c = sum(u)/length(u);
17 u2 = (u - c).^2;
18 b = sum(u2)/length(u);
Lensemble des trois fonctions est enregistr dans un seul chier m-le portant le nom de la fonction
principale myStat.m.
p. 48 AJ.Casadevall - mars 2013
3.5. FONCTIONS
3.5.2 Fonctions Inline
Lorsque le corps de la fonction se rsume une expression relativement simple, on peut crer
la fonction directement dans lespace de travail courant, sans utiliser un m-le auxiliaire .
Syntaxe
La syntaxe des fonctions Inline est simple :
nom-de-fonction = inline (expression , var1, var2, ...)
Lexpression mathmatique qui constitue le corps de la fonction ainsi que les variables sont
considres par MATLAB comme des chaines de caractres et doivent donc tre tapes
entre apostrophes.
Il est prfrable que les fonctions soient vectorises comme le sont les fonctions prdnies. Il
faut alors nutiliser que des oprateurs points dans lexpression dnissant la fonction..
La dclaration des variables peut tre optionnelle dans la dnition des fonctions Inline,
MATLAB eectuant une dclaration implicite de celles-ci. Cette facilit, source dambiguts
dans le cas de fonctions de plusieurs variables nest pas recommander dans ce cas.
Exemple 3.5.4 :
>> f = inline(x.^2 + x.*y, x, y)
f =
Inline fonction :
f(x, y) = x.^2 + x.*y
>> f(1, 2)
ans =
3.0000
>> f([1 0], [2 1])
ans =
3.0000 0.0000
Lexemple suivant met en vidence le mcanisme de dclaration implicite.
Exemple 3.5.5 :
La dnition
>> f = inline(x.^2)
f =
Inline fonction :
f(x) = x.^2
est quivalente :
>> f = inline(x.^2, x)
Ce mcanisme est ambigu ds quil y a plusieurs variables : la dnition
>> f = inline(x.^2 + x.*y)
est quivalente :
>> f = inline(x.^2 + x.*y, x, y)
AJ.Casadevall - mars 2013 p.49
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET FONCTIONS
alors que
>> f = inline(x.^2 + x.*t)
est quivalente :
>> f = inline(x.^2 + x.*t, t, x)
3.5.3 Fonctions anonymes
Ce troisime mode de dnition de fonctions utilise comme pour les fonctions Inline lespace
de travail courant. La syntaxe minimale est peu explicite, mais les fonctions ainsi dnies seraient
plus ecaces que fonctions Inline.
Syntaxe
nom-de-fonction = @(var1, var2, ...) expression
Contrairement aux fonctions Inline lexpression mathmatique qui constitue le corps de la
fonction ainsi que les variables ne doivent pas tre tapes entre apostrophes.
Il est prfrable que les fonctions soient vectorises comme le sont les fonctions prdnies. Il
faut alors nutiliser que des oprateurs points dans lexpression dnissant la fonction.
Exemple 3.5.6 :
>> g = @(x, y) x.^2 + x.*y
g =
@(x, y) x.^2 + x.*y
>> g(1, 2)
ans =
3.0000
>> g([1 0], [2 1])
ans =
3.0000 0.0000
3.5.4 Fonctions argument dautres fonctions
Une faon simple dutiliser une fonction comme argument dune autre fonction est de trans-
mettre la fonction utilisatrice le handle de la fonction (le handle dune fonction est la rfrence
(ladresse en mmoire) du code MATLAB qui dnit le traitement eectu par la fonction).
Le handle dune m-fonction ou dune fonction prdnie de MATLAB est obtenu en faisant prcder
le nom de la fonction par le symbole @. Par exemple, le handle de la fonction prdnie exp est
@exp.
Le handle dune fonction Inline ou dune fonction anonyme est le nom avec lequel la fonction a
t dnie.
Dans ce premier exemple la fonction utilisatrice est dnie comme une m-fonction.
Exemple 3.5.7 :
function y = trapeze(f, a, b)
% Input : f : handle
% a : borne infrieure
p. 50 AJ.Casadevall - mars 2013
3.5. FONCTIONS
% b : borne suprieure
% Output : aire du trapezes
y = 0.5*(f(a) + f(b))*(b - a) ;
return
>> carre = inline(x.^2, x)
carre =
Inline fonction :
carre(x) = x.^2
>> trapeze(carre, 1, 2)
ans =
2.5000
On peut galement dnir la fonction trapze comme une fonction anonyme :
Exemple 3.5.8 :
>> trapeze2 = @(f, a, b) 0.5*(f(a) + f(b))*(b - a) ;
>> carre = @(t) t.^2 ;
>> trapeze2(carre2, 1, 2)
ans =
2.5000
3.5.5 Commandes et fonctions nargin et nargout
La commande nargin qui sutilise lintrieur du corps dune fonction, donne le nombre de
paramtres dentre eectivement passs lors lappel de la fonction.
Exemple 3.5.9 :
fonction n = test(a, b)
if (nargin ==1)
n = a ;
elseif (nargin == 2)
n = a +b ;
end
La fonction nargin(nom-de-fonction) revoie le nombre prvu de paramtres dentre de la
fonction dont le nom est pass en argument.
Exemple 3.5.10 :
>> nargin(test)
ans =
2
La commande et la fonction nargout fonctionnent de mme pour les paramtres de sortie.
AJ.Casadevall - mars 2013 p.51
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET FONCTIONS
3.6 Optimisation des calculs
Les calculs sont acclrs de faon spectaculaire en utilisant des oprations vectorielles en lieu
et place de boucles. Comparons les deux fonctions suivantes (la commande tic dclenche un chro-
nomtre ; toc arrte le chronomtre et retourne le temps coul depuis tic) :
Exemple 3.6.1 :
1 function [t,b] = test1(n)
2 % dtermine le temps mis pour crer la liste
3 % des racines carres des entiers compris entre 1 et n
4 m = 0 ;
5 tic ;
6 for k = 1 : 1 : n
7 b(k) = m+sqrt(k) ;
8 end
9 t = toc ;
10 return
11 function [t,b] = test2(n)
12 % dtermine le temps mis pour crer la liste
13 % des racines carres des entiers compris entre 1 et n
14 tic ;
15 a = 1 : 1 : n ;
16 b = sqrt(a) ;
17 t = toc ;
18 return
Les rsultats obtenus montrent que test2 est plus ecace que test1.
>>test1(1000)
ans =
0.1040
>>test2(1000)
ans =
0.0023
MATLAB dispose dun utilitaire appel proler qui est prcieux pour tudier les performances
dune ou plusieurs fonctions. Les modalits dutilisation du proler ont volu en fonction des
versions de MATLAB. On les trouvera dans laide en ligne help profile .
p. 52 AJ.Casadevall - mars 2013
4
MATLAB et lanalyse numrique
4.1 Fonctions numriques" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2 Polynmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3 Calcul matriciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.4 Fonctions dune variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4.1 Recherche de minimum - fmin . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4.2 Recherche de racines - fzero . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4.3 Intgration - trapz, quad et quad8 . . . . . . . . . . . . . . . . . . . . . . . 57
Il est impossible dans un seul chapitre de faire le tour de toutes les fonctions de MATLAB lies
lanalyse numrique. Ce chapitre prsente quatre familles de fonctions : les fonctions numriques",
les fonctions du calcul polynomial, les fonctions matricielles et les fonctions lies aux fonctions
dune variable.
4.1 Fonctions numriques"
Les fonctions numriques de MATLAB gnralisent les fonctions numriques usuelles, avec une
dirence cependant : comme les oprateurs dnis en 3.2.2, elles sont vectorises. Cest dire
quelles sappliquent aussi bien des nombres qu des tableaux (ceci est assez normal puisquun
nombre est un tableau particulier). Lorsquune de ces fonctions a pour argument un tableau, la
fonction est applique chacun des lments du tableau. Le rsultat obtenu est donc un tableau
de mme format que le tableau donn comme argument.
Exemple 4.1.1 :
>> t =[-3 2 0 ; -2 3 -1]
t =
-3 2 0
-2 3 -1
>> u = abs(t)
u =
3 2 0
2 3 1
>> v = exp(u)
v =
20.0855 7.3891 1.0000
7.3891 20.0855 2.7183
CHAPITRE 4. MATLAB ET LANALYSE NUMRIQUE
Les fonctions numriques sont nombreuses. Laide en ligne en donne une liste exhaustive. Dans le
tableau ci-dessous, on trouvera les fonctions les plus frquemment utilises.
Fonction Rsultat
abs valeur absolue ou module (nb. complexes)
angle argument (nb. complexes)
real partie relle (nb. complexes)
imag partie imaginaire (nb. complexes)
conj complexe conjugu
sqrt racine carre
cos cosinus (angle en radian)
sin sinus (angle en radian)
tan tangente (angle en radian)
acos arc cosinus (rsultat en radian)
asin arc sinus (rsultat en radian)
atan arc tangente (rsultat en radian)
exp exponentielle
log logarithme nprien
log10 logarithme base 10
round entier le plus proche
fix partie entire mathmatique
floor troncature par dfaut
ceil troncature par excs
4.2 Polynmes
Pour MATLAB, un polynme est une liste : la liste des coecients ordonns par ordre
dcroissant :
Exemple 4.2.1 :
Le polynme p(x) = 1 2x + 4x
3
est reprsent par le liste :
>> p = [4 0 -2 1]
p =
4 0 -2 1
Les fonctions usuelles du calcul polynomial sont les suivantes :
Fonction Arguments Rsultat
polyval un polynme p et un nombre a calcul de p(a)
roots un polynme p la liste des racines de p
conv deux polynmes p et q le polynme produit p q
deconv deux polynmes p et q le quotient et le reste de la division
euclidienne de p par q
polyder un polynme p le polynme-drive de p
p. 54 AJ.Casadevall - mars 2013
4.3. CALCUL MATRICIEL
4.3 Calcul matriciel
Voici quelques-unes des fonctions usuelles du calcul matriciel :
Fonction Rsultat
eig calcul des valeurs et des vecteurs propres
poly polynme caractristique
det calcul du dterminant
trace calcul de la trace
inv calcul de linverse
Exemple 4.3.1 :
>> a = [1 2 ; 3 4]
a =
1 2
3 4
>> vp = eig(a)
vp =
-0.3723
5.3723
>> [p, d] = eig(a)
p = % p est la matrice des vecteurs propres
-0.8246 -0.4160
0.5658 -0.9094
d = % d est la matrice diagonalise
-0.3723 0
0 5.37233
>> p = poly(a)
p =
1.0000 -5.0000 -2.0000
% le polynme caractristique est p(t) = t^2 - 5t - 2
>> roots(p)
ans =
5.3723
-0.3723
% les racines de p sont bien les valeurs propres
AJ.Casadevall - mars 2013 p.55
CHAPITRE 4. MATLAB ET LANALYSE NUMRIQUE
4.4 Fonctions dune variable
4.4.1 Recherche de minimum - fmin
La fonction fmin prend pour arguments le nom de la fonction tudier crite sous forme
dune chane de caractres, et les bornes infrieures et suprieures de lintervalle dtude. La fonction
peut tre une fonction prdnie de MATLAB ou une fonction dnie par lutilisateur, mais elle
doit imprativement tre une fonction de la variable x .
Exemple 4.4.1 :
>> xmin = fmin(cos, 3, 4) , ymin = cos(xmin)
xmin =
3.1416
ymin =
-0.7071
Lorsque la fonction est dnie par une expression, on peut utiliser directement cette expression,
crite sous forme dune chane de caractres, comme argument de fmin :
>> fn = 2*exp(-x)*sin(x) ; fmin(fn, 2, 5)
xmin =
3.9270
Pour calculer ymin on utilise la fonction eval qui prend comme argument une expression crite
sous forme de chane de caractre (comme cela est possible pour fmin) :
>> x = xmin ; ymin = eval(fn)
ymin =
-0.0279
Lorsque lexpression dont on veut calculer la valeur est dnie par une fonction de MATLAB ou
dnie par lutilisateur, on utilise feval
>> xmin = fmin(myFunct, 2, 4) , ymin = feval(myFunct, xmin)
xmin =
3.1416
ymin =
-0.7071
4.4.2 Recherche de racines - fzero
La syntaxe de la fonction fzero est voisine de celle de la fonction fmin. La fonction fzero
prend pour arguments le nom de la fonction tudier crite sous forme dune chane de caractres,
et une valeur initiale voisine de celle dune racine. La fonction peut tre une fonction prdnie de
MATLAB ou une fonction dnie par lutilisateur, mais elle doit imprativement tre une fonction
de la variable x.
Exemple 4.4.2 :
>> x0 = fzero(cos,1), y0 = cos(x0)
x0 =
1.5708
y0 =
0
Il nest pas possible comme pour la fonction fmin de dnir la fonction tudier par une expression
mathmatique. On crera alors une fonction m-file pour dnir cette fonction.
p. 56 AJ.Casadevall - mars 2013
4.4. FONCTIONS DUNE VARIABLE
4.4.3 Intgration - trapz, quad et quad8
MATLAB propose plusieurs fonctions pour calculer numriquement la valeur de lintgrale dune
fonction dune variable, sur un intervalle ferm.
trapz - La fonction trapz utilise la mthode des trapzes. les arguments de trapz sont deux
listes, dans lordre :
une liste x qui est une subdivision de lintervalle dintgration;
une liste y dont les valeurs sont les images des valeurs de de la liste x par la fonction
intgrer (y(k) = f(x(k))).
Exemple 4.4.3 :
>> x = 0 : pi/100 : pi ; y = sin(x) ;
>> z = trapz(x, y)
z =
1.9998
quad et quad8 - Ces deux fonctions sont fondes respectivement sur la mthode de Simpson
et sur la mthode de Newton-Cotes. Leur syntaxe est celle de la fonction fmin voir 4.4.1 :
Exemple 4.4.4 :
>> z = quad(sin, 0, pi)
z =
2.0000
AJ.Casadevall - mars 2013 p.57
CHAPITRE 4. MATLAB ET LANALYSE NUMRIQUE
p. 58 AJ.Casadevall - mars 2013
5
Courbes et surfaces
5.1 Fentres graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.1.1 Cration dune fentre - fonctions figure et gcf . . . . . . . . . . . . . . . 59
5.1.2 Attributs dune fentre - get . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2 Courbes du plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2.1 La fonction plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2.2 Tracer dans une ou plusieurs fentres . . . . . . . . . . . . . . . . . . . . . . 62
5.2.3 La commande print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.2.4 Courbes paramtriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.2.5 Personnalisation des axes et de la plotting-box . . . . . . . . . . . . . . . . 65
5.2.6 Autres fonctions de trac de courbes planes . . . . . . . . . . . . . . . . . . 68
5.3 Courbes de lespace - Fonction plot3 . . . . . . . . . . . . . . . . . . . . . 69
5.4 Surfaces de lespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.4.1 Modlisation du domaine [x
0
, x
1
] [y
0
, y
1
] - fonction meshgrid . . . . . . . 69
5.4.2 Trac de la surface - fonctions mesh et surf . . . . . . . . . . . . . . . . . 69
5.4.3 Surfaces et courbes de niveau . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.1 Fentres graphiques
5.1.1 Cration dune fentre - fonctions figure et gcf
La fonction figure cre une fentre graphique vide
Exemple 5.1.1 :
>> h = figure
h =
1
Une fentre appele Figure N

1 apparat. La valeur retourne par la fonction figure est le numro


de la fentre. Un second appel la fonction figure cre une seconde fentre appele, on sen doute,
Figure N

2.
>> h = figure
h =
2
CHAPITRE 5. COURBES ET SURFACES
La dernire fentre cre est la fentre active (situe au premier plan). Pour faire passer une fentre
au premier plan, on utilise la fonction figure avec pour argument le numro de la fentre que lon
souhaite activer. Si aucune fentre portant ce numro nexiste elle sera cre.
Rciproquement, la fonction gcf (get currant figure) retourne le numro (ou rfrence) de la fentre
active.
Exemple 5.1.2 :
>> h = gcf
h =
2
>> figure(1)
>> h = gcf
h =
1
La fentre active est la Figure N

2, puis on rend active Figure N

1. Elle passe au premier plan


(il est possible de faire la mme chose en cliquant dans Figure N

1).
p. 60 AJ.Casadevall - mars 2013
5.2. COURBES DU PLAN
5.1.2 Attributs dune fentre - get
(Ce paragraphe peut tre laiss de ct en premire lecture.)
Les fentres possdent un grand nombre dattributs, par exemple un nom (Name), une couleur
de fond (Color), . . . (consultez laide en ligne). On obtient la liste complte des attributs de la
fentre active et de leur valeur, par get(n) o n est le numero de cette fentre.
Exemple 5.1.3 :
>> h = gcf ; get(h)
BackingStore = on
CloseRequestFcn = closereq
Color = [0.8 0.8 0.8]
Colormap = [ (64 by 3) double array]
CurrentAxes = []
. . .
La fonction gcf est utilise pour obtenir le numro de la fentre active, et get pour obtenir la liste
des attributs de la fentre et de leur valeur sous la forme : Nom de lattribut = Valeur de lattribut.
On modie la valeur des attributs dune fentre avec la fonction set :
set(Nom de lattribut, Valeur de lattribut, . . . , . . . )
On peut crer directement une fentre dont les attributs ont une valeur particulire :
figure(Nom de lattribut, Valeur de lattribut, . . . , . . . )
Exemple 5.1.4 :
La squence :
>> figure(Name, essai, NumberTitle, off)
cre une fentre dont le nom est essai.
5.2 Courbes du plan
5.2.1 La fonction plot
Soient x et y deux listes (ou deux vecteurs) de mme longueur. La fonction plot(x, y) trace
dans la fentre active le graphe de y en fonction x. En fait le graphe est obtenu en joignant par
de petits segments de droite les points de coordonnes (x(k), y(k)) pour (1 k length(x)).
lorsquil ny a pas de fentre active, MATLABcre automatiquement une nouvelle fentre.
AJ.Casadevall - mars 2013 p.61
CHAPITRE 5. COURBES ET SURFACES
Exemple 5.2.1 :
Pour obtenir le graphe de la fonction sin(x) sur lintervalle [0, 2] :
>> x=[0:.5:2*pi] ; y=sin(x) ; plot(x,y)
MATLAB dnit automatiquement un systme daxes. La qualit du trac dpend du nombre de
points construits comme le montre lexemple suivant dans lequel on a choisi un pas plus petit pour
dcrire lintervalle [0, 2] :
Exemple 5.2.2 :
>> x=[0:.1:2*pi] ; y=sin(x) ; plot(x,y)
On remarquera que premier trac a t supprim de la fentre et quil a t remplac par le second.
5.2.2 Tracer dans une ou plusieurs fentres
Suivant le contexte, on peut souhaiter que :
les tracs apparaissent dans des fentres direntes : on cre autant de fentres que
de tracs en utilisant la fonction figure :
Exemple 5.2.3 :
>> figure(1) ; x=[0:.1:2*pi] ; c=cos(x) ; plot(x,c)
>> figure(2) ; s=sin(x) ; plot(x,s)
p. 62 AJ.Casadevall - mars 2013
5.2. COURBES DU PLAN
Ces deux squences construisent deux fentres, la premire contenant le graphe de cos(x), la
seconde le graphe de sin(x).
tous les tracs apparaissent simultanment dans la fentre active : on peut procder
de deux faons :
soit en utilisant les commandes hold on et hold off : aprs hold on tous les tracs ont
lieu dans la fentre active ; hold off fait revenir au mode de trac normal.
Exemple 5.2.4 :
>> x=[0:.1:2*pi] ; c=cos(x) ; s=sin(x) ;
>> hold on
>> plot(x,c)
>> plot(x,s)
>> hold off
Les deux graphes, celui de cos(x) et celui de sin(x), apparaissent dans la mme fentre et
dans le mme systme daxes.
soit en donnant comme argument plot la liste de tous les couples de listes (ou de vec-
teurs) correspondant aux courbes tracer : plot(x
1
, y
1
, x
2
, y
2
, ) ce qui est exactement
quivalent
hold on
plot(x
1
, y
1
)
plot(x
2
, y
2
)
. . . .
hold off
Lorsque plusieurs tracs ont lieu dans la mme fentre, il peut tre intressant dutiliser un
style dirent pour distinguer les dirents tracs. Pour cela on ajoute un troisime argument
AJ.Casadevall - mars 2013 p.63
CHAPITRE 5. COURBES ET SURFACES
la dnition de chaque trac : plot(x
1
, y
1
,

st

1
, x
2
, y
2
,

st

2
, ) o

st

i
est une chane de un trois
caractres pris dans le tableau ci-dessous :
Couleur Marqueur Style du trac
y jaune . point - () ligne continue
m magenta o cercle : ligne pointille
c cyan x x - - tirets
r red + plus -. tiret point
g vert toiles
b bleu s carrs
w blanc d losanges
k noir () <, > triangles
Les valeurs notes () sont les valeurs par dfaut.
Exemple 5.2.5 :
>> x=[0:.1:2*pi] ; c=cos(x) ; s=sin(x) ;
>> plot(x,c,o,x,s,*)
Les deux graphes, celui de cos(x) et celui de sin(x), se distinguent par leur trac.
5.2.3 La commande print
La commande print permet dimprimer le contenu de la fentre active, plus prcisment de la
zone rectangulaire dnie par les axes dans laquelle sinscrit le trac ou plot-box.
Avec pour argument un nom de chier,
print -option nomDeFichier
cette commande permet de rediriger limpression vers le chier.
Les options dpendent de lenvironnement (UNIX, Linux, Windows, MacOs) et de la version de
MATLAB utilise (c.f aide en ligne).
p. 64 AJ.Casadevall - mars 2013
5.2. COURBES DU PLAN
Exemple 5.2.6 :
La commande print -deps fig-gr6.pdf applique la fentre ci-dessus donne la gure suivante :
5.2.4 Courbes paramtriques
La fonction plot permet aussi le trac de courbes planes dnies sous la forme :
_

_
x = f(t)
y = g(t)
t [t
0
, t
1
]
on cre un vecteur t correspondant une subdivision de lintervalle [t
0
, t
1
]
on cre deux vecteurs x et y en appliquent respectivement les fonctions f et g t
on trace le graphe avec plot(x,y) (voir plus loin, exemple 5.2.8).
5.2.5 Personnalisation des axes et de la plotting-box
(Ce paragraphe peut tre laiss de ct en premire lecture.)
La fonction plot ainsi que les autres fonctions de trac, cre automatiquement deux axes gradus,
laxe des x et laxe des y :
laxe des x est laxe horizontal ; il est associ au vecteur qui est le premier argument de plot
et couvre lintervalle qui stend de la plus petite valeur min de ce vecteur sa plus grande
valeur xmax ;
laxe des y est laxe vertical ; il est associ au vecteur qui est le second argument de plot et
couvre lintervalle qui stend de la plus petite valeur ymin de ce vecteur et sa plus grande
valeur ymax.
Ces deux axes dnissent la zone rectangulaire ou plotting-box dans laquelle sinscrivent les tracs.
la fonction axis
axis([x
0
, x
1
, y
0
, y
1
]) permet dextraire de la plotting-box la rgion rectangulaire dnie par
les points (x
0
, x
1
) et (y
0
, y
1
), et de lacher dans la fentre active.
AJ.Casadevall - mars 2013 p.65
CHAPITRE 5. COURBES ET SURFACES
Exemple 5.2.7 :
>> x = linspace(0,5,100) ; y = exp(5*x)-1 ;
>> figure(1) ; plot(x,y)
>> figure(2) ; plot(x,y) ; axis([0,5,0,100])
Lexemple prcdent montre que la modication de la zone ache a une incidence non
ngligeable sur le facteur dchelle utilis par MATLAB. Le graphe de la fonction exp(5x)1
qui parat trs plat" dans la gure de gauche ne lest pas autant dans la gure de droite.
axis option modie lapparence des axes et de la plotting-box :
manual xe les bornes (et le facteur dchelle) de chaque axe leur valeur actuelle, de telle
sorte que si hold a la valeur on, les tracs suivants ne pourront les modier ;
equal xe une chelle commune aux deux axes ;
square donne la plotting-box une forme carre ;
normal rend la plotting-box sa forme rectangulaire usuelle et restaure les valeurs des
bornes de chaque axe leur valeur par dfaut ;
auto retour au mode automatique de dnition des axes et de la plotting-box.
Consultez laide en ligne pour dautres usages de axis.
Exemple 5.2.8 :
Dans cet exemple, on trace la courbe (un cercle) dnie par lquation paramtrique :
_
x = cos(t)
y = sin(t)
pour t [0, 2]
>> t = linspace(0,2*pi,500 ); x=cos(t) ; y=sin(t) ;
>> plot(x,y) ; axis equal square ; title(Cercle);
axis equal est ici ncessaire pour que le cercle nait pas la forme dune ellipse :
les fonctions xlabel, ylabel, title et gtext
Les fonctions xlabel(x-legend ) et ylabel(y-legend ) permettent dassocier une lgende
laxe de coordonne correspondant. La fonction title(titre ) ajoute un titre au trac (pas
la fentre) et gtext(texte ) permet de placer avec la souris le texte pass comme argument.
Toutes ces chanes de caractres peuvent contenir des commandes L
A
T
E
X.
p. 66 AJ.Casadevall - mars 2013
5.2. COURBES DU PLAN
Exemple 5.2.9 :
>> t = linspace(0,5,100) ;
>> x1 = t.*exp(t) ; x2 = t.*exp(t/2)/4 ; x3 = t.*exp(t/5)/25
>> plot(t,x1,t,x2,t,x3,) ; title(\beta = 1, 2 et 5)
>> xlabel(t) , ylabel(\gamma (t,\beta))
>> gtext(\beta = 1)
>> gtext(\beta = 2)
>> gtext(\beta = 5)
les fonctions box et grid
La commande box on ache un cadre qui dlimite la plotting-box ; box off supprime ce cadre ;
grid on superpose une grille au trac ; grid off supprime cette grille.
AJ.Casadevall - mars 2013 p.67
CHAPITRE 5. COURBES ET SURFACES
5.2.6 Autres fonctions de trac de courbes planes
Les fonctions drives de plot sont nombreuses. On peut se rfrer laide pour en avoir une
liste exhaustive.
fonctions loglog, semilogx et semilogy
Ces fonctions sont semblables plot except le fait quune chelle logarithmique est utilise
respectivement pour les deux axes, laxe des x et laxe des y.
fonction plotyy
Avec une syntaxe proche de celle de plot, plotyy(x
1
, y
1
,

st

1
, x
2
, y
2
,

st

2
) trace y
1
en fonction
de x
1
et y
2
en fonction de x
2
avec deux axes des y lun gauche de la plotting-box adapt y
1
,
lautre droite adapt y
2
.
fonction fplot
La syntaxe de la fonction fplot est voisine de celle de la fonction fzero (c.f. 4.4.2). La fonction
fplot prend pour arguments le nom (sous forme dune chane de caractres) de la fonction dont
on souhaite tracer le graphe et les valeurs des bornes de lintervalle dtude. Lintervalle dtude
est subdivis par MATLAB de faon donner le trac le plus prcis possible.
les fonctions hist et pie
la fonction hist(x,n) rpartit les valeurs de la liste (ou du vecteur) x en n classes et trace
lhistogramme correspondant (par dfaut n = 10). [N,X] = hist(x,n) retourne dans N leectif
de chacune des classes et dans X labscisse du centre de chaque classe.
La fonction pie(x) dessine un diagramme des valeurs de x normalises par s =

n
i=1
x
i
.
Exemple 5.2.10 :
>> a = randn(1,500) ; hist(a)
>> [N,X] = hist(a)
N =
12 15 47 79 96 102 69 46 26 8
X =
-2.275 -1.786 -1.297 -0.808 -0.318 0.171 0.660 1.150 1.639 2.128
>> pie(N)
p. 68 AJ.Casadevall - mars 2013
5.3. COURBES DE LESPACE - FONCTION PLOT3
5.3 Courbes de lespace - Fonction plot3
La fonction plot3 tends les fonctionnalits de plot aux courbes de lespace. Les possibilits
de personnalisation des axes sont les mmes :
Exemple 5.3.1 :
>> t = linspace(0,10*pi,500) ;
>> x = cos(t) ; y = sin(t) ;
>> plot3(x,y,t) ; title(Helice) ; box on ; rotate3d on
MATLAB donne une vue perspective du graphe de la fonction, inclus dans une plotting-box paralll-
pipdique. Dans les versions rcentes de MATLAB, rotate3d on permet de dplacer la plotting-box
avec la souris.
5.4 Surfaces de lespace
Dans cette section on va voir comment MATLAB permet de reprsenter des surfaces dnies par
une relation z = f(x, y) o f est une fonction continue, dnie sur un domaine [x
0
, x
1
] [y
0
, y
1
].
5.4.1 Modlisation du domaine [x
0
, x
1
] [y
0
, y
1
] - fonction meshgrid
Cette modlisation se fait en deux tapes :
dnition de deux subdivisions rgulires : x pour [x
0
, x
1
] et y pour [y
0
, y
1
] ;
construction dune grille modlisant le domaine [x
0
, x
1
] [y
0
, y
1
] : La grille est dnie
par deux tableaux xx et yy rsultant de [xx,yy] = meshgrid(x,y).
Prcisment, xx(l, k) = x(k) et yy(l, k) = y(l) pour tout k, (1 k length(x)) et pour
tout l, (1 l length(y)) de telle sorte que (xx(l, k), yy(l, k)) = (x(k), y(l)).
Il est alors possible dvaluer les valeurs de f suivant cette grille en appliquant f au couple de
tableaux xx et yy.
5.4.2 Trac de la surface - fonctions mesh et surf
Une fois le domaine dtude modlis par deux tableaux xx et yy, on value les valeurs de
la fonction pour obtenir un tableau z = f(xx,yy). On dessine la surface z = f(x, y) (trace en
perspective dans une plotting-box comme pour plot3) avec lune des fonctions suivantes :
AJ.Casadevall - mars 2013 p.69
CHAPITRE 5. COURBES ET SURFACES
fonction mesh
mesh(xx,yy,z) donne une reprsentation de la surface par un maillage l de fer".
fonction surf
surf(xx,yy,z) donne une reprsentation o les mailles sont colores.
Comme pour les courbes de lespace, la commande rotate3d on permet de dplacer la plotting-
box laide de la souris.
Exemple 5.4.1 :
>> x = -7.5 : .5 : 7.5 ; y = x ; [xx,yy] = meshgrid(x,y) ;
>> r = sqrt(xx.^2+yy.^2)+eps ; z = sin(r)./r ;
>> figure(1) ; mesh(xx,yy,z) ; title(mesh)
>> figure(2) ; surf(xx,yy,z) ; title(surf)
5.4.3 Surfaces et courbes de niveau
Comme pour le trac dune surface, on commence par modliser le domaine dtude par deux
tableaux xx et yy, puis on value les valeurs de la fonction et on obtient un tableau z = f(xx,yy).
Plusieurs fonctions permettent alors de dessiner les surfaces de niveau de f : contour, contour3
et pcolor.
fonction contour
contour(xx,yy,z,n) dtermine n surfaces de niveau(10 par dfaut) et les projette sur le
plan xoy. Au lieu de spcier le nombre de niveaux, il est possible dindiquer leur valeurs
sous forme dune liste [z
0
: pas : z
1
], en particulier pour obtenir la surface correspondant un
niveau donn z
0
, on utilisera contour(xx,yy,z,[z0]). En niveaux de gris (c.f. colormap),
la couleur des courbes de niveau est dautant plus claire que la valeur du niveau lest. Il est
possible de xer la couleur des courbes de niveau en utilisant un un caractre (c.f. code des
couleurs 5.2.2 comme dernier argument.
fonction contour3
Fonction semblable contours, contour3 dtermine n surfaces de niveau et en donne une
reprsentation en trois dimensions. Comme pour contour, la couleur des courbes de niveau
est dautant plus claire que la valeur du niveau lest.
fonction pcolor
pcolor(xx,yy,z) gnre une image plane la mme chelle que contour et dont les pixels
ont une couleur qui si on utilise une chelle de gris (c.f. colormap), est dautant plus claire
que la valeur de f(x, y) est grande. Cette fonction est utilise en conjonction avec contour.
p. 70 AJ.Casadevall - mars 2013
5.4. SURFACES DE LESPACE
Exemple 5.4.2 :
Dans les exemples ci-dessous, on utilisera une fonction-test prdnie peaks.
>> [xx,yy,z] = peaks ;
>> figure(1) ; mesh(xx,yy,z) ; title(peaks)
>> figure(2) ; contour3(xx,yy,z) ; title(contour3)
>> figure(3) ; contour(xx,yy,z) ; title(contour)
>> figure(4) ; pcolor(xx,yy,z)
>> shading interp % supprime la grille
>> hold on
>> contour(xx,yy,z,k) % superpose les courbes de niveau en noir
>> title(contour avec pcolor)
>> hold off
AJ.Casadevall - mars 2013 p.71
CHAPITRE 5. COURBES ET SURFACES
p. 72 AJ.Casadevall - mars 2013
6
Importation et exportation de
donnes
6.1 Retour sur les commandes save et load . . . . . . . . . . . . . . . . . . . 73
6.1.1 Enregistrement de la valeur de tableaux dans un chier-text - save . . . . 73
6.1.2 Retrouver la valeur dun tableau - load . . . . . . . . . . . . . . . . . . . . 74
6.2 Lire et crire dans un chier Excel . . . . . . . . . . . . . . . . . . . . . 75
6.2.1 Importer des valeurs dun chier Excel - xlsread . . . . . . . . . . . . . . 75
6.2.2 Exporter des valeurs vers une feuille Excel - xlswrite . . . . . . . . . . . 76
Les changes de donnes entre applications utilisent gnralement des chiers. MATLAB possde
un grand nombre de fonctions pour les grer c.f. help iofun. En particulier, les versions les plus
rcentes de MATLAB possdent un assistant dimport de chier qui permet daccder de nombreux
types de chiers (consultez laide).
Cependant une mthode trs simple consiste en lutilisation de chiers-text, lutilisation de chiers
binaires se rvlant parfois plus dlicate (on peut en eet contrler et modier le contenu dun
chier-text laide dun simple diteur). Cest donc cette mthode que nous allons dvelopper dans
cette premiere section.
6.1 Retour sur les commandes save et load
La commande save, on la vu c.f. 2.3.3, permet denregistrer la valeur dune ou plusieurs
variables sous forme dun chier binaire appel chier.mat. Rciproquement, la commande load
ajoute le contenu dun tel chier lenvironnement de travail de la session en cours.
Les commandes save et load peuvent aussi malgr quelques restrictions, tre utilises avec des
chiers-text.
6.1.1 Enregistrement de la valeur de tableaux dans un chier-text - save
La commande
save <nom de fichier> <liste de variables> -ascii
enregistre les tableaux associs aux variables de <liste de variables> dans le chier-text dsign
par <nom de fichier> , en suivant les conventions suivantes :
les valeurs des lments du ou des tableaux sont enregistres au format scientique avec huit
chires signicatifs, le sparateur dcimal tant un point ;
CHAPITRE 6. IMPORTATION ET EXPORTATION DE DONNES
les lments dune mme ligne sont spars par des espaces ;
les lignes successives sont spars par des sauts de ligne.
Exemple 6.1.1 :
>> a = 1 : 5 , h = hilb(3)
a =
1 2 3 4 5
b =
1.0000 0.5000 0.3333
0.5000 0.3333 0.2500
0.3333 0.2500 0.2000
>> save ab.txt a b -ascii
On peut diter les chier ainsi crs avec nimporte quel diteur ou directement dans MATLAB en
utilisant la commande type :
Exemple 6.1.2 :
>> type ab.txt
1.0000000e+00 2.0000000e+00 3.0000000e+00 4.0000000e+00 5.0000000e+00
1.0000000e+00 5.0000000e-01 3.3333333e-01
5.0000000e-01 3.3333333e-01 2.5000000e-01
3.3333333e-01 2.5000000e-01 2.0000000e-01
Les valeurs des lments des deux tableaux ont t enregistres en commenant par les valeurs de
a suivies de celles de b. Cependant, on peut remarquer que le nombre dlments de chacune des
lignes du chier-text nest pas constant : cinq pour la premire ligne, trois ensuite.
Il est possible denregistrer les valeurs des lments avec seize chires signicatifs au lieu de huit,
en faisant suivre -ascii de loption -double :
Exemple 6.1.3 :
>> c = pi/6 : pi/6: pi/2
c =
0.5236 1.0472 1.5708
>> save c.txt c -ascii -double
>> type c.txt
5.2359877559829882e-01 1.0471975511965976e+00 1.5707963267948966e+00
6.1.2 Retrouver la valeur dun tableau - load
On dira quun chier-text a une structure valide pour la commande load lorsque quil a
la forme dun tableau de nombres :
le chier ne contient que des chanes de caractres pouvant reprsenter des valeurs numriques
(le sparateur dcimal tant ncessairement un point), spares par des espaces ;
toutes les lignes du chier comportent exactement le mme nombre de telles chanes de
caractres.
Il nest pas cependant ncessaire que le nombre despaces sparant les direntes chane numriques
soit constant dans tout le chier, ni que le format des chanes numriques soit le mme.
p. 74 AJ.Casadevall - mars 2013
6.2. LIRE ET CRIRE DANS UN FICHIER EXCEL
Exemple 6.1.4 :
Le chier d.txt suivant
1.00 2.0 3 4.0 5.0000000e+000 6.0000000e+000
6.0e+000 5.00e+00 1.00 2.0 3 4.0
est valide. Il comporte six chanes numriques par lignes. Par contre le chier dni dans lexemple
6.1.1 ci-dessus nest pas valide puisque ses lignes ne comportent pas le mme nombre de valeurs
numriques.
Si le chier <ch> est valide,
load <fich> -ascii
ajoute lenvironnement de travail une nouvelle variable dont le nom est celui du chier priv de
son extension et dont la valeur est le tableau dni par le chier.
Exemple 6.1.5 :
>> load d.txt -ascii
d =
1 2 3 4 5 6
6 5 1 2 3 4
On notera que le comportement de load dans le cas o son argument est un chier-text est trs
dirent du cas o largument est un chier .mat c.f. 2.3.3.
6.2 Lire et crire dans un chier Excel
On utilise les fonctions xlsread pour la lecture et xlswrite pour lcriture.
La fonction xlsfinfo permet de savoir si le chier dont le nom est pass en argument est un chier
excel qui peut tre utilis par les fonctions xlsread ou xlswrite.
La squence
filename = exemple.xlsx;
statut = xlsfinf(filename)
retournera Microsoft Excel Spreadsheet si le chier exemple.xlsx est bien un chier Excel
valide, la chane vide sinon.
6.2.1 Importer des valeurs dun chier Excel - xlsread
La squence :
filename = exemple.xlsx;
sheet = 1;
xlRange = B2:C3;
A = xlsread(filename, sheet, xlRange)
aecte la variable A le contenu numrique de la plage de cellules dnies par la chane de caractres
xlRange :
A =
1 2
3 4
AJ.Casadevall - mars 2013 p.75
CHAPITRE 6. IMPORTATION ET EXPORTATION DE DONNES
Dans MATLAB et Excel, les dates peuvent tre reprsentes par des entiers. Les fonctions datestr
et datenum permettent facilement la conversion du format string au format numrique (attention
la date origine de lchelle des temps nest pas la mme dans MATLAB , dans Excel for Windows
et dans Excel for Mac).
Supposons que le chier Excel exemple2.xlsx comporte dans sa premire feuille partir de la
cellule A1 les donnes suivantes :
cc exam
1 2
4 5
alors, la squence :
filename = exemple2.xlsx;
sheet = 1;
xlRange = A1:B3;
[A, texte, ] = xlsread(filename, sheet, xlRange)
aecte la variable A le contenu numrique de la plage de cellules dnies par la chane de caractres
xlRange et au tableau de chanes de caractres texte le contenu non-numrique de la plage de
cellules.
A =
1 2
3 4
texte =
cc exam


6.2.2 Exporter des valeurs vers une feuille Excel - xlswrite
xlswrite permet lcriture de valeurs numriques ou non dans un chier Excel.
Exemple 6.2.1 :
La squence :
filename = exemple3.xls;
A = {Heure,Temperature; 10,98; 11,99; 12,97};
sheet = 1;
xlRange = E1;
status = xlswrite(filename,A,sheet,xlRange)
crit dans la premire feuille du chier Excel exemple3.xls, partir de la position E1, les valeurs
donnes et aecte la variablestatus la valeur 1 si lopration sest compltement eectue, 0
sinon.
p. 76 AJ.Casadevall - mars 2013
7
Matrices-test
On trouve un trs grand nombre de matrices test aux adresses :
http ://www.netlib.org/toms/694
http ://math.nist.gov/MatrixMarket/
En voici quelques unes :
Matrices bordes La matrice borde dordre n est une matrice symtrique de terme gnral
_

_
m
ii
= 1
m
in
= m
ni
= 2
1i
0 sinon
Exemple pour n = 3 :
_

_
1 1/2 1/4
1/2 1 0
1/4 0 1
_

_
Matrices Ding-dong La matrice ding-dong dordre n est une matrice symtrique de terme
gnral
m
ij
=
1
2(n i j + 1.5
Exemple pour n = 3 :
_

_
1/5 1/3 1
1/3 1 1
1 1 1/3
_

_
Matrices de Franc La matrice de Franc dordre n est la matrice de terme gnral
_
m
ij
= 0 si i j + 2
m
ij
= min i, j sinon
Exemple pour n = 3 :
_

_
1 1 1
1 2 2
0 2 3
_

_
Matrices de Hilbert La matrice de Hilbert dordre n (gnre par la fonction matlab hilb)
est une matrice de terme gnral
m
ij
=
1
i + j 1
CHAPITRE 7. MATRICES-TEST
. Exemple pour n = 3 :
_

_
1 1/2 1/3
1/2 1/3 1/4
1/3 1/4 1/5
_

_
Matrices kms Les matrices kms dordre n dpendent dun paramtre p compris strictement
entre 0 et 1. Leur terme gnral est de la forme m
ij
= p
|ij|
.
Exemple pour n = 3 et p = 1/2 :
_

_
1 1/2 1/4
1/2 1 1/2
1/4 1/2 1
_

_
Matrices de Lehmer La matrice de Lehmer dordre n est une matrice symtrique de terme
gnral :
_
m
ij
=
i
j
pour i j
m
ij
=
j
i
pour j i
Exemple pour n = 3 :
_

_
1 1/2 1/3
1/2 1 2/3
1/3 2/3 1
_

_
Matrices de Lotkin La matrice de Lotkin dordre n est obtenue partir de la matrice de
Hilbert dordre n en remplaant les termes de la premire ligne par des 1.
_
m
1j
= 1 pour i = 1
m
ij
=
1
i+j1
pour i = 1
Exemple pour n = 3 :
_

_
1 1 1
1/2 1/3 1/4
1/3 1/4 1/5
_

_
Matrices de Moler La matrices de Moler dordre n est une matrice symtrique dnie
positive de terme gnral :
_
m
ii
= i
m
ij
= min(i, j) 2 pour j = i
Exemple pour n = 3 :
_

_
1 1 1
1 2 0
1 0 3
_

_
Matrices de Pascal La matrices de Pascal dordre n est une matrice symtrique dnie
positive de terme gnral :
_
m
ij
= C
j1
i1
pour j i
m
ij
= C
1i
j1
pour i j
Exemple pour n = 4 :
_

_
1 1 1 1
1 1 2 3
1 2 1 3
1 3 3 1
_

_
p. 78 AJ.Casadevall - mars 2013
Matrices de Pei Les matrices de Pei dordre n dpendent dun paramtre a. Leur terme
gnral est de la forme :
_
m
ii
= 1 + a
m
ij
= 1 pour i = j
Pour n = 3 et a = 2 on obtient :
_

_
3 1 1
1 3 1
1 1 3
_

_
Matrice de Rosser La matrice de Rosser est une matrice symtrique dordre 8 gnre
directement dans matlab par la fonction rosser.
Matrices de Vandermonde Les matrices de Vandermonde sont des matrices mn dont le
terme gnral est de la forme m
ij
= p
i1
j
o les p
j
sont des nombres rels donns. Elles sont
gnres dans matlab par la fonction vander.
Pour m = 4 et n = 3, la matrice de Vandermonde gnre par les nombres (1, 2, 5) est :
_

_
1 1 1
1 2 5
1 4 25
1 8 125
_

_
Matrices de Wilkinson Les matrices de Wilkinson sont des matrices tridiagonales gnres
dans MATLAB par la fonction wilkinson.
AJ.Casadevall - mars 2013 p.79
CHAPITRE 7. MATRICES-TEST
p. 80 AJ.Casadevall - mars 2013
8
Exemples
Mise en uvre
Cration dun rpertoire de travail
Crez dans votre home directory un rpertoire tpMatlab.
Une session MATLAB
Ouvrez une session sur votre poste de travail.
Lancer MATLAB en cliquant sur licne de MATLAB ou en tapant matlab depuis un
terminal. MATLAB ouvre alors une fentre (prompt >>) appele fentre de commande.
Choisir le repertoire tpMatlab comme rpertoire de travail en tapant dans la fentre de
commande :
cd P:
cd tpMatlab
En n de session, vous quitterez MATLAB en tapant quit dans la fentre de commande.
Aide en ligne
MATLAB comporte un trs grand nombre de fonctions. Heureusement, une aide en ligne
ecace peut tre utilise :
help : aide de laide et liste thmatique ;
help item : dnition de item et exemples de mise en oeuvre ;
lookfor sujet : liste des rubriques de laide en ligne en relation avec le sujet indiqu ;
helpdesk : aide sous forme de chiers hypertexte.
Exercice 1 - Oprations
1. Crez les tableaux suivants
a =
_
1 2 3 4 5
_
b =
_

_
1
2
3
4
5
_

_
A =
_

_
1 2 0 0 0
0 0 2 3 1
0 0 0 2 2
0 0 0 0 1
1 1 1 0 0
_

_
B =
_

_
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
_

_
2. Extraire la premire ligne, la deuxime colonne de la matrice A, les termes diagonaux
de B, la sous-matrice A(1..2, 2..5) de A.
3. Testez les direntes oprations sur ces tableaux : +, , , /, \. Que se passe-t-il lorsquon
fait prcder ces oprateurs dun point ?
CHAPITRE 8. EXEMPLES
Exercice 2
Avec une matrice A dordre lev, la matrice de Hilbert par exemple (fonction hilb) on veut
mettre en vidence les problmes derreur de calcul :
1. Fixez un vecteur x0 et valuez b0 = A*x0.
2. Rsolvez laide de loprateur \ le systme Ax = b0. Si A, B, X sont des matrices :
X = B/A est la solution de XA = B ;
X = A\B est la solution de AX = B
3. Comparez x et x0 en valuant lerreur sur x, cest dire la norme x x0
(norm(x - x0)) ou mieux la quantit =
xx0
x0
qui est appele erreur relative sur x.
Exercice 3
1. Crez laide dun diteur un chier que vous appellerez sigma2a.m qui contiendra le
texte suivant :
function s=sigma2a(n)
% calcule la somme des carrs des n premiers entiers
s=0; k=1;
for k = 1:n
s=s+(k*k);
end % termine le for
2. Dans la fentre matlab taper s=0 ; s = sigma2a(100) puis s=1000 ; s =
sigma2a(100). Conclusion?
3. Crez de mme le chier sigma2b.m contenant le texte :
function s=sigma2b(n)
% somme des carres a partir de la liste des n premiers entiers
s=0; k=1;
while (k<=n)
s=s+(k*k);
k=k+1;
end
4. Enn crez le chier sigma2c.m contenant le texte :
function s=sigma2c(n)
% somme des carres a partir de la liste des n premiers entiers
l=(1:n).2;
s=sum(l);
5. Testez les fonctions sigma2a et sigma2b. Pour comparer leurs performances utilisez la
commande profile que vous chercherez dans laide.
6. Concluez ?
Exercice 4
1. crivez une fonction normsup qui dtermine le plus grand lment en valeur absolue dun
vecteur ou dune matrice. Pour cela vous pourrez utiliser la fonction size et la structure
de slection :
p. 82 AJ.Casadevall - mars 2013
if (prdicat )
instruction 1
else
instruction 2
end
2. Compltez cette fonction pour quelle dtermine galement la position de cet lment
dans le vecteur ou la matrice.
3. En vous aidant de laide comparez cette fonction celle calculant la norme-sup dun
vecteur ou dune matrice.
Exercice 5
1. Crez la fonction puiss suivante :
function [v,p]=puiss(Mat, u, n)
% calcule le n ime itr du vecteur u
v=u;
for k=1:n
z=Mat*v;
p=v*z;
v=sign(z*u)*z/normsup(z);
end
2. Testez la fonction puiss. Elle sera appele sous la forme
x,p =puiss(A,x,n)
o A, x et n ont des valeurs pertinentes.
3. Remplacez la boucle for par une boucle while pour que le calcul sarrte lorsque
Ax lx <
.
Ex 6 - Algorithme de Gauss
1. Implantez lalgorithme de rduction dun systme linaire Ax = b la forme triangulaire
sous forme dune fonction Sg. Testez-le avec des matrices test prdnies (utilisez laide
en ligne).
2. Comparez le rsultat avec celui obtenu par b\A.
3. Modiez la fonction prcdente pour quelle calcule linverse dune matrice carre dordre
n (vous chercherez rsoudre le systme matriciel AB = I
n
).
4. Comparez le rsultat avec celui obtenu par la fonction prdnie inv.
Ex 7 - Trac de courbe On complte lexercice 2 en faisant tracer la courbe de lerreur relative
commise sur le calcul de la solution de Hx = b
0
o b
0
= Ax
0
, en fonction de lordre n de la
matrice de Hilbert H
n
. Vous prendrez pour x
0
le vecteur dont toutes les composantes sont
gales 1.
AJ.Casadevall - mars 2013 p.83
CHAPITRE 8. EXEMPLES
1. crivez une fonction Erreur(n) qui retourne en fonction de n, la valeur de
x x
0

x
0

o x est la solution de H
n
x = b
0
Enregistrez la fonction dans le chier Erreur.m.
2. Appelez la fonction Erreur(n) depuis le script Graph suivant :
for n=1:20
f(n) = Erreur(n) ;
end ;
figure(1)
plot(f)
p. 84 AJ.Casadevall - mars 2013
Index
abs, 30, 54
acos, 54
addpath, 9, 42
aide en ligne, 8
angle, 54
ans, 15, 38
asin, 54
atan, 54
axis, 65
bloc, 25
box, 67
break, 44
caractres, 14
cd, 9, 42
ceil, 54
cell, 12
cell array, 14
chane de caractres
concatnation, 14
chaines de caractres, 14
char, 12
class, 17
classe, 12
clear, 17
commande, 8
conj, 54
continue, 44
contour, 70
contour3, 70
conv, 54
cos, 54
cov, 30
deconv, 54
delete, 10, 42
det, 55
diag, 26, 27
diagonale principale, 26
dir, 10, 42
disp, 41
double, 12
edit, 42
eig, 55, 56
elsif, 43
end, 21, 23, 42, 43, 45, 46
eps, 15
epsilon-machine, 15
espace de travail, 15
exp, 54
eye, 27
false, 12
fentre graphique, 59
attributs, 61
chier .mex, 7
chier .m, 7
chier.mat, 17
figure, 59
fix, 54
floor, 54
fonction, 46
fonction anonyme, 50
fonction Inline, 49
handle, 50
m-fonction, 47
format, 42
fplot, 68
fzero, 56
gallery, 27
gcf, 59
get, 61
grid, 67
gtext, 66
help, 8
helpwin, 9
INDEX
hilb, 27
hist, 68
hold, 63
i, 15
if, 42
if...else, 42
imag, 13, 54
inf, 15
input, 40
inv, 55
invhilb, 27
isdir, 10
issorted, 31
j, 15
length, 20
linspace, 19
liste, 13, 18
end, 21
accs aux lments, 21
constructeur de listes, 18
longueur, 20
transposition, 19
valeur littrale, 18
load, 17, 74
log, 54
log10, 54
logical, 12
logical array, 36
loglog, 68
lookfor, 8
ls, 10, 42
m-le
emphm-fonction, 47
m-le, 39
lments dcriture, 40
cration, 39
excution, 40
magic, 27
MATLAB, 7
MATLABPATH, 9
max, 29
mean, 30
menu, 40
mesh, 69
meshgrid, 69
min, 29
mkdir, 10
NaN, 15
nargin, 51
nargout, 51
nombres, 12
nombres entiers, 12
nombres rels, 12
nombres rcomplexes, 12
norm, 20, 31
norme vectorielle, 20
normes matricielle, 31
num2str, 41
objet, 12
ones, 19, 27
oprateurs, 34
additifs, 34
de comparaison, 34
exponentiation, 34
logiques, 34
multiplicatifs, 34
ngation, 34
transposition, 34
oprateurs arithmtiques, 35
oprateurs de comparaison, 36
oprateurs logiques, 37
oprations, 34
pascal, 27
path, 7
pause, 42
pcolor, 70
pi, 15
pie, 68
plot, 61
plot3, 69
plotting-box, 65
plotyy, 68
poly, 55
polyval, 54
print, 64
prod, 28
pwd, 9, 42
quad, 57
quad8, 57
rpertoire de travail, 7
chemin daccs, 7
rand, 27
p. 86 AJ.Casadevall - mars 2013
INDEX
real, 13, 54
realmax, 15
realmin, 15
repmat, 25
reshape, 31
rmpath, 10
roots, 54
round, 54
save, 17, 73
script, 7, 39
m-le, 39
semilogx, 68
semilogy, 68
signature, 8
sin, 54
size, 16
sort, 31
sous-listes, 22
sous-vecteurs, 22
sparse, 12
sqrt, 54
structure, 12
sum, 28
surf, 69
switch...case, 46
symbole de continuation, 40
tableau
end, 23
accs aux lments, 23
concatenation, 22
lignes et colonnes, 24
valeur littrale, 22
tableau boolen, 36
tableaux, 22
tableaux de nombres, 13
tan, 54
toolboxe, 7
trace, 55
transposition, 19
trapz, 57
tril, 26
triu, 26
true, 12
try...catch, 46
type, 42
valeur littrale, 12
vander, 27
variable, 15
aectation, 15
identicateur, 15
vecteur, 13, 19
end, 21
accs aux lments, 21
longueur, 20
transposition, 19
valeur littrale, 19
vecteur-ligne, 18
what, 42
while, 45
who, 15
whos, 15
wilkinson, 27
workspace, 15
xlabel, 66
xlsfinfo, 75
xlsread, 75
xlswrite, 75
ylabel, 66
zeros, 19, 27
AJ.Casadevall - mars 2013 p.87

Vous aimerez peut-être aussi