Académique Documents
Professionnel Documents
Culture Documents
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
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
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