SlideShare uma empresa Scribd logo
1 de 79
Baixar para ler offline
Universit´ Paris-Dauphine
e
e
Deug Sciences mention Mass - 2i`me ann´e
e

Introduction a MATLAB
`

1

0.5

0

8

-0.5
10

6
4
2

5
0
0

-2
-4

-5

-6
-10

-8

Andr´ Casadevall
e
mars 2004
p. 2

AJ.Casadevall - mars 04
Table des mati`res
e
1 MATLAB
1.1 Qu’est ce que MATLAB ? . . . . . . . . . . . . .
1.2 Une session MATLAB . . . . . . . . . . . . . . .
1.2.1 Lancer, quitter MATLAB . . . . . . . . .
1.2.2 Fonctions et commandes . . . . . . . . . .
1.2.3 Aide en ligne - help . . . . . . . . . . . .
1.2.4 Interaction avec le syst`me d’exploitation
e

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

7
7
7
8
8
8
9

2 Les “objets” de MATLAB
2.1 Objets et classes de MATLAB . . . . . . . . . . . . . . . . . . .
2.2 Valeurs litt´rales . . . . . . . . . . . . . . . . . . . . . . . . . .
e
2.2.1 Nombres . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2 Tableaux de nombres . . . . . . . . . . . . . . . . . . . .
2.2.3 Caract`res et chaˆ
e
ınes de caract`res . . . . . . . . . . . .
e
2.2.4 Cellules et tableaux de cellules - cell array . . . . . .
2.3 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Identificateurs . . . . . . . . . . . . . . . . . . . . . . .
2.3.2 Affectation . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.3 Espace de travail . . . . . . . . . . . . . . . . . . . . . .
2.4 Listes et vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.1 Construction de listes . . . . . . . . . . . . . . . . . . .
2.4.2 Construction de vecteurs . . . . . . . . . . . . . . . . .
2.4.3 Nombre d’´l´ments d’une liste ou d’un vecteur - length
ee
2.4.4 Acc`s aux ´l´ments d’une liste ou d’un vecteur . . . . .
e
ee
2.4.5 Extraction de sous-listes ou de sous-vecteurs . . . . . .
2.5 Tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.1 Construction de tableaux . . . . . . . . . . . . . . . . .
2.5.2 Acc`s aux ´l´ments d’un tableau . . . . . . . . . . . . .
e
ee
2.5.3 Lignes et colonnes d’un tableau . . . . . . . . . . . . . .
´e
2.5.4 El´ments diagonaux d’un tableau - diag . . . . . . . . .
2.5.5 Sous-tableaux et blocs - fonctions tril et triu . . . .
2.5.6 Tableaux particuliers . . . . . . . . . . . . . . . . . . . .
2.6 Op´rations sur les ´l´ments d’un tableau . . . . . . . . . . . . .
e
ee
2.6.1 Fonctions sum et prod . . . . . . . . . . . . . . . . . . .
2.6.2 Fonctions max et min . . . . . . . . . . . . . . . . . . . .
2.6.3 Fonction mean . . . . . . . . . . . . . . . . . . . . . . .
2.6.4 Fonction cov . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

11
11
12
12
12
13
14
14
15
15
15
18
19
19
20
21
22
22
22
23
24
24
25
26
26
26
27
27
28

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
`
TABLE DES MATIERES
3 Expressions, scripts et m-files
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Op´rations de MATLAB . . . . . . . . . . . . . . . . .
e
3.2.1 Op´rateurs . . . . . . . . . . . . . . . . . . . .
e
3.2.2 Op´rations sur les tableaux . . . . . . . . . . .
e
3.2.3 Op´rations bool´ennes . . . . . . . . . . . . . .
e
e
´
3.2.4 Evaluation des expressions - variable ans . . .
3.3 Scripts et m-files . . . . . . . . . . . . . . . . . . . . .
3.3.1 Scripts . . . . . . . . . . . . . . . . . . . . . . .
3.3.2 Cr´ation de m-files . . . . . . . . . . . . . . . .
e
3.3.3 Ex´cution d’un m-file . . . . . . . . . . . . . .
e
´ ements d’´criture de m-files . . . . . . . . . .
3.3.4 El´
e
3.4 Structures algorithmiques . . . . . . . . . . . . . . . .
3.4.1 S´lection - if . . . end et if . . . else . . . end
e
3.4.2 R´p´tition - for . . . end . . . . . . . . . . . .
e e
3.4.3 It´ration conditionnelle - while . . . end . . . .
e
3.4.4 Construction switch . . . case . . . . . . . . .
3.5 Fonctions et m-files . . . . . . . . . . . . . . . . . . . .
3.5.1 Syntaxe . . . . . . . . . . . . . . . . . . . . . .
3.5.2 R`gles et propri´t´s . . . . . . . . . . . . . . .
e
ee
3.5.3 Traitement des erreurs - try . . . catch . . . .
3.5.4 Optimisation des calculs . . . . . . . . . . . . .
4

MATLAB et l’analyse num´rique
e
4.1 Fonctions “num´riques” . . . . . . . . . .
e
4.2 Polynˆmes . . . . . . . . . . . . . . . . . .
o
4.3 Calcul matriciel . . . . . . . . . . . . . . .
4.4 Fonctions d’une variable . . . . . . . . . .
4.4.1 Recherche de minimum - fmin . .
4.4.2 Recherche de racines - fzero . . .
4.4.3 Int´gration - trapz, quad et quad8
e

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

5 Courbes et surfaces
5.1 Fenˆtres graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . .
e
5.1.1 Cr´ation d’une fenˆtre - fonctions figure et gcf . . . . . . . .
e
e
5.1.2 Attributs d’une fenˆtre - get . . . . . . . . . . . . . . . . . . .
e
5.2 Courbes du plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.1 La fonction plot . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.2 Tracer dans une ou plusieurs fenˆtres . . . . . . . . . . . . . . .
e
5.2.3 La commande print . . . . . . . . . . . . . . . . . . . . . . .
5.2.4 Courbes param´triques . . . . . . . . . . . . . . . . . . . . . .
e
5.2.5 Personnalisation des axes et de la plotting-box . . . . . . . . .
5.2.6 Autres fonctions de trac´ de courbes planes . . . . . . . . . . .
e
5.3 Courbes de l’espace - Fonction plot3 . . . . . . . . . . . . . . . . . . .
5.4 Surfaces de l’espace . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.1 Mod´lisation du domaine [x0 , x1 ] × [y0 , y1 ] - fonction meshgrid
e
5.4.2 Trac´ de la surface - fonctions mesh et surf . . . . . . . . . .
e
5.4.3 Surfaces et courbes de niveau . . . . . . . . . . . . . . . . . . .
p. 4

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

29
29
30
30
30
32
33
33
33
34
34
34
36
36
37
39
39
40
41
41
42
42

.
.
.
.
.
.
.

45
45
46
47
48
48
48
49

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

51
51
51
53
53
53
54
56
57
57
60
61
61
61
61
62

AJ.Casadevall - mars 04
`
TABLE DES MATIERES
6

7

Importation et exportation de donn´es
e
65
6.1 Retour sur les commandes save et load . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.1.1 Enregistrement de la valeur de tableaux dans un fichier-text - save . . . . . 65
6.1.2 Retrouver la valeur d’un tableau - load . . . . . . . . . . . . . . . . . . . . . 66
Matrices-test

69

8 Exemples

73

AJ.Casadevall - mars 04

p.5
`
TABLE DES MATIERES

p. 6

AJ.Casadevall - mars 04
1
MATLAB
1.1
1.2

1.1

Qu’est ce que MATLAB ? . . . . . . . . . . .
Une session MATLAB . . . . . . . . . . . . .
1.2.1 Lancer, quitter MATLAB . . . . . . . . . . .
1.2.2 Fonctions et commandes . . . . . . . . . . . .
1.2.3 Aide en ligne - help . . . . . . . . . . . . . .
1.2.4 Interaction avec le syst`me d’exploitation . .
e

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

. . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

7
7
8
8
8
9

Qu’est ce que MATLAB ?

MATLAB pour MATtrix LABoratory, est une application qui a ´t´ con¸ue afin de fournir un
ee
c

environnement de calcul matriciel simple, efficace, interactif et portable, permettant la mise en
œuvre des algorithmes d´velopp´s dans le cadre des projets linpack et eispack.
e
e
MATLAB est constitu´ d’un noyau relativement r´duit, capable d’interpr´ter puis d’´valuer les
e
e
e
e
expressions num´riques matricielles qui lui sont adress´es :
e
e
– soit directement au clavier depuis une fenˆtre de commande ;
e
– soit sous forme de s´quences d’expressions ou scripts enregistr´es dans des fichiers-texte
e
e
appel´s m-files et ex´cut´es depuis la fenˆtre de commande ;
e
e e
e
– soit plus rarement sous forme de fichiers binaires appel´s mex-files ou fichiers .mex g´n´r´s
e
e ee
a
` partir d’un compilateur C ou fortran.
Ce noyau est compl´t´ par une biblioth`que de fonctions pr´d´finies, tr`s souvent sous forme de
ee
e
e e
e
fichiers m-files, et regroup´s en paquetages ou toolboxes . A cˆt´ des toolboxes requises local et
e
oe
matlab, il est possible d’ajouter des toolboxes sp´cifiques ` tel ou tel probl`me math´matique,
e
a
e
e
Optimization Toolbox, Signal Processing Toolbox par exemple ou encore des toolboxes cr´es par
e
l’utilisateur lui-mˆme. Un syst`me de chemin d’acc`s ou ou path permet de pr´ciser la liste des
e
e
e
e
r´pertoires dans lesquels MATLAB trouvera les diff´rents fichiers m-files.
e
e

1.2

Une session MATLAB

L’interface-utilisateur de MATLAB varie l´g`rement en fonction de la version de MATLAB et du
e e
type de machine utilis´e. Elle est constitu´ d’une fenˆtre de commande qui peut ˆtre compl´t´e par
e
e
e
e
ee
une barre de menu et pour les versions les plus r´centes de deux fenˆtres, l’une affichant l’historique
e
e
de la session et l’autre la structure des r´pertoires accessibles par MATLAB.
e
Avant la premiere utilisation de MATLAB, il est vivement recommand´ (c’est mˆme indispensable
e
e
dans le cas d’une installation en r´seau) ` chaque utilisateur de cr´er un r´pertoire de travail, tpMl
e
a
e
e
CHAPITRE 1. MATLAB
par exemple, o` il pourra enregistrer ses fichiers. Lors de la premi`re session, le chemin d’acc`s `
u
e
e a
ce r´pertoire sera ajout´ aux chemins d’acc`s connus de MATLAB (MATLABPATH), soit en utilisant
e
e
e
l’item Set Path du menu File, soit en tapant la commande addpath suivie du chemin d’acc`s au
e
repertoire de travail.

1.2.1

Lancer, quitter MATLAB

Dans l’environnement unix, on tape la commande matlab sur la ligne de commande active ;
dans les environnements Windows ou MacOs, il suffit de cliquer sur l’icˆne de l’application.
o
La fenˆtre de commande de MATLAB s’ouvre et on entre alors les commandes ou les expressions
e
ae
` ´valuer a droite du prompt >>. Le processus d’´valuation est d´clench´ par la frappe de la touche
`
e
e
e
<enter>.
A chaque d´but session, l’utilisateur indiquera a MATLAB que le r´pertoire tpMl d´fini
e
`
e
e
pr´c´demment est le r´pertoire de travail de la session en tapant la commande cd suivie du chemin
e e
e
d’acc`s au r´pertoire tpMl.
e
e
On quitte MATLAB en tapant quit dans la fenˆtre de commande ou en s´lectionnant quit dans
e
e
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 num´rique ou vectorielle, mais efe
fectuent une action sur l’environnement de la session en cours. Ces fonctions sont alors appel´es
e
commandes. Elles sont caract´ris´es par le fait que leurs arguments (lorsqu’ils existent) ne sont
e e
pas plac´s entre parenth`ses. Les autres fonctions se comportent de fa¸on assez semblable aux fonce
e
c
tions math´matiques et la valeur qu’elles calculent peut ˆtre affect´e ` une variable.
e
e
e a
Dans de nombreux cas, fonctions ou commandes peuvent ˆtre appel´es avec des arguments diff´rents
e
e
e
soit par leur nombre, soit par leur nature (nombre, vecteur, matrice, . . . ). Le traitement effectu´
e
d´pend alors du nombre et de la nature des arguments. Par exemple, nous verrons plus loin que la
e
fonction diag appel´e avec une matrice pour argument retourne le vecteur constitu´ par sa diage
e
onale principale ou vecteur diagonal. Lorsque cette mˆme fonction est appel´e avec un vecteur
e
e
pour argument, elle retourne la matrice diagonale dont le vecteur-diagonal est le vecteur donn´.
e
Aussi une fonction ou une commande n’est pas caract´ris´e par son seul nom, mais par sa signature
e e
c’est ` dire l’ensemble constitu´ de son nom et de la liste de ses param`tres.
a
e
e

1.2.3

Aide en ligne - help

e
e
MATLAB comporte un tr`s grand nombre d’op´rateurs, de commandes et de fonctions. Tous ne
seront pas d´crits dans ce document d’autant qu’une aide en ligne efficace peut ˆtre utilis´e. On
e
e
e
peut taper les commandes suivantes :
– help permet d’obtenir l’aide de l’aide et donne une liste th´matique ;
e
– help nom de fonction donne la d´finition de la fonction d´sign´e et des exemples d’utilisation ;
e
e
e
– lookfor sujet donne une liste des rubriques de l’aide en ligne en relation avec le sujet indiqu´.
e
Exemple 1.2.1 :
>>lookfor min
minus.m: %Minus.
uminus.m: %- Unary minus.
REALMIN Smallest positive floating point number.
FLOOR Round towards minus infinity.
MIN
Smallest component.
FMIN
Minimize function of one variable.
FMINS Minimize function of several variables.
p. 8

AJ.Casadevall - mars 04
1.2. UNE SESSION MATLAB
COLMMD Column minimum degree permutation.
GMRES Generalized Minimum Residual Method.
QMR
Quasi-Minimal Residual Method
SYMMMD Symmetric minimum degree permutation.
. . .
EDU> 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.4

Interaction avec le syst`me d’exploitation
e

Les commandes et fonctions suivantes permettent ` MATLAB d’interagir avec le syst`me d’exa
e
ploitation de la machine sur laquelle il est utilis´ :
e
– addpath path : ajoute le chemin d’acc`s (path) a la liste des chemins d’acc`s connus de
e
`
e
MATLAB (MATLABPATH) ;
– cd ou pwd : affiche le chemin d’acc`s au r´pertoire de travail actuel ;
e
e
– cd path : fixe le r´pertoire de chemin d’acc`s path comme repertoire de travail ;
e
e
– dir ou ls : affiche le contenu du r´pertoire de travail actuel ;
e
– delete : efface le fichier sp´cifi´ (peut ˆtre utilis´e sous forme de fonction sous la forme :
e e
e
e
delete(’nomDeFichier’)) ;
– mkdir path : cr´e le repertoire de chemin d’acc`s path ;
e
e
– rmpath path : supprime le chemin d’acc`s (path) du (MATLABPATH) ;
e
– isdir (path ) : fonction bool´enne qui retourne 1 si le chemin d’acc`s (path) est celui d’un
e
e
r´pertoire, 0 sinon ;
e
– filesep : variable dont la valeur est celle du symbole s´parateur de lignes (d´pend du syst`me
e
e
e
d’exploitation de la machine utilis´e) ;
e
AJ.Casadevall - mars 04

p.9
CHAPITRE 1. MATLAB

p. 10

AJ.Casadevall - mars 04
2
Les “objets” de MATLAB
2.1
2.2

2.3

2.4

2.5

2.6

2.1

Objets et classes de MATLAB . . . . . . . . . . . . . .
Valeurs litt´rales . . . . . . . . . . . . . . . . . . . . . . .
e
2.2.1 Nombres . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2 Tableaux de nombres . . . . . . . . . . . . . . . . . . . .
2.2.3 Caract`res et chaˆ
e
ınes de caract`res . . . . . . . . . . . .
e
2.2.4 Cellules et tableaux de cellules - cell array . . . . . .
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Identificateurs . . . . . . . . . . . . . . . . . . . . . . .
2.3.2 Affectation . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.3 Espace de travail . . . . . . . . . . . . . . . . . . . . . .
Listes et vecteurs . . . . . . . . . . . . . . . . . . . . . .
2.4.1 Construction de listes . . . . . . . . . . . . . . . . . . .
2.4.2 Construction de vecteurs . . . . . . . . . . . . . . . . .
2.4.3 Nombre d’´l´ments d’une liste ou d’un vecteur - length
ee
2.4.4 Acc`s aux ´l´ments d’une liste ou d’un vecteur . . . . .
e
ee
2.4.5 Extraction de sous-listes ou de sous-vecteurs . . . . . .
Tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.1 Construction de tableaux . . . . . . . . . . . . . . . . .
2.5.2 Acc`s aux ´l´ments d’un tableau . . . . . . . . . . . . .
e
ee
2.5.3 Lignes et colonnes d’un tableau . . . . . . . . . . . . . .
´e
2.5.4 El´ments diagonaux d’un tableau - diag . . . . . . . . .
2.5.5 Sous-tableaux et blocs - fonctions tril et triu . . . .
2.5.6 Tableaux particuliers . . . . . . . . . . . . . . . . . . . .
Op´rations sur les ´l´ments d’un tableau . . . . . . . .
e
ee
2.6.1 Fonctions sum et prod . . . . . . . . . . . . . . . . . . .
2.6.2 Fonctions max et min . . . . . . . . . . . . . . . . . . . .
2.6.3 Fonction mean . . . . . . . . . . . . . . . . . . . . . . .
2.6.4 Fonction cov . . . . . . . . . . . . . . . . . . . . . . . .

Objets et classes de

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

11
12
12
12
13
14
14
15
15
15
18
19
19
20
21
22
22
22
23
24
24
25
26
26
26
27
27
28

MATLAB

Un objet est une abstraction du monde r´el (pour MATLAB celui du calcul matriciel), qui cone
tient des informations (pour une matrice, par exemple, le nombre de lignes, le nombre de colonnes,
la valeur des coefficients) et sur laquelle on peut appliquer un certain nombre d’op´rations (pour les
e
CHAPITRE 2. LES “OBJETS” DE MATLAB
matrices, la somme, le produit . . . ). Un objet est caract´ris´ par des valeurs, mais pas uniquement ;
e e
un objet poss`de en plus un certain comportement : un tableau Excel bien que structur´ en lignes
e
e
et colonnes comme une matrice, n’est pas une matrice, ou encore un polynˆme de degr´ trois, n’est
o
e
pas un vecteur de R4 .
La famille des objets caract´ris´s par le mˆme type de structure et les mˆme fonctionnalit´s cone e
e
e
e
stitue une classe.
La classe fondamentale de MATLAB est la classe double qui mod´lise les tableaux (double array)
e
de dimension un ou deux de nombres r´els ou complexes (conformes ` la norme IEEE), Les nome
a
bres r´els ou complexes ´tant consid´r´s eux-mˆmes comme des tableaux 1 × 1. Cette
e
e
e e
e
classe permet ´galement de travailler mais de fa¸on moins naturelle avec des tableaux de dimension
e
c
sup´rieure ` deux.
e
a
Les classes suivantes, sont moins fr´quemment utilis´es :
e
e
– La classe char mod´lise les chaˆ
e
ınes de caract`res (char array), un caract`re unique ´tant
e
e
e
une chaˆ de longueur un.
ıne
– La classe sparse mod´lise les matrices creuses (i.e. dont la plupart des ´l´ments sont nuls)
e
ee
r´elles ou complexes.
e
e
e
e
A partir de la version 5, MATLAB a propos´ des structures compl´mentaires souvent utilis´es dans
les objets pr´d´finis de MATLAB.
e e
– La classe cell mod´lise les tableaux de “cellules” ou cell array qui sont des sortes de
e
tableaux dont les ´l´ments ou cellules (cells) peuvent ˆtre de nature diff´rente, nombres,
ee
e
e
tableaux, chaˆ
ınes de caract`res de longueurs diff´rentes, . . . .
e
e
– La classe struct mod´lise les tableaux de “structures”. Ces “structures” sont des structure de
e
donn´es assez semblables aux struct du C, dont les composants ou champs, sont accessibles
e
non pas par un ou plusieurs indices comme dans le cas des tableaux, mais par une notation
point´e comme dans client.name, permettant au programmeur de d´finir ces propres objets
e
e
et ses propres classes.
!!! Remarque :
MATLAB ne propose ni valeurs pr´d´finies true ou false ni classe pour mod´liser
e e
e

les bool´ens ; false est repr´sent´ par la valeur 0, true est repr´sent´e par 1 ou par
e
e
e
e
e
extension, par toute valeur non nulle.

2.2

Valeurs litt´rales
e

Les valeurs litt´rales sont les valeurs qu’on peut directement taper au clavier et qui peuvent
e
ˆtre affect´es ` une variable.
e
e a

2.2.1

Nombres

Les nombres r´els et entiers (MATLAB ne distingue pas entre r´els et entiers) sont ´crits sous
e
e
e
les formes d´cimales ou scientifiques usuelles :
e
2, 3.214, 1.21E33.
Les nombres complexes sont ´crits sous la forme a + bi, comme dans 1+2i.
e

2.2.2

Tableaux de nombres

Les tableaux de nombres r´els ou complexes de dimension un ou deux suivent la syntaxe suive
ante :
– un tableau est d´limit´ par des crochets ;
e
e
p. 12

AJ.Casadevall - mars 04
´
2.2. VALEURS LITTERALES
– les ´l´ments sont entr´s ligne par ligne ;
ee
e
– les ´l´ments appartenant a la mˆme ligne sont s´par´s par des espaces (ou par des virgules) ;
ee
`
e
e e
– les diff´rentes lignes doivent comporter le mˆme nombre d’´l´ments et sont s´par´es
e
e
ee
e e
par des points-virgule.
Exemple 2.2.1 :
Les tableaux :

1 2 3 4

s’´crivent sous la forme [1 2 3 4 ]
e

1
2
3
4

[1; 2; 3; 4 ]

1 2 0 0
0 2 3 1
0 0 2 2
[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
ans =
1 2
0 2
0 0

0 ; 0 2 3 1 ; 0 0 2 2 ]
0
3
2

0
1
2

Toutes les lignes doivent contenir le mˆme nombre d’´l´ments :
e
ee
>> [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 qu’une seule colonne ;
– liste ou vecteur-ligne un tableau de format (1, n) i.e. ne comportant qu’une seule ligne ;
– tableau un tableau au sens commun du terme, c’est ` dire une structure organis´e en lignes
a
e
et colonnes.

2.2.3

Caract`res et chaˆ
e
ınes de caract`res
e

On ´crit les caract`res et les chaˆ
e
e
ınes de caract`res, entre apostrophes : ’a’, ’toto’. ml
e
consid`re les caract`res comme des chaˆ
e
e
ınes de caract`res de longueur un et identifie chaˆ
e
ınes de
caract`res et liste de caract`res.
e
e
Exemple 2.2.2 :
La liste de caract`res [’a’ ’b’ ’c’ ’d’ ’e’] est identique a la chaˆ
e
`
ınes de caract`res
e
[’abcde’] :
AJ.Casadevall - mars 04

p.13
CHAPITRE 2. LES “OBJETS” DE MATLAB
>>[’a’ ’b’ ’c’ ’d’ ’e’]
ans =
abcde
Mieux encore, ’abcde’ ; [’abc’ ’de’] est identique a ’abcde’ :
`
>>[’abc’ ’de’]
ans =
abcde
Cet exemple donne un id´e du rˆle des crochets [ ]. Les crochets sont le symbole de l’op´rateur
e
o
e
de concat´nation :
e
– concat´nation ”en ligne” lorsque le s´parateur est un espace ou une virgule ;
e
e
– concat´nation ”en colonne” lorsque le s´parateur est un point-virgule comme dans les tableaux
e
e
de nombres (il est alors n´cessaire que les listes de nombres ou de caract`res ainsi concat´n´es
e
e
e e
poss`dent le mˆme nombre d’´l´ments).
e
e
ee
Exemple 2.2.3 :
La liste de caract`res
e
[’abcde’] :

[’a’ ’b’ ’c’ ’d’ ’e’]

est identique a la chaˆ
`
ınes de caract`res
e

>>[’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 d’objets : nombre, chaˆ
ıne
de caract`res, tableau et mˆme tableau de cellules. Les tableaux de cellules permettent d’associer
e
e
dans une mˆme structure des ´l´ments de nature tr`s diff´rente. La syntaxe des tableaux de cellules
e
ee
e
e
est voisine de celle des tableaux usuels, les crochets ´tant remplac´s par des accolades.
e
e
Exemple 2.2.4 :
>> {’paul’ 4 ; ’vincent’ 7;’...’ 0}
ans =
’paul’
[4]
’vincent’
[7]
’...’
[0]
La manipulation des ces objets (sauf lorsqu’on on se limite a des composants qui sont des nombres
`
ou des chaˆ
ınes de caract`res) est un peu plus d´licate que celle des tableaux usuels et sera examin´e
e
e
e
dans un prochain chapitre.

2.3

Variables

Une caract´ristique de MATLAB est que les variables n’ont pas a ˆtre d´clar´es, leur nature se
e
`e
e
e
d´duisant automatiquement de l’objet qui leur est affect´ (cf. exemple 2.3.6 - section 2.3.3). Par
e
e
abus de langage on dira “valeur d’une variable” alors qu’il faudrait parler de l’objet associ´ ` la
ea
variable.
p. 14

AJ.Casadevall - mars 04
2.3. VARIABLES

2.3.1

Identificateurs

Les r`gles de d´nomination des variables sont tr`s classiques :
e
e
e
– un identificateur d´bute par une lettre, suivie de lettres, de chiffres ou du caract`re soulign´
e
e
e
( );
– sa longueur est inf´rieure ou ´gale ` 31 caract`res ;
e
e
a
e
– les majuscules sont distinctes des minuscules.
Voici quelques identificateurs pr´d´finis :
e e
– ans : R´sultat de la derni`re ´valuation
e
e e
– pi : 3,416..
– eps : inf{ ≥ 0 tels que 1 < 1 + }
– inf : Infini (1/0)
– NaN : “Not a Number” (0/0)

√
– i,j : i et j repr´sentent tous deux le nombre imaginaire unit´ ( −1)
e
e
– realmin : plus petit nombre r´el positif
e
– realmax : plus grand nombre r´el positif
e

2.3.2

Affectation

Le symbole d’affectation de valeur a une variable est le caract`re =.
`
e
Exemple 2.3.1 :
>> a = [1 2 3 4 ]
a =
1 2 3 4
>> a = ’abc’
a =
abc
L’exemple ci-dessus montre bien que dans MATLAB les variables ne sont ni d´clar´es ni typ´es.
e
e
e

2.3.3

Espace de travail

L’ensemble des variables et les objets qui leur sont associ´es constitue l’espace de travail ou
e
workspace de la session en cours. Le contenu de cet espace de travail va se modifier tout au long
du d´roulement de la session et plusieurs commandes ou fonctions permettent de le g´rer de fa¸on
e
e
c
efficace.
Les commande who et whos
Ces commandes (le nom d’une commande est contrairement aux fonctions, suivi par la liste non
parenth`s´e du ou des param`tres) donnent la liste des variables composant l’espace de travail. La
ee
e
commande who donne la liste des variables pr´sentes dans l’espace de travail. La commande whos
e
retourne une information plus compl`te comportant pour chaque variable, la dimension du tableau
e
qui lui est associ´, la quantit´ de m´moire utilis´e et la classe ` laquelle il appartient.
e
e
e
e
a
Exemple 2.3.2 :
On d´finit les variables a, b et c :
e
AJ.Casadevall - mars 04

p.15
CHAPITRE 2. LES “OBJETS” DE MATLAB
>> 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 l’affichage de la valeur des variables
>> who
Your variables are :
a
b
c
La commande whos donne l’information plus compl`te suivante :
e
>> 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 :
e
>> whos b c
Name Size Bytes Class
b
1x6
12
char array
Grand total is 12 elements using 60 bytes
c
2x3
48
double array
leaving 14918960 bytes of memory free.
La fonction size
La fonction size retourne le couple (nl,nc) form´ du nombre de lignes nl et du nombre de
e
colonnes nc du tableau associ´ ` la variable donn´e comme comme argument.
ea
e
Exemple 2.3.3 :
On suppose que l’environnement de travail est constitu´ des trois variables a, b et c de l’exemple
e
pr´c´dent. La fonction size produit l’affichage suivant :
e e
>> size(a)
ans =
1 1
>> size(b)
ans =
1
6
Pour acc´der plus facilement au nombre de lignes et au nombre de colonnes, on peut affecter la
e
valeur retourn´e par size ` un tableau a deux ´l´ments [nl, nc] :
e
a
`
ee
>> size(c)
>> [nl, nc] = size(c)
nl =
2
nc =
3
Enfin size( ,1) et size( ,2) permettent l’acc`s direct au nombre de lignes et au nombre de
e
colonnes :
p. 16

AJ.Casadevall - mars 04
2.3. VARIABLES
>> 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
a
e
comme argument.
Exemple 2.3.4 :
Avec le mˆme espace de travail que dans l’exemple pr´c´dent, la fonction class produit l’affichage
e
e e
suivant :
>> ca = class(a)
ca =
double
>> cb = class(b)
cb =
char
Les commandes save, load et clear - fichiers.mat
Ces commandes permettent d’intervenir directement sur l’environnement de travail.
– save permet de sauver tout ou partie de l’espace de travail sous forme de fichiers binaires
appel´s mat-files ou fichiers .mat :
e
– save : enregistre la totalit´ de l’espace de travail dans le fichier matlab.mat ;
e
– save nom de fichier : l’espace de travail est enregistr´ dans le fichier nom de fichier ;
e
– save nom de variable . . . nom de variable : enregistre les variables indiqu´es (et les
e
objets qui leurs sont associ´s) dans un fichier .mat qui porte le nom de la premi`re
e
e
variable ;
– save nom de fichier nom de variable . . . nom de variable : enregistre les variables dans
le fichier dont le nom a ´t´ indiqu´.
ee
e
– load permet d’ajouter le contenu d’un fichier .mat ` l’espace de travail actuel ;
a
– clear supprime une ou plusieurs variables (et les objets aux quelles elles font r´f´rence) de
ee
l’environnement de travail :
– clear sans argument, supprime toutes les variables de l’espace de travail actuel ;
– clear nom de variable . . . nom de variable : supprime les variables indiqu´es de l’espace
e
de travail.
Exemple 2.3.5 :
Cet exemple illustre les effets de save, load et clear. Tout d’abord on d´finit trois variables a, b
e
et t ; la fonction eye(n) cr´e la matrice identit´ d’ordre n.
e
e
>> a = 1 ; b = 2.5 ; t = eye(3)
t =
1 0 0
0 1 0
0 0 1
AJ.Casadevall - mars 04

p.17
CHAPITRE 2. LES “OBJETS” DE MATLAB
>> save a b
Les variables a et b sont enregistr´es dans le fichier a.mat
e
>> clear a b
Les variables a et b sont supprim´es comme le montre la ligne suivante :
e
>> a
??? Undefined function or variable ’a’
On ajoute le contenu de a.mat ` l’espace de travail actuel :
a
>> load a
>>
>> x = a + b
x =
2
L’espace de travail est enregistr´ dans le fichier toto.mat, puis toutes les variables de l’espace de
e
travail sont supprim´es :
e
>> save toto
>>
>> clear
>> t
??? Undefined function or variable ’t’
load(toto) permet de retrouver l’espace de travail initial :
>> load toto
>>
>> t
t =
1 0 0
0 1 0
0 0 1
Ce dernier exemple montre bien que le type d’une variable est induit par sa valeur :
Exemple 2.3.6 :
>> 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

2.4

Listes et vecteurs

Les listes et les vecteurs sont des tableaux particuliers. Un vecteur est un tableau qui ne comporte qu’une seule colonne ; une liste (ou vecteur-ligne) est un tableau qui ne comporte qu’une
seule ligne. MATLAB propose un certain nombre de fonctions qui simplifient l’usage des listes et
des vecteurs.
p. 18

AJ.Casadevall - mars 04
2.4. LISTES ET VECTEURS

2.4.1

Construction de listes

Valeurs litt´rales du type liste
e
Ainsi que nous l’avons d´j` vu, on peut d´finir la valeur d’une liste en donnant la suite de ses
ea
e
´l´ments s´par´s par des espaces, la liste ´tant d´limit´e par des crochets :
ee
e e
e
e
e
Exemple 2.4.1 :
>> l1 = [1 3 5 10 ]
l1 =
1 3 5 10
Constructeur de listes
e
ee
e
L’expression vi : p : vf cr´e une liste dont les ´l´ments constituent une progression arithm´tique
de valeur initiale vi , de pas p et dont tous les termes sont inf´rieurs ou ´gaux a vf . Lorsque la valeur
e
e
`
du pas est omise (vi : vf ), la valeur du pas est fix´ par d´faut a un.
e
e
`
Exemple 2.4.2 :
>> l2 = 1 : 4
l2 =
1 2 3 4
(le pas par d´faut vaut 1)
e
>> l3 = 1 : 5.6
l3 =
1 2 3 4 5
(puisque 5.0000 + 1 est strictement sup´rieur ` 5.6)
e
a
>> l4 = 1.5 : 0.3 : 2.5
l4 =
1.5000 1.8000 2.1000 2.5000
(puisque 2.4000 + 0.3 est strictement sup´rieur ` 2.5)
e
a
Fonctions
– La fonction linspace(vi , vf , n) cr´e une liste de n ´l´ments uniform´ment r´partis entre vi
e
ee
e
e
vf −vi
et vf : linspace(vi , vf , n) est ´quivalent a vi : n−1 : vf .
e
`
Exemple 2.4.3 :
>> l4 = linspace(0,5, 2, 4)
l4 =
0,5000 1.0000 1.5000 2.0000
– Dans la suite (section Tableaux), on d´couvrira d’autres fonctions qui permettent de construe
ire des tableaux de format (m, n) quelconque. Ces fonctions permettent

2.4.2

Construction de vecteurs

Valeurs litt´rales de type vecteur
e
On peut d´finir la valeur d’un vecteur en tapant entre deux crochets la suite de ses ´l´ments
e
ee
s´par´es par des point-virgules comme on le voit dans l’exemple suivant :
e e

AJ.Casadevall - mars 04

p.19
CHAPITRE 2. LES “OBJETS” DE MATLAB
Exemple 2.4.4 :
>>v1 = [1 ; 3 ; 5 ; 10 ]
v1 =
1
3
5
10
Transposition
La transpos´e d’une liste est un vecteur. On peut donc utiliser les expressions et les fonctions
e
d´finies pour les listes en les transposant ensuite avec l’op´rateur ’ (ou .’ pour les listes de nombres
e
e
complexes).
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 remarquera que les parenth`ses sont n´cessaires pour d´limiter le constructeur de liste.
e
e
e

2.4.3

Nombre d’´l´ments d’une liste ou d’un vecteur - length
ee

La fonction size avec pour argument 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 d’une liste est bien ´videmment un. La mˆme remarque vaut pour le nombre de colonnes d’un
e
e
vecteur. Aussi, pour les listes et les vecteurs on utilise de pr´f´rence la fonction length qui retourne
ee
le nombre d’´l´ments ou longueur de la liste ou du vecteur.
ee
Exemple 2.4.6 :
>> l = [1 2 3 4] ; length(l)
ans =
4
>> v = [5 6 7 8 9]’ ; length(v)
ans =
5
!!! Remarque :
L’exemple pr´c´dent montre que l’on peut ´crire sur la mˆme ligne plusieurs expressions ` la
e e
e
e
a
condition de les s´parer par une virgule ou un point-virgule. La diff´rence entre ces deux s´parateurs
e
e
e
est que le r´sultat de l’´valuation d’une expression suivie d’un point-virgule n’est pas
e
e
affich´.
e

p. 20

AJ.Casadevall - mars 04
2.4. LISTES ET VECTEURS
Cette notion de longueur synonyme de nombre d’´l´ments ne doit pas ˆtre confondue avec la notion
ee
e
math´matique de norme vectorielle. Les fonctions suivantes permettent de calculer les normes
e
usuelles d’un vecteur (ou d’un vecteur-ligne) de Rn :
p

|vk |1/p .

– norm(v,p) =
k=1

– norm(v) = norm(v,2)
– norm(v,inf) = max |vk |.
k

Exemple 2.4.7 :
>> l = [1 1 1 1] ; v =l’ ;
ans =
2
>> norm(l)
ans =
2

2.4.4

norm(v)

Acc`s aux ´l´ments d’une liste ou d’un vecteur
e
ee

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 consid´r´ (1 ≤ k ≤ length(s)). On acc`de ` l’´l´ment d’indice k de la liste ou
ee
e a ee
du vecteur s par s(k), le premier ´l´ment de la liste ou du vecteur ´tant indic´ par 1.
ee
e
e
Exemple 2.4.8 :
>> s = [1 3 5] ; s(1)
ans =
1
>> s(3)
ans =
5
L’acc`s en lecture ` un ´l´ment d’indice n´gatif ou dont la valeur est strictement
e
a
ee
e
sup´rieure ` la longueur de la liste (ou du vecteur), conduit ` une erreur :
e
a
a
Exemple 2.4.9 :
Pour la mˆme liste s qu’` l’exemple pr´c´dent :
e
a
e e
>> s(4)
??? Index exceeds matrix dimensions.
Par contre, il est possible d’affecter une valeur ` un ´l´ment d’une liste ou d’un vecteur
a
ee
dont l’indice d´passe la longueur de la liste ou du vecteur. Comme le montre l’exemple
e
suivant, les ´l´ments dont l’indice est compris entre la longueur de la la liste (ou du vecteur) et
ee
l’indice donn´ sont affect´s de la valeur 0. La longueur de la liste (ou du vecteur) est alors modifi´e
e
e
e
en cons´quence.
e
Exemple 2.4.10 :
Toujours avec la liste s de l’exemple pr´c´dent :
e e
>> s = [1 3 5] ; length(s)
ans =
3
>>s(6) = 6 ; s
s =
AJ.Casadevall - mars 04

p.21
CHAPITRE 2. LES “OBJETS” DE MATLAB
1
3
>> length(s)
ans =
6

2.4.5

5

0

0

6

Extraction de sous-listes ou de sous-vecteurs

Soient s une liste (ou un vecteur) non-vide et l une liste d’entiers dont la valeur est
comprise entre 1 et la longueur length(s) de la liste (ou du vecteur). Alors s(l) est la
liste (ou le vecteur) form´ par les ´l´ments de s dont l’indice appartient a l.
e
ee
`
Exemple 2.4.11 :
>>s = [1 3 5 0 0 6] ; l = [1 3 5] ; s1 = s(l)
s1 =
1
5
0

2.5

Tableaux

2.5.1

Construction de tableaux

Valeurs litt´rales de type tableau
e
On a d´j` vu que pour d´finir la valeur d’un tableau (sauf pour les tableaux d’ordre 1), il suffit
ea
e
de concat´ner “en colonne” (s´parateur ;) des listes de nombres de mˆme longueur :
e
e
e
Exemple 2.5.1 :
Le tableau
1
0
0

2
2
0

0
3
2

0
1
1

est d´fini par :
e
>>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 - [ ]
L’op´rateur [ ] permet la concat´nation de tableaux :
e
e
– Si les tableaux tk poss`dent le mˆme nombre de lignes l’expression [t1 , t2 , · · · , tp ] cr´e un
e
e
e
tableau :
– qui a le mˆme nombre de lignes que les tableaux composants ;
e
– dont le nombre de colonnes est la somme des nombres de colonnes de chacun des tableaux
composants ;
– qui est obtenu en concat´nant “` droite” les tableaux composants.
e
a
On peut dans l’expression ci-dessus remplacer les virgules par des espaces.
– Si les tableaux tk ont le mˆme nombre de colonnes l’expression [t1 ; t2 ; · · · ; tp ] cr´e un
e
e
tableau :
– qui a le mˆme nombre de colonnes que les tableaux composants ;
e
– dont le nombre de lignes est la somme des nombres de lignes de chacun des tableaux
composants ;
p. 22

AJ.Casadevall - mars 04
2.5. TABLEAUX
– qui est obtenu en concat´nant “les uns sous les autres” les tableaux composants.
e
Exemple 2.5.2 :
>>t1 = [1 2 ; 2 3]
t1 =
1
2
2
3
>>t2 = [3 4 ; 6 7]
t2 =
3
4
6
7
>> t = [t1 , t2] % ou [t1
ts =
1
2
3
4
2
3
6
7
>> t = [t1 ; t2]
t =
1
2
2
3
3
4
6
7

t2]

On peut remarquer que l’´criture d’une valeur litt´rale tableau suit en fait ce type de syntaxe.
e
e

2.5.2

Acc`s aux ´l´ments d’un tableau
e
ee

Soit t un tableau, soit l un entier compris respectivement entre 1 et le nombre de lignes de
t (size(t,1)), et soit k d’un entier compris entre 1 et le nombre de colonnes de t (size(t,1)),
t(l,k) d´signe alors l’´l´ment de la ligne l et de la colonne k du tableau t :
e
ee
Exemple 2.5.3 :
>>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
>> x = t(2, 3)
x =
3
L’acc`s en lecture ` un ´l´ment dont les indices seraient n´gatifs ou dont la valeur serait strictement
e
a
ee
e
sup´rieure au nombre de lignes ou au nombre de colonnes, conduit a une erreur :
e
`
Exemple 2.5.4 :
>>x = t(1,5)
??? Index exceeds matrix dimensions
Par contre, il est possible d’affecter une valeur ` un ´l´ment d’un tableau dont les indice
a
ee
d´passent le nombre de ligne pour le premier indice, le nombre de colonnes pour le second. Comme
e
le montre l’exemple suivant, les ´l´ments du dont les indices sont compris entre le nombre de lignes
ee
ou le nombre de colonnes et ceux sp´cifi´, prennent la valeur 0.
e e

AJ.Casadevall - mars 04

p.23
CHAPITRE 2. LES “OBJETS” DE MATLAB
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 d’un tableau

Soient t un tableau non-vide et l un entier compris entre 1 et la nombre de lignes du tableau
t. Alors t(l, :) d´signe la ligne l de t. De mˆme, si k est un entier compris entre 1 et le nombre
e
e
de colonnes de t, t( :, k) d´signe la colonne k de t.
e
Exemple 2.5.6 :
>> t
1
2
0
2
0
0
>> x = t(2, :)
x =
0
2
>> y = t(:, 3)
y =
0
3
2

2.5.4

0
3
2

0
1
1

2
0
0

3

1

0

´e
El´ments diagonaux d’un tableau - diag

Soit t un tableau non-vide, diag(t) retourne le vecteur form´ des ´l´ments de la diagonale
e
ee
principale de t (les ´l´ments de la forme t(k, k)). v = diag(t, k) o` k est un entier compris
ee
u
entre-size(1, t) et size(2, t), retourne le vecteur form´ des ´l´ment de la k ieme diagonale de
e
ee
t, la diagonale d’indice z´ro ´tant la diagonale principale, les valeurs positives correspondant aux
e e
sur-diagonales, les valeurs n´gatives aux sous-diagonales.
e
Exemple 2.5.7 :
Avec le mˆme tableau t que dans l’exemple pr´c´dent :
e
e e
>> t
1
2
0
0
2
3
0
0
2
>> v = diag(t)
v =
1
2
2
>> v = diag(t,1)
p. 24

0
1
1

2
0
0

AJ.Casadevall - mars 04
2.5. TABLEAUX
v =
2
3
1
>> v = diag(t,-1)
v =
0
0

2.5.5

Sous-tableaux et blocs - fonctions tril et triu

Soient t un tableau non-vide, l une liste d’entiers compris entre 1 et le nombre de lignes de t,
et k une liste d’entiers compris entre 1 et le nombre de colonnes de t. Alors t(l, k) est le tableau
form´ par les ´l´ments de t dont l’indice de ligne appartient a l et l’indice de colonne appartient
e
ee
`
a
` k.
Exemple 2.5.8 :
>> t
1
2
3
2
2
3
3
0
2
>> l = [1 2]; k = [1 3
>> t(l, k)
ans =
1
3
5
2
3
0

4
1
1
5];

5
0
0

Les fonctions tril et triu extraient respectivement les termes situ´s sur et au-dessous de la k ieme
e
diagonale, et les termes situ´s sur et au-dessus de la k ieme diagonale.
e
Exemple 2.5.9 :
Avec le mˆme tableau que dans l’exemple ci-dessus :
e
>> tril(t,1)
ans =
1
2
2
2
3
0
>> triu(t,-1)
ans =
1
2
2
2
0
0

0
3
2

0
0
1

0
0
0

3
3
2

4
1
1

5
0
0

tril(t,0) s’´crit aussi tril(t), de mˆme, triu(t,0) s’´crit aussi triu(t).
e
e
e

AJ.Casadevall - mars 04

p.25
CHAPITRE 2. LES “OBJETS” DE MATLAB

2.5.6

Tableaux particuliers

Les fonction ci-dessous permettent de construire des tableaux correspondant aux matrices
usuelles : identit´, matrice nulle, ainsi qu’` des matrices-test tr`s utiles pour valider des algorithmes
e
a
e
d’analyse matricielle (voir aussi la fonction gallery) .
Fonction
diag

Argument
un vecteur ou une liste s

vander

un vecteur ou une liste s

eye
hilb
invhilb
magic
ones
pascal
rand
zeros
wilkinson

un entier n
un entier n
un entiers n
un entier n
un entier n
un entier n
un entier n
un entier n
un entier n

R´sultat
e
matrice diagonale dont la diagonale est
la liste ou le vecteur s
matrice de Vandermonde d’ordre
n = length(s) engendr´e par s
e
matrice identit´ d’ordre n
e
matrice de Hilbert d’ordre n : hi,j = 1/(i + j − 1)
inverse de la matrice de Hilbert d’ordre n
carr´ magique d’ordre n
e
matrice A carr´e d’ordre n telle que ai,j = 1
e
matrice depascal d’ordre n
matrice al´atoire carr´e d’ordre n
e
e
matrice nulle d’ordre n
matrice de Wilkinson d’ordre n

Les fonctions eye, ones et zeros peuvent ˆtre appel´es avec deux arguments entiers n et m. Le
e
e
r´sultat est alors une matrice de format n × m form´e des n premi`res lignes et des m premi`res
e
e
e
e
colonnes de la matrice carr´e du mˆme type d’ordre max(n, m).
e
e

2.6

Op´rations sur les ´l´ments d’un tableau
e
ee

Les fonctions pr´sent´es ci-dessous effectuent des op´rations arithm´tiques it´rativement sur les
e
e
e
e
e
´l´ments d’une liste ou d’un vecteur. Appliqu´es ` un tableau, elles effectuent ces mˆmes op´rations
ee
e a
e
e
sur les colonnes du tableau (sauf pour cov). Ce sont des fonctions extrˆmement efficaces (voir plus
e
loin).

2.6.1

Fonctions sum et prod

– Appliqu´e ` une liste ou un vecteur, la fonction sum (respectivement prod) calcule la somme
e a
(respectivement le produit) des ´l´ments la liste ou du vecteur.
ee
– Appliqu´e ` un tableau la fonction sum (respectivement prod) retourne une liste dont chacun
e a
des ´l´ments est la somme (respectivement le produit) des ´l´ments de chaque colonne.
ee
ee
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 = prod(t)
p =
p. 26

AJ.Casadevall - mars 04
´
´ ´
2.6. OPERATIONS SUR LES ELEMENTS D’UN TABLEAU
36
6
1
>> s = sum(t)
s =
14
6
3
Pour obtenir la valeur de l’´l´ment maximal du tableau :
ee
>> m = max(max(t))
m =
9

2.6.2

Fonctions max et min

– Appliqu´e ` une liste ou un vecteur, la fonction max (respectivement min) d´termine le
e a
e
plus grand ´l´ment (respectivement le plus petit ´l´ment) de la liste ou du vecteur et
ee
ee
´ventuellement la position de cet ´l´ment dans la liste ou le vecteur.
e
ee
– Appliqu´e ` un tableau la fonction max (respectivement min) retourne la liste des plus grands
e a
(respectivement plus petit ´l´ments) de chaque colonne.
ee
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
>> 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 l’´l´ment maximal du tableau :
ee
>> m = max(max(t))
m =
9

2.6.3

Fonction mean

– Appliqu´e ` une liste ou un vecteur, la fonction mean d´termine la moyenne des ´l´ment de
e a
e
ee
la liste ou du vecteur.
– Appliqu´e ` un tableau la fonction mean retourne la liste des moyennes des ´l´ments de chaque
e a
ee
colonne.
AJ.Casadevall - mars 04

p.27
CHAPITRE 2. LES “OBJETS” DE MATLAB
Exemple 2.6.3 :
>> s = [5 2 3 1 7] ; m = mean(s)
m =
3.6000
>>t = pascal(3) , m = mean(t)
t =
1
1
1
1
2
3
1
3
6
m =
1.0000
2.0000
3.3333
Pour obtenir la moyenne des ´l´ments du tableau :
ee
>> m = mean(meanx(t))
m =
2.1111

2.6.4

Fonction cov

– Appliqu´e ` une liste ou un vecteur, cov d´termine la variance des ´l´ment de la liste ou du
e a
e
ee
vecteur.
– Appliqu´e ` un tableau o` chaque ligne repr´sente une observation et o` chaque colonne
e a
u
e
u
correspond a une variable, la fonction cov retourne la matrice de covariance des ´l´ments du
`
ee
tableau.
Exemple 2.6.4 :
Avec le mˆmes objets que dans l’exemple pr´c´dent :
e
e e
>> c = cov(s)
c =
5.8000
>>c = cov(t)
c =
0
0
0
1.0000
0
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

p. 28

AJ.Casadevall - mars 04
3
Expressions, scripts et m-files
3.1
3.2

Introduction . . . . . . . . . . . . . . . . . . . . .
Op´rations de MATLAB . . . . . . . . . . . . . .
e
3.2.1 Op´rateurs . . . . . . . . . . . . . . . . . . . . .
e
3.2.2 Op´rations sur les tableaux . . . . . . . . . . . .
e
3.2.3 Op´rations bool´ennes . . . . . . . . . . . . . . .
e
e
´
3.2.4 Evaluation des expressions - variable ans . . . .
3.3 Scripts et m-files . . . . . . . . . . . . . . . . . . .
3.3.1 Scripts . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2 Cr´ation de m-files . . . . . . . . . . . . . . . . .
e
3.3.3 Ex´cution d’un m-file . . . . . . . . . . . . . . .
e
´e
3.3.4 El´ments d’´criture de m-files . . . . . . . . . . .
e
3.4 Structures algorithmiques . . . . . . . . . . . . .
3.4.1 S´lection - if . . . end et if . . . else . . . end .
e
3.4.2 R´p´tition - for . . . end . . . . . . . . . . . . .
e e
3.4.3 It´ration conditionnelle - while . . . end . . . . .
e
3.4.4 Construction switch . . . case . . . . . . . . . .
3.5 Fonctions et m-files . . . . . . . . . . . . . . . . .
3.5.1 Syntaxe . . . . . . . . . . . . . . . . . . . . . . .
3.5.2 R`gles et propri´t´s . . . . . . . . . . . . . . . .
e
ee
3.5.3 Traitement des erreurs - try . . . catch . . . . .
3.5.4 Optimisation des calculs . . . . . . . . . . . . . .

3.1

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

29
30
30
30
32
33
33
33
34
34
34
36
36
37
39
39
40
41
41
42
42

Introduction

Un des avantages de MATLAB est de proposer une syntaxe tr`s simple pour traduire les calculs
e
matriciels. Les op´rateurs sont repr´sent´s par les mˆmes symboles (` une ou deux exceptions pr´s)
e
e
e
e
a
e
que ceux utilis´s commun´ment en alg`bre lin´aire. Mieux, ils op`rent directement sur les tableaux
e
e
e
e
e
(par exemple, il n’est pas n´cessaire d’´crire des boucles pour effectuer la somme ou ou le produit
e
e
de deux matrices).
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES

3.2
3.2.1

Op´rations de
e

MATLAB

Op´rateurs
e

Class´s par ordre de priorit´ d´croissante, les op´rateurs utilis´s par MATLAB sont les suivants :
e
e e
e
e
– exponentiation et transposition
– l’exponentiation ^ et .^
– la conjugaison ’ et la transposition .’
– op´rateurs multiplicatifs
e
– les produits * et .*,
– les divisions a droite /, ./ et ` gauche , .
`
a
– op´rateurs additifs et de n´gation
e
e
– les op´rateurs additifs unaire et binaires + et e
– la n´gation ~
e
– op´rateurs bool´ens avec par ordre de priorit´ :
e
e
e
– les op´rateurs de comparaison
e
– <, >, <= et >=
– ´galit´ ==, non ´galit´ ~=
e
e
e
e
– puis les op´rateurs logiques
e
– et logique &
– ou logique |
A propos des op´rateurs bool´ens, il est rappel´ qu’il n’existe pas dans MATLAB de vrai type
e
e
e
bool´en, que false est repr´sent´ par la valeur 0 et que true est repr´sent´e par la valeur 1 et par
e
e
e
e
e
extension par toute valeur non nulle, ce qui est confirm´ par l’´valuation des expressions suivantes :
e
e
Exemple 3.2.1 :
>> 2&3
ans =
1
>> 2&0
ans =
0
>> 2|3
ans =
1
>> ~3
ans =
0
>> 2==3
ans =
0
% l’´galit´ est bien celle des nombres et non celle des pr´dicats !
e
e
e

3.2.2

Op´rations sur les tableaux
e

Losqu’ils sont appliqu´s ` des nombres (ou ` des expressions bool´ennes) dont la valeur est
e a
a
e
repr´sent´e par un tableau de dimensions (1 × 1), le r´sultat fourni par ces op´rateurs est le r´sultat
e
e
e
e
e
usuel. Losqu’ils sont appliqu´s ` des listes, des vecteurs ou plus g´n´ralement des tableaux, le
e a
e e
r´sultat est bien sˆr quelque peu diff´rent. Dans le tableau suivant, A et B sont des tableaux et c
e
u
e
est un nombre :
p. 30

AJ.Casadevall - mars 04
´
3.2. OPERATIONS DE MATLAB

Op´rateur
e
A+B
A+c=c+A
A−B
A−c
c−A
A∗B
A∗c=c∗A
A. ∗ B
Aˆn (n > 0)
Aˆn (n < 0)
A.ˆB
A
A.
B/A
AB
A./B
A.B
A/c

R´sultat
e
tableau dont les ´l´ments sont d´finis par aij + bij
ee
e
tableau dont les ´l´ments sont d´finis par aij + c
ee
e
tableau dont les ´l´ments ont pour valeur aij − bij
ee
tableau dont les ´l´ments ont pour valeur aij − c
ee
tableau dont les ´l´ments ont pour valeur c − aij
ee
tableau r´sultant du produit matriciel de A par B
e
tableau dont les ´l´ments ont pour valeur c ∗ aij
ee
tableau dont les ´l´ments ont pour valeur aij ∗ bij
ee
A ∗ A ∗ · · · ∗ A (n fois)
−1 ∗ A−1 ∗ · · · ∗ A−1 (|n| fois)
A
tableau dont les ´l´ments ont pour valeur (aij )bij
ee
transpos´-conjugu´e du tableau A, aij = aji
e
e
transpos´ du tableau A, aij = aji
e
si tous les ´l´ments de A sont r´els, A. = A
ee
e
tableau X solution de l’´quation matricielle XA = B
e
si A est inversible X = BA−1
tableau X solution de l’´quation matricielle AX = B
e
si A est inversible X = A−1 B
tableau dont les ´l´ments ont pour valeur aij /bij
ee
tableau dont les ´l´ments ont pour valeur bij /aij
ee
A.B = B./A
tableau dont les ´l´ments ont pour valeur aij /c
ee

Conditions
A et B mˆme format
e
A et B mˆme format
e

nb col. A = nb lign. B
A et B mˆme format
e
A carr´e
e
A inversible
A et B mˆme format
e

nb col. A = nb col. B
nb lign. A = nb lign. B
A et B mˆme format
e
A et B mˆme format
e

On notera qu’` certains op´rateurs est associ´ un op´rateur point´, * et .* par exemple.
a
e
e
e
e
De fa¸on g´n´rale, l’op´rateur point´ correspond a une op´ration semblable a celle repr´sent´e par
c
e e
e
e
`
e
`
e
e
l’op´rateur non point´, mais appliqu´e non pas ”matriciellement” mais “terme ` terme” : * est
e
e
e
a
l’op´rateur matriciel alors que .* est l’op´rateur du produit “terme a terme”.
e
e
`
Exemple 3.2.2 :
On cr´e deux matrices a et b. La fonction ones(n) cr´e une matrice carr´e d’ordre 2 dont tous les
e
e
e
termes sont ´gaux a 1 ; la fonction eye(2) cr´e la matrice identit´ d’ordre 2.
e
`
e
e
>> a
a =
1
1
>> b
b =
2
1
>> c
c =
4
2
>> d
d =

= [1 2;1 0]
2
0
= ones(2)+eye(2)
1
2
= a*b
5
1
= a.*b

AJ.Casadevall - mars 04

p.31
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES
2
1

3.2.3

2
0

Op´rations bool´ennes
e
e

Dans la suite, “tableau bool´en” d´signera un tableau dont les ´l´ments ont pour valeur 0
e
e
ee
ou 1, 0 repr´sentant false et 1( ou par extension par toute valeur non nulle), repr´sentant true. Les
e
e
op´rateurs bool´ens sont peut-ˆtre ceux dont le comportement peut apparaˆ le plus d´routant
e
e
e
ıtre
e
parce qu’il fonctionnent “terme a terme ” :
`
Exemple 3.2.3 :
Avec les variables a et b d´finies dans l’exemple pr´c´dent on obtient :
e
e e
>> a , b
a =
1
2
1
0
b =
2
1
1
2
>> a == b
ans =
0
0
1
0
Dans l’expression a ==
1 == 3 → f alse → 0,
1 == 1 → true → 1,
Il en est de mˆme pour
e

b la comparaison porte sur les ´l´ments homologues de a et b :
ee
2 == 1 → f alse → 0
0 == 2 → f alse → 0
a > b:

>> a > b
ans =
0
1
1
0
Dans l’exemple suivant, on ´value a & b, et a | b. Les valeurs des ´l´ments des matrice a et b sont
e
ee
converties, avant l’´valuation, en valeurs bool´ennes avec la convention habituelle : 0 vaut false,
e
e
toute valeur non-nulle vaut true :
>> a & b
ans =
1
1
1
0
>> a | b
ans =
1
1
1
1
En r´sum´, si a et b sont des tableaux de mˆme format et si op d´signe un des op´rateurs
e
e
e
e
e
bool´ens <, >, <=, >=, & et | , le r´sultat de a op b est d´fini par :
e
e
e
Op´rateur
e
R´sultat
e
Condition
a op b
“tableau bool´en” dont les ´l´ments sont d´finis par aij op bij mˆme format
e
ee
e
e

p. 32

AJ.Casadevall - mars 04
3.3. SCRIPTS ET M-FILES

3.2.4

´
Evaluation des expressions - variable ans

Les expressions sont ´valu´es de la gauche vers la droite, suivant l’ordre de priorit´ indiqu´ plus
e
e
e
e
haut. Pour des op´rateurs de mˆme ordre de priorit´, la r`gle est comme en math´matiques, celle
e
e
e
e
e
de l’associativit´ ` gauche.
ea
La frappe de <entrer> d´clenche l’´valuation. La valeur de expression ´valu´e est affich´e sous la
e
e
e
e
e
ligne courante et est en l’absence d’affectation explicite, affect´e par d´faut ` une variable-syst`me
e
e
a
e
g´n´rique d´sign´e par ans pour answer.
e e
e
e
Exemple 3.2.4 :
>> a = .5
a =
0.5000
>> a*pi
ans =
1.5708
>> b = 2
b =
2
>> ans
ans =
1.5708
La derni`re ´valuation n’a pas modifi´ la valeur de ans puisqu’elle comportait une affectation.
e e
e

3.3
3.3.1

Scripts et m-files
Scripts

Un script est une s´quence d’expressions ou de commandes. Un script peut se d´velopper sur
e
e
une ou plusieurs lignes. Les diff´rentes expressions ou commandes doivent ˆtre s´par´es par une
e
e
e e
virgule, un point-virgule ou par le symbole de saut de ligne constitu´ de trois points . . . suivis
e
de <entrer> (le rˆle des trois points et d’inhiber le m´canisme d’´valuation lors d’un passage
o
e
e
a
` la ligne). Comme pour une expression unique, la frappe de <entrer> d´clenche le processus
e
d’´valuation. Les expressions sont ´valu´es dans leur ordre d’´criture. Seule la valeur des expression
e
e
e
e
suivie d’une virgule ou d’un saut de ligne est affich´e, celle des expressions suivies d’un point-virgule,
e
ne l’est 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
AJ.Casadevall - mars 04

p.33
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES
´
Ecrire un script est assez fastidieux, aussi MATLAB permet d’enregistrer le texte d’un script sous
forme de fichier de texte appel´s m-files, en raison de leur extension.
e

3.3.2

Cr´ation de m-files
e

Les fichiers .mat ou mat-files que nous avons ´voqu´s dans le chapitre pr´c´dant sont des
e
e
e e
fichiers binaires qui permettent d’enregistrer des valeurs. Les m-files permettent d’enregistrer les
scripts sous forme de fichiers-texte et servent en particulier ` d´finir de nouvelles fonctions (une
a e
grande partie des fonctions pr´d´finies de MATLAB sont stock´es sous forme de m-files dans la
e e
e
toolbox matlab.
Les m-files peuvent ˆtre cr´es par n’importe quel ´diteur. Dans les versions r´centes de MATLAB
e
e
e
e
il existe un petit ´diteur int´gr´ que l’on peut appeler a partir du menu file ou a partir de la barre
e
e e
`
`
de menu de la fenˆtre de commande.
e
Exemple 3.3.2 :
Dans la fenˆtre de l’´diteur tapez les lignes suivantes :
e
e
%
a
b
c

script - essai . m
= .5;
= pi;
= a * b

Sauvez le fichier dans le r´pertoire de travail sous le nom de essai.m.
e

!!! Remarque :
On peux utiliser les techniques du copier/coller pour transf´rer des parties de script de la fenˆtre
e
e
e
e
de commande de MATLAB vers l’´diteur et r´ciproquement. Il faut prendre garde au fait que dans
e
la fenˆtre de commande de MATLAB les sauts de ligne lancent l’´valuation des expressions ; il faut
e
alors utiliser . . . <entrer> ` la place des sauts de ligne.
a

3.3.3

Ex´cution d’un m-file
e

Pour ex´cuter le script contenu dans un m-file et Il suffit de taper le nom de ce m file dans la
e
fenˆtre de commande suivi de < entrer >
e
Exemple 3.3.3 :
Pour ex´cuter le script pr´c´dent, on tape essai et on obtient :
e
e e
>> essai
c =
1.5708
La pr´sence d’un point-virgule ; ` la fin des deux premi`res lignes du script a neutralis´ l’affichage
e
a
e
e
des valeurs de a et b.

3.3.4

´e
El´ments d’´criture de m-files
e

Commentaires
Les lignes de commentaires sont pr´c´d´es du caract`re %.
e e e
e
p. 34

AJ.Casadevall - mars 04
3.3. SCRIPTS ET M-FILES
Entr´es - input et menu
e
– La fonction input permet la saisie d’une valeur depuis le clavier. Plus pr´cis´ment :
e e
– Pour les valeurs num´riques, n = input(’message’) affiche message et affecte ` la
e
a
variable n la valeur num´rique entr´e au clavier.
e
e
– Pour les chaˆ
ınes de caract`res, str = input(’message’,’s’) affiche message et affecte `
e
a
la variable str la valeur entr´e au clavier consid´r´e alors comme une chaˆ de caract`res.
e
ee
ıne
e
Exemple 3.3.4 :
>> n = input(’Entrez la valeur de n ’)
>> nom = input(’Entrez votre nom ’,’s’)
– La fonction menu g´n`re un menu dans lequel l’utilisateur doit choisir une option :
e e
result = menu(’titre’, ’opt1’, ’opt2’, . . . , ’optn’)
La valeur retourn´e dans la variable result est ´gale au num´ro de l’option choisie. menu est
e
e
e
souvent utilis´ en relation avec la structure algorithmique switch-case.
e
Exemple 3.3.5 :
result = menu(’Traitement’, ’Gauss’, ’Gauss-Jordan’, ’Quitter’)
Affiche la fenˆtre graphique suivante :
e

Si l’utilisateur s´lectionne Gauss, la variable result prend la valeur 1, la valeur 2 s’il
e
s´lectionne Gauss-Jordan et la valeur 3 pour Quitter.
e
Affichages - disp - num2str - format
– La valeur d’une variable est tr`s simplement affich´e en faisant ´valuer une expression r´duite
e
e
e
e
a
` la variable elle-mˆme.
e
Exemple 3.3.6 :
>> a = [1 2] ;
>> a
a =
1
2
– La fonction num2str(x) o` x est un nombre, retourne la valeur litt´rale de ce nombre.
u
e
Exemple 3.3.7 :
>> s = [’la valeur de pi est : ’ num2str(pi)] ;
>> s
s =
la valeur de pi est : 3.1416
AJ.Casadevall - mars 04

p.35
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES
– La commande disp(t) o` t est une chaˆ de caract`res ou un tableau, affiche la valeur
u
ıne
e
de cette chaˆ de caract`re ou de ce tableau sans faire r´f´rence au nom de la variable.
ıne
e
ee
Cette commande sera souvent utilis´e avec num2str pour afficher les valeurs des expressions
e
num´riques.
e
Exemple 3.3.8 :
>> a = [1 2;3 4] ;
>> disp(a)
1
2
3
4
>> disp([ ’ordre de la matrice a : ’
ordre de la matrice a : 2

num2str(size(a,1)) ] );

– La commande format permet de choisir entre plusieurs modes d’affichage (sans interf´rer avec le type des valeurs num´riques affich´es qui est toujours le type double) :
e
e
e
Commande
Affichage
Exemple
format short
d´cimal ` 5 chiffres
e
a
31.416
format short e
scientifique a 5 chiffres
`
31.416e+01
format long
d´cimal ` 16 chiffres
e
a
31.4159265358979
format long e
scientifique a 16 chiffres
`
314159265358979e+01
format hex
hexad´cimal
e
format bank
virgule fixe a deux d´cimales
`
e
31.41
format rat
fractionnaire
3550/113
format +
utilise les symboles +, - et espace pour
+
afficher les nombres positifs n´gatifs et nuls
e
Pause
La commande pause permet de m´nager une pause dans l’ex´cution d’un m file :
e
e
– sans argument pause suspend l’ex´cution jusqu’` ce que l’utilisateur presse sur une touche.
e
a
– pause(n ) suspend l’ex´cution pendant n secondes.
e
Interaction avec le syst`me d’exploitation
e
MATLAB poss`de des fonctions et des commandes qui permettent d’obtenir la liste des
e
r´pertoires accessibles ou matlabpath, la liste des fichiers d’un r´pertoire donn´, les ´diter et
e
e
e
e
´ventuellement les effacer :
e
– addpath path : ajoute path ` la liste matlabpath des r´pertoires accessibles par MATLAB ;
a
e
– p = pwd : retourne dans p le chemin d’acc`s au r´pertoire de travail actuel ;
e
e
– cd path : change le r´pertoire de travail pour celui sp´cifi´ par path ;
e
e e
– d = dir ou d = ls : retourne dans d la liste des fichiers du r´pertoire de travail ;
e
– what : retourne la liste des m-files et des mat-files du r´pertoire de travail ;
e
– edit test : ´dite le m-file test.m, identique a Open dans le menu File ;
e
`
– delete test.m : efface le m-file test.m ;
– type test : affiche le le m-file test.m dans la fenˆtre de commande.
e

3.4
3.4.1

Structures algorithmiques
S´lection - if . . . end et if . . . else . . . end
e

Syntaxe
– if (expression bool´enne) / script / end
e
p. 36

AJ.Casadevall - mars 04
3.4. STRUCTURES ALGORITHMIQUES
– if (expression bool´enne) / script si vrai / else / script si faux / end
e
Le symbole / remplace l’un des symboles s´parateur : virgule (,), point-virgule ( ;) ou saut de ligne.
e
L’usage du point-virgule est vivement conseill´ pour ´viter les affichages souvent redondants. Dans
e
e
e e
d’anciennes versions de MATLAB et en mode commande, il est indispensable de faire pr´c´der
< enter > par une s´quence de trois points ( . . . ) pour passer a la ligne sans d´clancher le
e
`
e
processus d’´valuation.
e
Exemple 3.4.1 :
>> m = -1;
>> if (m<0) a =-m,
a =
1

end

Cette autre pr´sentation est plus lisible :
e
>> f (m<0)
a = -m ;
end
Utilisation de elseif
Lorsqu’il y a plus de deux alternatives, on peut utiliser la structure suivante :
if (exp1)
script1 (´valu´ si exp 1 est vraie)
e
e
elseif (exp2)
script2 (´valu´ si exp 2 est vraie)
e
e
elseif (exp3)
...
else
script (´valu´ si aucune des expressions exp1, exp2, . . . n’est vraie)
e
e
end

3.4.2

R´p´tition - for . . . end
e e

Syntaxe
for (k = liste) / script / end
Le symbole / repr´sente comme dans le paragraphe pr´c´dent un symbole s´parateur virgule (,),
e
e e
e
point-virgule ( ;) ou saut de ligne. D’autre part, il est pr´f´rable de ne pas utiliser i et j comme
ee
indices puisque dans MATLAB i et j sont des variables pr´d´finies dont la valeur est ( − 1).
e e
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
AJ.Casadevall - mars 04

2.2361
p.37
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES
cette autre pr´sentation plus lisible, doit ˆtre privil´gi´e :
e
e
e e
>> for (k = 1 : 5)
x = [x, sqrt(k)] ;
end
Boucles for emboˆ es
ıt´
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
Il est possible de sortir directement d’une boucle for ou while en utilisant la commande break :
Exemple 3.4.4 :
>> EPS = 1;
>> for (n = 1 : 100)
EPS = EPS / 2;
If ((EPS + 1) <= 1)
EPS = EPS*2
break
end
end
EPS =
2.2204e-16
>> n
n =
52
e
Le test (EPS + 1) <= 1 provoque la sortie de la boucle for ` la 52i`me it´ration.
a
e
Dans l’exemple suivant, le tableau A est celui de l’exemple pr´c´dent.
e e

>> for (l = 1 : 3)
for (k = 1 : 3)
if (A(l,k) == 10)
[l,k]
break
end
end
end
ans =
p. 38

AJ.Casadevall - mars 04
3.4. STRUCTURES ALGORITHMIQUES
1

3

ans =
3

1

La double boucle se s’est pas arrˆt´ apr`s que le test A(l,k) == 10 ait ´t´ valid´ lorsque l=1 et
ee
e
ee
e
k=3. En effet break provoque la sortie de la boucle la plus proche, ici la boucle for interne.
Une version corrig´e du test pr´c´dent pourrait ˆtre la suivante avec deux break pour pouvoir sortir
e
e e
e
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.4.3

3

It´ration conditionnelle - while . . . end
e

Syntaxe
while (expression bool´enne) / script / end
e
Le symbole / repr´sente comme dans les d´finitions pr´c´dents, un s´parateur : virgule (,), pointe
e
e e
e
virgule ( ;) ou saut de ligne. D’autre part, il faut ´viter l’utilisation des variables i et j comme
e
indices puiqu’elles sont des variables pr´d´finies dont la valeur est ( − 1).
e e
Exemple 3.4.6 :
>> n = 1 ;
>> while (2^n <= 100)
n = n + 1;
end
>> disp(n-1)
6

3.4.4

Construction switch . . . case

Syntaxe
switch (s´lecteur)
e
case valeur 1, . . . / script 1 /
case Valeur 2, . . . / script 2 /
...
otherwise / script
end
AJ.Casadevall - mars 04

p.39
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES
Comme dans les d´finitions pr´c´dentes, le symbole / remplace un s´parateur : virgule (,), pointe
e e
e
virgule ( ;) ou saut de ligne.
s´lecteur d´signe une expression dont les valeurs peuvent correspondre aux valeurs associ´es aux
e
e
e
diff´rents case. Lorsque la valeur du s´lecteur correspond ` une valeur de case, une fois le script
e
e
a
correspondant ex´cut´, l’ex´cution se continue imm´diatement apr`s le end contrairement a ce qui
e e
e
e
e
`
se passe pour certains langages. Ceci explique l’absence de break apr`s chaque script.
e
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 n´gatif’)
e
end
2 modulo 3

3.5

Fonctions et m-files

Les m-files sont aussi le moyen pour l’utilisateur de MATLAB de d´finir ses propres fonctions.
e
Exemple 3.5.1 :
La fonction moyenne d´finie ci-dessous calcule la moyenne des ´l´ments d’une liste ou d’un vecteur.
e
ee
Le texte de cette fonction est saisi dans un ´diteur (l’´diteur int´gr´ pour les versions MacOs ou
e
e
e e
Windows).
1
2
3
4
5
6
7
8

function m = moyenne(x)
% MOYENNE(X) : moyenne des elements d’une liste ou d’un vecteur
% un argument autre qu’une liste ou un vecteur conduit a une erreur
[K,l] = size(x) ;
if ( (k~=1) & (l~=1) )
error(’l"argument doit ^tre une liste ou un vecteur’)
e
end
m = sum(x)/length(x) ;
La fonction est enregistr´e sous le nom moyenne.m. Elle est ensuite appel´e depuis le fenˆtre de
e
e
e
commande :
>> x = 1 : 9
x =
1 2 3 4 5 6 7 8 9
>> y =
y =
5

moyenne(x)

>> A = [ 1 2 ; 3 4] ;
>> moyenne(A)
??? Error using ==> moyenne
l"argument doit ^tre une liste ou un vecteur
e
p. 40

AJ.Casadevall - mars 04
3.5. FONCTIONS ET M-FILES
Le traitement de l’erreur sur le type de l’argument est r´alis´ aux lignes 5 a 7, plus particuli`rement
e e
`
e
par la commande error. MATLAB utilise la section de commentaires en conjonction avec la commande help pour fournir la d´finition de la fonction :
e
>> help moyenne
MOYENNE(X) : moyenne des elements d’une liste ou d’un vecteur
un argument autre qu’une liste ou un vecteur conduit a une erreur

3.5.1

Syntaxe

Une fonction est constitu´e par :
e
– un en-tˆte :
e
function r´sultat = nom de la fonction (liste de param`tres )
e
e
– une section de commentaires :dont chaque ligne commence par le symbole % ;
– le corps de la fonction d´fini par un script..
e

3.5.2

R`gles et propri´t´s
e
e e

• Le nom de la fonction et celui du fichier m-file qui en contient la d´finition doivent ˆtre
e
e
identiques. Ce fichier est le fichier m-file associ´ ` la fonction.
ea
• La commande help affiche les neuf premi`res lignes de la section de commentaires ; la premi`re
e
e
ligne est utilis´e par la commande lookfor pour effectuer des recherches parmi les fonctions
e
, MATLAB accessibles.
• Chaque fonction poss`de son propre espace de travail et toute variable apparaissant dans le
e
corps d’une fonction est locale a celle-ci, ` moins qu’elle ait ´t´ d´clar´e comme globale au
`
a
ee e
e
moyen du qualificateur global pr´c´dant le nom de la variable dans tous les espaces de
e e
travail o` cette variable est utilis´e.
u
e
• Un fichier m-file associ´ ` une fonction (i.e. qui porte le nom d’une fonction et contient sa
ea
d´finition) peut contenir d’autres d´finitions de fonctions. La fonction qui partage son nom
e
e
avec le fichier ou fonction principale doit apparaˆ
ıtre en premier. Les autres fonctions ou
fonctions internes peuvent ˆtre appel´es par la fonction principale, mais pas par d’autres
e
e
fonctions ou depuis la fenˆtre de commande.
e
Exemple 3.5.2 :
1
2
3
4
5
6
7
8
9

10
11
12

13
14

function [m, v] = myStat(x)
% MYSTAT(X) : moyenne et variance des elements d’une liste ou d’un vecteur
% un argument autre qu’une liste ou un vecteur conduit a une erreur
[k,l] = size(x) ;
if ( (k~=1) & (l~=1) )
error(’l"argument doit ^tre une liste ou un vecteur’)
e
end
m = moyenne(x);
v = variance(x);
function a = moyenne(u)
% Calcul de la moyenne
a = sum(u)/length(u);
function b = variance(u)
% Calcul de la variance

AJ.Casadevall - mars 04

p.41
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES

15
16
17

c = sum(u)/length(u);
u2 = (u - c).^2;
b = sum(u2)/length(u);

L’ensemble des trois fonctions est enregistr´ dans un seul fichier m-file portant le nom de la
e
fonction principale myStat.m.
• L’ex´cution d’une fonction s’ach`ve :
e
e
– lorsque la fin du script d´finissant la fonction a ´t´ atteint ;
e
ee
– lorsque une commande return ou un appel de la fonction error a ´t´ rencontr´ :
ee
e
– return termine imm´diatement l’ex´cution de la fonction sans que la fin du script
e
e
d´finissant celle-ci ait ´t´ atteint,
e
ee
– error(’message’ ) proc`de de mˆme, mais en plus, affiche le contenu de ’message’.
e
e
Le contrˆle est alors renvoy´ au point d’appel de la fonction, fenˆtre de commande ou autre
o
e
e
fonction.

3.5.3

Traitement des erreurs - try . . . catch

La commande try . . . catch a pour but de permettre un traitement qui permette a l’utilisateur
`
d’intervenir en pr´sence d’erreurs ou de situations inhabituelles. Sa syntaxe est la suivante :
e
try script1 catch script2 end
Le fonctionnement en est assez simple pour les habitu´s des langages modernes,java par exemple :
e
– l’ex´cution de script1 est lanc´e ;
e
e
– si une erreur survient, alors l’ex´cution de script1 est arrˆt´e et script2 est ex´cut´ ;
e
ee
e e
– sinon, script1 est ex´cut´ jusqu’` son terme, script2 n’est pas ex´cut´, les ex´cutions suivantes
e e
a
e e
e
se poursuivent apr`s le end final.
e
On peut utiliser lasterr pour acc´der ` l’erreur qui provoque l’arrˆt de l’ex´cution de script1.
e
a
e
e

3.5.4

Optimisation des calculs

les calculs sont acc´l´r´s de fa¸on spectaculaire en utilisant des op´rations vectorielles en lieu
ee e
c
e
et place de boucles. Comparons les deux fonctions suivantes (la commande tic d´clenche un
e
chronom`tre ; toc arrˆte le chronom`tre et retourne le temps ´coul´ depuis tic) :
e
e
e
e
e
1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16

Exemple 3.5.3 :
function [t,b] = test1(n)
% d´termine le temps mis pour cr´er la liste
e
e
% des racines carr´es des entiers compris entre 1 et n
e
m = 0 ;
tic ;
for k = 1 : 1 : n
b(k) = m+sqrt(k) ;
end
t = toc ;
function [t,b] = test2(n)
% d´termine le temps mis pour cr´er la liste
e
e
% des racines carr´es des entiers compris entre 1 et n
e
tic ;
a = 1 : 1 : n ;
b = sqrt(a) ;
t = toc ;
p. 42

AJ.Casadevall - mars 04
3.5. FONCTIONS ET M-FILES
Les r´sultats obtenus montrent que test2 est plus efficace que test1.
e
>>test1(1000)
ans =
0.1040
>>test2(1000)
ans =
0.0023
MATLAB contient un utilitaire appel´ profiler qui est pr´cieux pour ´tudier les performances d’une
e
e
e

ou plusieurs fonctions. Les modalit´s d’utilisation du profiler ont ´volu´ en fonction des versions de
e
e
e
MATLAB. On les trouvera dans l’aide en ligne help profile .

AJ.Casadevall - mars 04

p.43
CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES

p. 44

AJ.Casadevall - mars 04
4
MATLAB et l’analyse num´rique
e
4.1
4.2
4.3
4.4

Fonctions “num´riques” . . . . . . . . . . . .
e
Polynˆmes . . . . . . . . . . . . . . . . . . . . .
o
Calcul matriciel . . . . . . . . . . . . . . . . .
Fonctions d’une variable . . . . . . . . . . . .
4.4.1 Recherche de minimum - fmin . . . . . . . .
4.4.2 Recherche de racines - fzero . . . . . . . . .
4.4.3 Int´gration - trapz, quad et quad8 . . . . . .
e

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

45
46
47
48
48
48
49

Il est impossible dans un seul chapitre de faire le tour de toutes les fonctions de MATLAB li´es `
e a
l’analyse num´rique. Ce chapitre pr´sente quatre familles de fonctions : les fonctions “num´riques”,
e
e
e
les fonctions du calcul polynomial, les fonctions matricielles et les fonctions li´es aux fonctions
e
d’une variable.

4.1

Fonctions “num´riques”
e

Les fonctions num´riques g´n´ralisent par leur r´sultat, les fonctions num´riques usuelles. Elles
e
e e
e
e
s’appliquent aussi bien a des nombres qu’` des tableaux (ceci est assez normal puisqu’un nombre
`
a
est un tableau particulier) : lorsqu’une de ces fonctions a pour argument un tableau, la fonction
est appliqu´e ` chacun des ´l´ments du tableau.
e a
ee
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
Les fonctions num´riques sont nombreuses. L’aide en ligne en donne une liste exhaustive. Dans le
e
tableau ci-dessous, on trouvera les fonctions les plus fr´quemment utilis´es.
e
e
´
MATLAB ET L’ANALYSE NUMERIQUE

CHAPITRE 4.

Fonction
abs
angle
real
imag
conj
sqrt
cos
sin
tan
acos
asin
atan
exp
log
log10
round
fix
floor
ceil

4.2

R´sultat
e
valeur absolue ou module (nb. complexes)
argument (nb. complexes)
partie r´elle (nb. complexes)
e
partie imaginaire (nb. complexes)
complexe conjugu´
e
racine carr´e
e
cosinus (angle en radian)
sinus (angle en radian)
tangente (angle en radian)
arc cosinus (r´sultat en radian)
e
arc sinus (r´sultat en radian)
e
arc tangente (r´sultat en radian)
e
exponentielle
logarithme n´p´rien
e e
logarithme base 10
entier le plus proche
partie enti`re math´matique
e
e
troncature par d´faut
e
troncature par exc`s
e

Polynˆmes
o

o
e
Pour MATLAB, un polynˆme est une liste : la liste des coefficients ordonn´s par ordre
d´croissant :
e
Exemple 4.2.1 :
e
e
Le polynˆme p(x) = 1 − 2x + 4x3 est repr´sent´ par le liste :
o
>> p = [4 0
p =
4
0

-2
-2

1]
1

Les fonctions usuelles du calcul polynomial sont les suivantes :
Fonction
polyval
roots
conv
deconv
polyder

p. 46

Arguments
un polynˆme p et un nombre a
o
un polynˆme p
o
deux polynˆmes p et q
o
deux polynˆmes p et q
o
un polynˆme p
o

R´sultat
e
calcul de p(a)
la liste des racines de p
le polynˆme produit p × q
o
le quotient et le reste de la division
euclidienne de p par q
le polynˆme-d´riv´e de p
o
e e

AJ.Casadevall - mars 04
4.3. CALCUL MATRICIEL

4.3

Calcul matriciel

Voici quelques-unes des fonctions usuelles du calcul matriciel :
Fonction
eig
poly
det
trace
inv

R´sultat
e
calcul des valeurs et des vecteurs propres
polynˆme caract´ristique
o
e
calcul du d´terminant
e
calcul de la trace
calcul de l’inverse

Exemple 4.3.1 :
>> a = [1 2 ; 3
a =
1
2
3
4

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 =

%
-0.3723
0

est la matrice ddiagonalis´e
e
0
5.37233

>> p = poly(a)
p =
1.0000
-5.0000
-2.0000
% le polyn^me caract´ristique est p(t) = t^2 - 5t - 2
o
e
>> roots(p)
ans =
5.3723
-0.3723
% les racines de p sont bien les valeurs propres

AJ.Casadevall - mars 04

p.47
CHAPITRE 4.

4.4
4.4.1

´
MATLAB ET L’ANALYSE NUMERIQUE

Fonctions d’une variable
Recherche de minimum - fmin

La fonction fmin prend pour arguments le nom de la fonction ` ´tudier ´crite sous forme
a e
e
d’une chaˆ de caract`res, et les bornes inf´rieures et sup´rieures de l’intervalle d’´tude. La fonction
ıne
e
e
e
e
peut ˆtre une fonction pr´d´finie de MATLAB ou une fonction d´finie par l’utilisateur, mais elle
e
e e
e
doit imp´rativement ˆtre une fonction de la variable x .
e
e
Exemple 4.4.1 :
>> xmin = fmin(’cos’, 3, 4) , ymin = cos(xmin)
xmin =
3.1416
ymin =
-0.7071
Lorsque la fonction est d´finie par une expression, on peut utiliser directement cette expression,
e
´crite sous forme d’une chaˆ de caract`res, comme argument de fmin :
e
ıne
e
>> 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
e
sous forme de chaˆ de caract`re (comme cela est possible pour fmin) :
ıne
e
>> x = xmin ; ymin = eval(fn)
ymin =
-0.0279
Lorsque l’expression dont on veut calculer la valeur est d´finie par une fonction de MATLAB ou
e
d´finie par l’utilisateur, on utilise feval
e
>> 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 a ´tudier ´crite sous forme d’une chaˆ de caract`res,
`e
e
ıne
e
et une valeur initiale voisine de celle d’une racine. La fonction peut ˆtre une fonction pr´d´finie de
e
e e
MATLAB ou une fonction d´finie par l’utilisateur, mais elle doit imp´rativement ˆtre une fonction
e
e
e
de la variable x.
Exemple 4.4.2 :
>> x0 = fzero(’cos’,1), y0 = cos(x0)
x0 =
1.5708
y0 =
0
Il n’est pas possible comme pour la fonction fmin de d´finir la fonction a ´tudier par une expression
e
`e
math´matique. On cr´era alors une fonction m-file pour d´finir cette fonction.
e
e
e
p. 48

AJ.Casadevall - mars 04
4.4. FONCTIONS D’UNE VARIABLE

4.4.3

Int´gration - trapz, quad et quad8
e

e
e
MATLAB propose plusieurs fonctions pour calculer num´riquement la valeur de l’int´grale d’une
fonction d’une variable, sur un intervalle ferm´.
e
– trapz - La fonction trapz utilise la m´thode des trap`zes. les arguments de trapz sont deux
e
e
listes, dans l’ordre :
– une liste x qui est une subdivision de l’intervalle d’int´gration ;
e
– une liste y dont les valeurs sont les images des valeurs de de la liste x par la fonction a
`
int´grer (y(k) = f(x(k))).
e
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 fond´es respectivement sur la m´thode de Simpson
e
e
et sur la m´thode de Newton-Cotes. Leur syntaxe est celle de la fonction fmin voir 4.4.1 :
e
Exemple 4.4.4 :
>> z = quad(’sin’, 0, pi)
z =
2.0000

AJ.Casadevall - mars 04

p.49
CHAPITRE 4.

p. 50

´
MATLAB ET L’ANALYSE NUMERIQUE

AJ.Casadevall - mars 04
5
Courbes et surfaces

5.1

Fenˆtres graphiques . . . . . . . . . . . . . . . . . . .
e
5.1.1 Cr´ation d’une fenˆtre - fonctions figure et gcf . .
e
e
5.1.2 Attributs d’une fenˆtre - get . . . . . . . . . . . . .
e
5.2 Courbes du plan . . . . . . . . . . . . . . . . . . . . .
5.2.1 La fonction plot . . . . . . . . . . . . . . . . . . . .
5.2.2 Tracer dans une ou plusieurs fenˆtres . . . . . . . . .
e
5.2.3 La commande print . . . . . . . . . . . . . . . . .
5.2.4 Courbes param´triques . . . . . . . . . . . . . . . .
e
5.2.5 Personnalisation des axes et de la plotting-box . . .
5.2.6 Autres fonctions de trac´ de courbes planes . . . . .
e
5.3 Courbes de l’espace - Fonction plot3 . . . . . . . . .
5.4 Surfaces de l’espace . . . . . . . . . . . . . . . . . . .
5.4.1 Mod´lisation du domaine [x0 , x1 ] × [y0 , y1 ] - fonction
e
5.4.2 Trac´ de la surface - fonctions mesh et surf . . . .
e
5.4.3 Surfaces et courbes de niveau . . . . . . . . . . . . .

5.1
5.1.1

. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
meshgrid . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .

51
51
53
53
53
54
56
57
57
60
61
61
61
61
62

Fenˆtres graphiques
e
Cr´ation d’une fenˆtre - fonctions figure et gcf
e
e

La fonction figure cr´e une fenˆtre graphique vide
e
e
Exemple 5.1.1 :
>> h = figure
h =
1
Une fenˆtre appel´e Figure N◦ 1 apparaˆ
e
e
ıt.La valeur retourn´e par le fonction figure est le num´ro
e
e
de la fenˆtre. Un second appel a la fonction figure cr´e une seconde fenˆtre appel´e Figure N◦ 2.
e
`
e
e
e
>> h = figure
h =
2
CHAPITRE 5. COURBES ET SURFACES

La derni`re fenˆtre cr´e est la fenˆtre active (situ´e au premier plan). Pour faire passer une fenˆtre
e
e
e
e
e
e
au premier plan, on utilise la fonction figure avec pour argument le num´ro de la fenˆtre que l’on
e
e
souhaite activer. Si aucune fenˆtre portant ce numero n’existe elle sera cr´´e.
e
ee
R´ciproquement, la fonction gcf (get currant figure) retourne le num´ro (ou r´f´rence) de la fenˆtre
e
e
ee
e
active.
Exemple 5.1.2 :
>> h = gcf
h =
2
>> figure(1)
>> h = gcf
h =
1

La fenˆtre active est la Figure N◦ 2, puis on rend active Figure N◦ 1. Elle passe au premier plan (il
e
est possible de faire la mˆme chose en cliquant dans Figure N◦ 1).
e
p. 52

AJ.Casadevall - mars 04
5.2. COURBES DU PLAN

5.1.2

Attributs d’une fenˆtre - get
e

(Ce paragraphe peut ˆtre laiss´ de cˆt´ en premi`re lecture.)
e
e
oe
e
Les fenˆtres poss`dent un grand nombre d’attributs, par exemple un nom (Name), une couleur de
e
e
fond (Color), . . . (consultez l’aide en ligne). On obtient la liste compl`te des attributs de la
e
fenˆtre active et de leur valeur, par get(n) o` n est le numero de cette fenˆtre.
e
u
e
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 utilis´e pour obtenir le num´ro de la fenˆtre active, et get pour obtenir la liste
e
e
e
des attributs de la fenˆtre et de leur valeur sous la forme : Nom de l’attribut = Valeur de l’attribut.
e
On modifie la valeur des attributs d’une fenˆtre avec la fonction set :
e
set(’Nom de l’attribut’, ’Valeur de l’attribut’, . . . , . . . )
On peut cr´er directement une fenˆtre dont les attributs ont une valeur particuli`re :
e
e
e
figure(’Nom de l’attribut’, ’Valeur de l’attribut’, . . . , . . . )
Exemple 5.1.4 :
La s´quence :
e
>> figure(’Name’, ’essai’, ’NumberTitle’, ’off’)
cr´e une fenˆtre dont le nom est essai.
e
e

5.2
5.2.1

Courbes du plan
La fonction plot

Soient x et y deux listes (ou deux vecteurs) de mˆme longueur. La fonction plot(x, y) trace
e
dans la fenˆtre active le graphe de y en fonction x. En fait le graphe est obtenu en joignant par
e
de petits segments de droite les points de coordonn´es (x(k), y(k)) pour (1 ≤ k ≤ length(x)).
e
lorsqu’il n’y a pas de fenˆtre active, MATLABcr´e automatiquement une nouvelle fenˆtre.
e
e
e

AJ.Casadevall - mars 04

p.53
CHAPITRE 5. COURBES ET SURFACES
Exemple 5.2.1 :
Pour obtenir le graphe de la fonction sin(x) sur l’intervalle [0, 2π] :
>> x=[0:.5:2*pi] ; y=sin(x) ; plot(x,y)

MATLAB d´finit automatiquement un syst`me d’axes. La qualit´ du trac´ d´pend du nombre de
e
e
e
e e

points construits comme le montre l’exemple suivant dans lequel on a choisi un pas plus petit pour
d´crire l’intervalle [0, 2π] :
e
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 fenˆtre et qu’il a ´t´ remplac´ par le second.
e ee
e
e
ee
e

5.2.2

Tracer dans une ou plusieurs fenˆtres
e

Suivant le contexte, on peut souhaiter que :
– les trac´s apparaissent dans des fenˆtres diff´rentes : on cr´e autant de fenˆtres que
e
e
e
e
e
de trac´s en utilisant la fonction figure :
e
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)
Ces deux s´quences construisent deux fenˆtres, la premi`re contenant le graphe de cos(x), la
e
e
e
seconde le graphe de sin(x).
p. 54

AJ.Casadevall - mars 04
5.2. COURBES DU PLAN

– tous les trac´s apparaissent simultan´ment dans la fenˆtre active : on peut proc´der
e
e
e
e
de deux fa¸ons :
c
– soit en utilisant les commandes hold on et hold off : apr`s hold on tous les trac´s
e
e
ont lieu dans la fenˆtre active ; hold off fait revenir au mode de trac´ normal.
e
e
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 mˆme fenˆtre
e
e
et dans le mˆme syst`me d’axes.
e
e

– soit en donnant comme argument a plot la liste de tous les couples de listes (ou de
`
vecteurs) correspondant aux courbes a tracer : plot(x1 , y1 , x2 , y2 , · · · ) ce qui est exacte`
ment ´quivalent a
e
`
>> hold on
>> plot(x1 , y1 )
>> plot(x2 , y2 )
>> . . . .
>> hold off
Lorsque plusieurs trac´s ont lieu dans la mˆme fenˆtre, il peut ˆtre int´ressant d’utiliser un
e
e
e
e
e
style diff´rent pour distinguer les diff´rents trac´s. Pour cela on ajoute un troisi`me argument `
e
e
e
e
a
AJ.Casadevall - mars 04

p.55
CHAPITRE 5. COURBES ET SURFACES
la d´finition de chaque trac´ : plot(x1 , y1 , st1 , x2 , y2 , st2 , · · · ) o` sti est une chaˆ de un a trois
e
e
u
ıne
`
caract`res pris dans le tableau ci-dessous :
e
Couleur
Marqueur
Style du trac´
e
y
jaune
.
point
- (∗) ligne continue
m magenta
o
cercle
:
ligne pointill´e
e
c
cyan
x
x
-tirets
r
red
+
plus
-.
tiret point
g
vert
∗
´toiles
e
b
bleu
s
carr´s
e
w
blanc
d
losanges
k noir (∗) <, > triangles
Les valeurs not´es (∗) sont les valeurs par d´faut.
e
e
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´.
e

5.2.3

La commande print

La commande print permet d’imprimer le contenu de la fenˆtre active, plus pr´cis´ment de la
e
e e
zone rectangulaire d´finie par les axes dans laquelle s’inscrit le trac´ ou plot-box.
e
e
Avec pour argument un nom de fichier,
print -option nomDeFichier
cette commande permet de rediriger l’impression vers le fichier.
Les options d´pendent de l’environnement (UNIX, Linux, Windows, MacOs) et de la version de
e
MATLAB utilis´e (c.f aide en ligne).
e

p. 56

AJ.Casadevall - mars 04
5.2. COURBES DU PLAN
Exemple 5.2.6 :
La commande print -deps fig-gr6.eps appliqu´e ` la fenˆtre ci-dessus donne la figure suivante :
e a
e

5.2.4

Courbes param´triques
e

La fonction plot permet aussi le trac´ de courbes planes d´finies sous la forme :
e
e

 x = f (t)
t ∈ [t0 , t1 ]

y = g(t)
– on cr´e un vecteur t correspondant a une subdivision de l’intervalle [t0 , t1 ]
e
`
– on cr´e deux vecteurs x et y en appliquent respectivement les fonctions f et g ` t
e
a
– 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 cˆt´ en premi`re lecture.)
e
e
oe
e
La fonction plot ainsi que les autres fonctions de trac´, cr´e automatiquement deux axes gradu´s,
e e
e
l’axe des x et l’axe des y :
– l’axe des x est l’axe horizontal ; il est associ´ au vecteur qui est le premier argument de plot
e
et couvre l’intervalle qui s’´tend de la plus petite valeur min de ce vecteur ` sa plus grande
e
a
valeur xmax ;
– l’axe des y est l’axe vertical ; il est associ´ au vecteur qui est le second argument de plot et
e
couvre l’intervalle qui s’´tend de la plus petite valeur ymin de ce vecteur et sa plus grande
e
valeur ymax.
Ces deux axes d´finissent la zone rectangulaire ou plotting-box dans laquelle s’inscrivent les trac´s.
e
e
la fonction axis
– axis([x0 , x1 , y0 , y1 ]) permet d’extraire de la plotting-box la r´gion rectangulaire d´finie par
e
e
e
les points (x0 , x1 ) et (y0 , y1 ), et de l’afficher dans la fenˆtre active.

AJ.Casadevall - mars 04

p.57
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])

L’exemple pr´c´dent montre que la modification de la zone affich´e a une incidence non
e e
e
n´gligeable sur le facteur d’´chelle utilis´ par MATLAB. Le graphe de la fonction exp(5x)−1
e
e
e
qui paraˆ tr`s “plat” dans la figure de gauche ne l’est pas autant dans la figure de droite.
ıt e
– axis option modifie l’apparence des axes et de la plotting-box :
– manual fixe les bornes (et le facteur d’´chelle) de chaque axe ` leur valeur actuelle, de
e
a
telle sorte que si hold a la valeur on, les trac´s suivants ne pourront les modifier ;
e
– equal fixe une ´chelle commune aux deux axes ;
e
– square donne a la plotting-box une forme carr´e ;
`
e
– normal rend a la plotting-box sa forme rectangulaire usuelle et restaure les valeurs des
`
bornes de chaque axe ` leur valeur par d´faut ;
a
e
– auto retour au mode automatique de d´finition des axes et de la plotting-box.
e
Consultez l’aide en ligne pour d’autres usages de axis.
Exemple 5.2.8 :
Dans cet exemple, on trace la courbe (un cercle) d´finie par l’´quation param´trique :
e
e
e
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 n´cessaire pour que le cercle n’ait pas la forme d’une ellipse :
e
les fonctions xlabel, ylabel, title et gtext
Les fonctions xlabel(’x-legend ’) et ylabel(’y-legend ’) permettent d’associer une l´gende
e
a
` l’axe de coordonn´e correspondant. La fonction title(’titre ’) ajoute un titre au trac´ (pas
e
e
a
` la fenˆtre) et gtext(’texte ’) permet de placer avec la souris le texte pass´ comme argument.
e
e
A
Toutes ces chaˆ
ınes de caract`res peuvent contenir des commandes L TEX.
e

p. 58

AJ.Casadevall - mars 04
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 affiche un cadre qui d´limite la plotting-box ; box off supprime ce cadre ;
e
grid on superpose une grille au trac´ ; grid off supprime cette grille.
e

AJ.Casadevall - mars 04

p.59
CHAPITRE 5. COURBES ET SURFACES

5.2.6

Autres fonctions de trac´ de courbes planes
e

Les fonctions d´riv´es de plot sont nombreuses. On peut se r´f´rer ` l’aide pour en avoir une
e e
ee
a
liste exhaustive.
fonctions loglog, semilogx et semilogy
Ces fonctions sont semblables ` plot except´ le fait qu’une ´chelle logarithmique est utilis´e
a
e
e
e
respectivement pour les deux axes, l’axe des x et l’axe des y.
fonction plotyy
Avec une syntaxe proche de celle de plot, plotyy(x1 , y1 , st1 , x2 , y2 , st2 ) trace y1 en fonction
de x1 et y2 en fonction de x2 avec deux axes des y l’un a gauche de la plotting-box adapt´ ` y1 ,
`
ea
l’autre a droite adapt´ ` y2 .
`
ea
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 d’une chaˆ de caract`res) de la fonction dont
ıne
e
on souhaite tracer le graphe et les valeurs des bornes de l’intervalle d’´tude. L’intervalle d’´tude
e
e
c a
e
e
est subdivis´ par MATLAB de fa¸on ` donner le trac´ le plus pr´cis possible.
e
les fonctions hist et pie
la fonction hist(x,n) r´partit les valeurs de la liste (ou du vecteur) x en n classes et trace
e
l’histogramme correspondant (par d´faut n = 10). [N,X] = hist(x,n) retourne dans N l’effectif
e
de chacune des classes et dans X l’abscisse du centre de chaque classe.
La fonction pie(x) dessine un diagramme des valeurs de x normalis´es par s = n xi .
e
i=1
Exemple 5.2.10 :
>> a = randn(1,500) ; hist(a)
>> [N,X] = hist(a)
N =
12
15
47
79
96
102
69
X =
-2.275 -1.786 -1.297 -0.808 -0.318
>> pie(N)

p. 60

46
0.171

26
0.660

8
1.150

1.639

2.128

AJ.Casadevall - mars 04
5.3. COURBES DE L’ESPACE - FONCTION PLOT3

5.3

Courbes de l’espace - Fonction plot3

La fonction plot3 ´tends les fonctionnalit´s de plot aux courbes de l’espace. Les possibilit´s
e
e
e
de personnalisation des axes sont les mˆmes :
e
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 parall´l´pip´dique. Dans les versions r´centes de MATLAB, rotate3d on permet de d´placer la plottingee e
e
e

box avec la souris.

5.4

Surfaces de l’espace

e
e
Dans cette section on va voir comment MATLAB permet de repr´senter des surfaces d´finies par
une relation z = f (x, y) o` f est une fonction continue, d´finie sur un domaine [x0 , x1 ] × [y0 , y1 ].
u
e

5.4.1

Mod´lisation du domaine [x0 , x1 ] × [y0 , y1 ] - fonction meshgrid
e

Cette mod´lisation se fait en deux ´tapes :
e
e
– d´finition de deux subdivisions r´guli`res : x pour [x0 , x1 ] et y pour [y0 , y1 ] ;
e
e
e
– construction d’une grille mod´lisant le domaine [x0 , x1 ] × [y0 , y1 ] : La grille est d´finie
e
e
par deux tableaux xx et yy r´sultant de [xx,yy] = meshgrid(x,y).
e
Pr´cis´ment, xx(l, k) = x(k) et yy(l, k) = y(l) pour tout k, (1 ≤ k ≤ length(x)) et pour
e e
tout l, (1 ≤ l ≤ length(y)) de telle sorte que (xx(l, k), yy(l, k)) = (x(k), y(l)).
Il est alors possible d’´valuer les valeurs de f suivant cette grille en appliquant f au couple de
e
tableaux xx et yy.

5.4.2

Trac´ de la surface - fonctions mesh et surf
e

Une fois le domaine d’´tude mod´lis´ par deux tableaux xx et yy, on ´value les valeurs de
e
e e
e
la fonction pour obtenir un tableau z = f(xx,yy). On dessine la surface z = f (x, y) (trac´e en
e
perspective dans une plotting-box comme pour plot3) avec l’une des fonctions suivantes :
AJ.Casadevall - mars 04

p.61
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB
Introduction à MATLAB

Mais conteúdo relacionado

Mais procurados (19)

Support matlab st
Support matlab stSupport matlab st
Support matlab st
 
Tp2 matlab
Tp2 matlab Tp2 matlab
Tp2 matlab
 
Cours 1 bases de matlab 2eme annees
Cours 1   bases de matlab 2eme anneesCours 1   bases de matlab 2eme annees
Cours 1 bases de matlab 2eme annees
 
Dijkstra kshortest
Dijkstra kshortestDijkstra kshortest
Dijkstra kshortest
 
Coursmp
CoursmpCoursmp
Coursmp
 
Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019
 
Chapitre3 tableauxcpp
Chapitre3 tableauxcppChapitre3 tableauxcpp
Chapitre3 tableauxcpp
 
Tp1 matlab
Tp1 matlab Tp1 matlab
Tp1 matlab
 
Tp matlab dc machines partie 1
Tp matlab dc machines partie 1Tp matlab dc machines partie 1
Tp matlab dc machines partie 1
 
Tp4 matlab
Tp4 matlabTp4 matlab
Tp4 matlab
 
Support tutoriel : Créer votre jeu en HTML5
Support tutoriel : Créer votre jeu en HTML5Support tutoriel : Créer votre jeu en HTML5
Support tutoriel : Créer votre jeu en HTML5
 
Td2 decrypted
Td2 decryptedTd2 decrypted
Td2 decrypted
 
Ch06
Ch06Ch06
Ch06
 
Tp 1 introduction à matlab
Tp 1 introduction à matlabTp 1 introduction à matlab
Tp 1 introduction à matlab
 
Matlab by Prof.Keang Sè Pouv
Matlab by Prof.Keang Sè PouvMatlab by Prof.Keang Sè Pouv
Matlab by Prof.Keang Sè Pouv
 
Ch03
Ch03Ch03
Ch03
 
Algebre
AlgebreAlgebre
Algebre
 
2018-10-04 Meetup PG Nantes - PostgreSQL: Estimer la mémoire nécessaire pour ...
2018-10-04 Meetup PG Nantes - PostgreSQL: Estimer la mémoire nécessaire pour ...2018-10-04 Meetup PG Nantes - PostgreSQL: Estimer la mémoire nécessaire pour ...
2018-10-04 Meetup PG Nantes - PostgreSQL: Estimer la mémoire nécessaire pour ...
 
Les algorithmes de tri
Les algorithmes de triLes algorithmes de tri
Les algorithmes de tri
 

Destaque

Architectures logicielles et materielles
Architectures logicielles et materiellesArchitectures logicielles et materielles
Architectures logicielles et materiellesAdnane Farid
 
Contrôle d'un ordinateur à distance
Contrôle d'un ordinateur à distanceContrôle d'un ordinateur à distance
Contrôle d'un ordinateur à distanceReseau Informed
 
Math 10-12 Lesson 16 week of December 22nd
Math 10-12 Lesson 16 week of December 22nd Math 10-12 Lesson 16 week of December 22nd
Math 10-12 Lesson 16 week of December 22nd HamiltonWildcats
 
Parallel computing on internet
Parallel computing on internetParallel computing on internet
Parallel computing on internetMohamed Boudchiche
 
Tutoriel : Apprendre à configurer et gérer un serveur Web sous Windows Server...
Tutoriel : Apprendre à configurer et gérer un serveur Web sous Windows Server...Tutoriel : Apprendre à configurer et gérer un serveur Web sous Windows Server...
Tutoriel : Apprendre à configurer et gérer un serveur Web sous Windows Server...Christophe Lauer
 
part of speech tagger for ARABIC TEXT
part of speech tagger for ARABIC TEXTpart of speech tagger for ARABIC TEXT
part of speech tagger for ARABIC TEXTarteimi
 
Traitement d'image sous Matlab
Traitement d'image sous Matlab  Traitement d'image sous Matlab
Traitement d'image sous Matlab Hajer Dahech
 
Administration reseau
Administration reseauAdministration reseau
Administration reseaunadimoc
 
Cours linux complet
Cours linux completCours linux complet
Cours linux completaubin82
 
Grassroots fundraising alumni treffen fundraising akademie mai 2010
Grassroots fundraising alumni treffen fundraising akademie mai 2010Grassroots fundraising alumni treffen fundraising akademie mai 2010
Grassroots fundraising alumni treffen fundraising akademie mai 2010Alexandra Ripken
 
Blogsurfing 2012 deviendra grand
Blogsurfing 2012   deviendra grandBlogsurfing 2012   deviendra grand
Blogsurfing 2012 deviendra grandGrégory
 
北極圈外拉普蘭和北大荒
北極圈外拉普蘭和北大荒北極圈外拉普蘭和北大荒
北極圈外拉普蘭和北大荒meikochen
 
Atelier 6 - Collection 2012-2013 des tendances du Etourisme interventions de ...
Atelier 6 - Collection 2012-2013 des tendances du Etourisme interventions de ...Atelier 6 - Collection 2012-2013 des tendances du Etourisme interventions de ...
Atelier 6 - Collection 2012-2013 des tendances du Etourisme interventions de ...R-Evolutions Touristiques de Brive
 

Destaque (20)

Développement Sous Android
Développement Sous AndroidDéveloppement Sous Android
Développement Sous Android
 
Cours rn 2006
Cours rn 2006Cours rn 2006
Cours rn 2006
 
Architectures logicielles et materielles
Architectures logicielles et materiellesArchitectures logicielles et materielles
Architectures logicielles et materielles
 
Contrôle d'un ordinateur à distance
Contrôle d'un ordinateur à distanceContrôle d'un ordinateur à distance
Contrôle d'un ordinateur à distance
 
Math 10-12 Lesson 16 week of December 22nd
Math 10-12 Lesson 16 week of December 22nd Math 10-12 Lesson 16 week of December 22nd
Math 10-12 Lesson 16 week of December 22nd
 
Hackers
HackersHackers
Hackers
 
DNS
DNSDNS
DNS
 
Parallel computing on internet
Parallel computing on internetParallel computing on internet
Parallel computing on internet
 
Carré Magique Cpp
Carré Magique CppCarré Magique Cpp
Carré Magique Cpp
 
Tutoriel : Apprendre à configurer et gérer un serveur Web sous Windows Server...
Tutoriel : Apprendre à configurer et gérer un serveur Web sous Windows Server...Tutoriel : Apprendre à configurer et gérer un serveur Web sous Windows Server...
Tutoriel : Apprendre à configurer et gérer un serveur Web sous Windows Server...
 
part of speech tagger for ARABIC TEXT
part of speech tagger for ARABIC TEXTpart of speech tagger for ARABIC TEXT
part of speech tagger for ARABIC TEXT
 
Traitement d'image sous Matlab
Traitement d'image sous Matlab  Traitement d'image sous Matlab
Traitement d'image sous Matlab
 
Administration reseau
Administration reseauAdministration reseau
Administration reseau
 
Cours linux complet
Cours linux completCours linux complet
Cours linux complet
 
Superviseur hse ifact rouiba
Superviseur hse ifact rouibaSuperviseur hse ifact rouiba
Superviseur hse ifact rouiba
 
Sauvegarder ses donnees
Sauvegarder ses donneesSauvegarder ses donnees
Sauvegarder ses donnees
 
Grassroots fundraising alumni treffen fundraising akademie mai 2010
Grassroots fundraising alumni treffen fundraising akademie mai 2010Grassroots fundraising alumni treffen fundraising akademie mai 2010
Grassroots fundraising alumni treffen fundraising akademie mai 2010
 
Blogsurfing 2012 deviendra grand
Blogsurfing 2012   deviendra grandBlogsurfing 2012   deviendra grand
Blogsurfing 2012 deviendra grand
 
北極圈外拉普蘭和北大荒
北極圈外拉普蘭和北大荒北極圈外拉普蘭和北大荒
北極圈外拉普蘭和北大荒
 
Atelier 6 - Collection 2012-2013 des tendances du Etourisme interventions de ...
Atelier 6 - Collection 2012-2013 des tendances du Etourisme interventions de ...Atelier 6 - Collection 2012-2013 des tendances du Etourisme interventions de ...
Atelier 6 - Collection 2012-2013 des tendances du Etourisme interventions de ...
 

Semelhante a Introduction à MATLAB

courspython3.pdf
courspython3.pdfcourspython3.pdf
courspython3.pdfDendouga1
 
formation_latex
formation_latexformation_latex
formation_latexBui Loi
 
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...Hadjer BENHADJ DJILALI
 
OpenERP - Gestion de prix de revient
OpenERP - Gestion de prix de revientOpenERP - Gestion de prix de revient
OpenERP - Gestion de prix de revientTaieb Kristou
 
notes-de-cours-de-fouille-de-donnees.pdf
notes-de-cours-de-fouille-de-donnees.pdfnotes-de-cours-de-fouille-de-donnees.pdf
notes-de-cours-de-fouille-de-donnees.pdfCoulibalyYoussoufngo
 
pfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdfpfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdfnesrine haloui
 
Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmesEvaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmesBenjamin Vidal
 
Cours achirecture des ordi 1
Cours achirecture des ordi 1Cours achirecture des ordi 1
Cours achirecture des ordi 1fofanaabou
 
Conception et implémentation d'un nouveau langage de programmation
Conception et implémentation d'un nouveau langage de programmationConception et implémentation d'un nouveau langage de programmation
Conception et implémentation d'un nouveau langage de programmationAymen Bouein
 
Automatisme) www.cours-online.com
Automatisme) www.cours-online.comAutomatisme) www.cours-online.com
Automatisme) www.cours-online.commorin moli
 
Introduction aux systèmes automatisés
Introduction aux systèmes automatisésIntroduction aux systèmes automatisés
Introduction aux systèmes automatisésmorin moli
 
Gestion des actifs applicatifs
Gestion des actifs applicatifsGestion des actifs applicatifs
Gestion des actifs applicatifsSafaAballagh
 
réaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testréaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testahmed oumezzine
 
Cours mass pascalllllllllllle
Cours mass pascalllllllllllleCours mass pascalllllllllllle
Cours mass pascalllllllllllleChawki Riadh
 

Semelhante a Introduction à MATLAB (20)

Cours matlab
Cours matlabCours matlab
Cours matlab
 
Matlab for engineer
Matlab for engineer Matlab for engineer
Matlab for engineer
 
courspython3.pdf
courspython3.pdfcourspython3.pdf
courspython3.pdf
 
Algo
AlgoAlgo
Algo
 
Tp sgbd gsi
Tp sgbd gsiTp sgbd gsi
Tp sgbd gsi
 
Poly
PolyPoly
Poly
 
formation_latex
formation_latexformation_latex
formation_latex
 
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
 
OpenERP - Gestion de prix de revient
OpenERP - Gestion de prix de revientOpenERP - Gestion de prix de revient
OpenERP - Gestion de prix de revient
 
notes-de-cours-de-fouille-de-donnees.pdf
notes-de-cours-de-fouille-de-donnees.pdfnotes-de-cours-de-fouille-de-donnees.pdf
notes-de-cours-de-fouille-de-donnees.pdf
 
pfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdfpfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdf
 
Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmesEvaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
 
Cours achirecture des ordi 1
Cours achirecture des ordi 1Cours achirecture des ordi 1
Cours achirecture des ordi 1
 
Conception et implémentation d'un nouveau langage de programmation
Conception et implémentation d'un nouveau langage de programmationConception et implémentation d'un nouveau langage de programmation
Conception et implémentation d'un nouveau langage de programmation
 
Automatisme) www.cours-online.com
Automatisme) www.cours-online.comAutomatisme) www.cours-online.com
Automatisme) www.cours-online.com
 
Introduction aux systèmes automatisés
Introduction aux systèmes automatisésIntroduction aux systèmes automatisés
Introduction aux systèmes automatisés
 
Gestion des actifs applicatifs
Gestion des actifs applicatifsGestion des actifs applicatifs
Gestion des actifs applicatifs
 
réaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de testréaliser une plateforme d’automatisation et de génération des rapports de test
réaliser une plateforme d’automatisation et de génération des rapports de test
 
Twido guide de programmation
Twido guide de programmationTwido guide de programmation
Twido guide de programmation
 
Cours mass pascalllllllllllle
Cours mass pascalllllllllllleCours mass pascalllllllllllle
Cours mass pascalllllllllllle
 

Último

COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxssuserbd075f
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxRayane619450
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 

Último (10)

COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 

Introduction à MATLAB

  • 1. Universit´ Paris-Dauphine e e Deug Sciences mention Mass - 2i`me ann´e e Introduction a MATLAB ` 1 0.5 0 8 -0.5 10 6 4 2 5 0 0 -2 -4 -5 -6 -10 -8 Andr´ Casadevall e mars 2004
  • 3. Table des mati`res e 1 MATLAB 1.1 Qu’est ce que MATLAB ? . . . . . . . . . . . . . 1.2 Une session MATLAB . . . . . . . . . . . . . . . 1.2.1 Lancer, quitter MATLAB . . . . . . . . . 1.2.2 Fonctions et commandes . . . . . . . . . . 1.2.3 Aide en ligne - help . . . . . . . . . . . . 1.2.4 Interaction avec le syst`me d’exploitation e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 8 8 8 9 2 Les “objets” de MATLAB 2.1 Objets et classes de MATLAB . . . . . . . . . . . . . . . . . . . 2.2 Valeurs litt´rales . . . . . . . . . . . . . . . . . . . . . . . . . . e 2.2.1 Nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Tableaux de nombres . . . . . . . . . . . . . . . . . . . . 2.2.3 Caract`res et chaˆ e ınes de caract`res . . . . . . . . . . . . e 2.2.4 Cellules et tableaux de cellules - cell array . . . . . . 2.3 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Identificateurs . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Affectation . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3 Espace de travail . . . . . . . . . . . . . . . . . . . . . . 2.4 Listes et vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Construction de listes . . . . . . . . . . . . . . . . . . . 2.4.2 Construction de vecteurs . . . . . . . . . . . . . . . . . 2.4.3 Nombre d’´l´ments d’une liste ou d’un vecteur - length ee 2.4.4 Acc`s aux ´l´ments d’une liste ou d’un vecteur . . . . . e ee 2.4.5 Extraction de sous-listes ou de sous-vecteurs . . . . . . 2.5 Tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.1 Construction de tableaux . . . . . . . . . . . . . . . . . 2.5.2 Acc`s aux ´l´ments d’un tableau . . . . . . . . . . . . . e ee 2.5.3 Lignes et colonnes d’un tableau . . . . . . . . . . . . . . ´e 2.5.4 El´ments diagonaux d’un tableau - diag . . . . . . . . . 2.5.5 Sous-tableaux et blocs - fonctions tril et triu . . . . 2.5.6 Tableaux particuliers . . . . . . . . . . . . . . . . . . . . 2.6 Op´rations sur les ´l´ments d’un tableau . . . . . . . . . . . . . e ee 2.6.1 Fonctions sum et prod . . . . . . . . . . . . . . . . . . . 2.6.2 Fonctions max et min . . . . . . . . . . . . . . . . . . . . 2.6.3 Fonction mean . . . . . . . . . . . . . . . . . . . . . . . 2.6.4 Fonction cov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 12 12 12 13 14 14 15 15 15 18 19 19 20 21 22 22 22 23 24 24 25 26 26 26 27 27 28 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  • 4. ` TABLE DES MATIERES 3 Expressions, scripts et m-files 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Op´rations de MATLAB . . . . . . . . . . . . . . . . . e 3.2.1 Op´rateurs . . . . . . . . . . . . . . . . . . . . e 3.2.2 Op´rations sur les tableaux . . . . . . . . . . . e 3.2.3 Op´rations bool´ennes . . . . . . . . . . . . . . e e ´ 3.2.4 Evaluation des expressions - variable ans . . . 3.3 Scripts et m-files . . . . . . . . . . . . . . . . . . . . . 3.3.1 Scripts . . . . . . . . . . . . . . . . . . . . . . . 3.3.2 Cr´ation de m-files . . . . . . . . . . . . . . . . e 3.3.3 Ex´cution d’un m-file . . . . . . . . . . . . . . e ´ ements d’´criture de m-files . . . . . . . . . . 3.3.4 El´ e 3.4 Structures algorithmiques . . . . . . . . . . . . . . . . 3.4.1 S´lection - if . . . end et if . . . else . . . end e 3.4.2 R´p´tition - for . . . end . . . . . . . . . . . . e e 3.4.3 It´ration conditionnelle - while . . . end . . . . e 3.4.4 Construction switch . . . case . . . . . . . . . 3.5 Fonctions et m-files . . . . . . . . . . . . . . . . . . . . 3.5.1 Syntaxe . . . . . . . . . . . . . . . . . . . . . . 3.5.2 R`gles et propri´t´s . . . . . . . . . . . . . . . e ee 3.5.3 Traitement des erreurs - try . . . catch . . . . 3.5.4 Optimisation des calculs . . . . . . . . . . . . . 4 MATLAB et l’analyse num´rique e 4.1 Fonctions “num´riques” . . . . . . . . . . e 4.2 Polynˆmes . . . . . . . . . . . . . . . . . . o 4.3 Calcul matriciel . . . . . . . . . . . . . . . 4.4 Fonctions d’une variable . . . . . . . . . . 4.4.1 Recherche de minimum - fmin . . 4.4.2 Recherche de racines - fzero . . . 4.4.3 Int´gration - trapz, quad et quad8 e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Courbes et surfaces 5.1 Fenˆtres graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 5.1.1 Cr´ation d’une fenˆtre - fonctions figure et gcf . . . . . . . . e e 5.1.2 Attributs d’une fenˆtre - get . . . . . . . . . . . . . . . . . . . e 5.2 Courbes du plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 La fonction plot . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2 Tracer dans une ou plusieurs fenˆtres . . . . . . . . . . . . . . . e 5.2.3 La commande print . . . . . . . . . . . . . . . . . . . . . . . 5.2.4 Courbes param´triques . . . . . . . . . . . . . . . . . . . . . . e 5.2.5 Personnalisation des axes et de la plotting-box . . . . . . . . . 5.2.6 Autres fonctions de trac´ de courbes planes . . . . . . . . . . . e 5.3 Courbes de l’espace - Fonction plot3 . . . . . . . . . . . . . . . . . . . 5.4 Surfaces de l’espace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.1 Mod´lisation du domaine [x0 , x1 ] × [y0 , y1 ] - fonction meshgrid e 5.4.2 Trac´ de la surface - fonctions mesh et surf . . . . . . . . . . e 5.4.3 Surfaces et courbes de niveau . . . . . . . . . . . . . . . . . . . p. 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 29 30 30 30 32 33 33 33 34 34 34 36 36 37 39 39 40 41 41 42 42 . . . . . . . 45 45 46 47 48 48 48 49 . . . . . . . . . . . . . . . 51 51 51 53 53 53 54 56 57 57 60 61 61 61 61 62 AJ.Casadevall - mars 04
  • 5. ` TABLE DES MATIERES 6 7 Importation et exportation de donn´es e 65 6.1 Retour sur les commandes save et load . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.1.1 Enregistrement de la valeur de tableaux dans un fichier-text - save . . . . . 65 6.1.2 Retrouver la valeur d’un tableau - load . . . . . . . . . . . . . . . . . . . . . 66 Matrices-test 69 8 Exemples 73 AJ.Casadevall - mars 04 p.5
  • 6. ` TABLE DES MATIERES p. 6 AJ.Casadevall - mars 04
  • 7. 1 MATLAB 1.1 1.2 1.1 Qu’est ce que MATLAB ? . . . . . . . . . . . Une session MATLAB . . . . . . . . . . . . . 1.2.1 Lancer, quitter MATLAB . . . . . . . . . . . 1.2.2 Fonctions et commandes . . . . . . . . . . . . 1.2.3 Aide en ligne - help . . . . . . . . . . . . . . 1.2.4 Interaction avec le syst`me d’exploitation . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 8 8 9 Qu’est ce que MATLAB ? MATLAB pour MATtrix LABoratory, est une application qui a ´t´ con¸ue afin de fournir un ee c environnement de calcul matriciel simple, efficace, interactif et portable, permettant la mise en œuvre des algorithmes d´velopp´s dans le cadre des projets linpack et eispack. e e MATLAB est constitu´ d’un noyau relativement r´duit, capable d’interpr´ter puis d’´valuer les e e e e expressions num´riques matricielles qui lui sont adress´es : e e – soit directement au clavier depuis une fenˆtre de commande ; e – soit sous forme de s´quences d’expressions ou scripts enregistr´es dans des fichiers-texte e e appel´s m-files et ex´cut´es depuis la fenˆtre de commande ; e e e e – soit plus rarement sous forme de fichiers binaires appel´s mex-files ou fichiers .mex g´n´r´s e e ee a ` partir d’un compilateur C ou fortran. Ce noyau est compl´t´ par une biblioth`que de fonctions pr´d´finies, tr`s souvent sous forme de ee e e e e fichiers m-files, et regroup´s en paquetages ou toolboxes . A cˆt´ des toolboxes requises local et e oe matlab, il est possible d’ajouter des toolboxes sp´cifiques ` tel ou tel probl`me math´matique, e a e e Optimization Toolbox, Signal Processing Toolbox par exemple ou encore des toolboxes cr´es par e l’utilisateur lui-mˆme. Un syst`me de chemin d’acc`s ou ou path permet de pr´ciser la liste des e e e e r´pertoires dans lesquels MATLAB trouvera les diff´rents fichiers m-files. e e 1.2 Une session MATLAB L’interface-utilisateur de MATLAB varie l´g`rement en fonction de la version de MATLAB et du e e type de machine utilis´e. Elle est constitu´ d’une fenˆtre de commande qui peut ˆtre compl´t´e par e e e e ee une barre de menu et pour les versions les plus r´centes de deux fenˆtres, l’une affichant l’historique e e de la session et l’autre la structure des r´pertoires accessibles par MATLAB. e Avant la premiere utilisation de MATLAB, il est vivement recommand´ (c’est mˆme indispensable e e dans le cas d’une installation en r´seau) ` chaque utilisateur de cr´er un r´pertoire de travail, tpMl e a e e
  • 8. CHAPITRE 1. MATLAB par exemple, o` il pourra enregistrer ses fichiers. Lors de la premi`re session, le chemin d’acc`s ` u e e a ce r´pertoire sera ajout´ aux chemins d’acc`s connus de MATLAB (MATLABPATH), soit en utilisant e e e l’item Set Path du menu File, soit en tapant la commande addpath suivie du chemin d’acc`s au e repertoire de travail. 1.2.1 Lancer, quitter MATLAB Dans l’environnement unix, on tape la commande matlab sur la ligne de commande active ; dans les environnements Windows ou MacOs, il suffit de cliquer sur l’icˆne de l’application. o La fenˆtre de commande de MATLAB s’ouvre et on entre alors les commandes ou les expressions e ae ` ´valuer a droite du prompt >>. Le processus d’´valuation est d´clench´ par la frappe de la touche ` e e e <enter>. A chaque d´but session, l’utilisateur indiquera a MATLAB que le r´pertoire tpMl d´fini e ` e e pr´c´demment est le r´pertoire de travail de la session en tapant la commande cd suivie du chemin e e e d’acc`s au r´pertoire tpMl. e e On quitte MATLAB en tapant quit dans la fenˆtre de commande ou en s´lectionnant quit dans e e 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 num´rique ou vectorielle, mais efe fectuent une action sur l’environnement de la session en cours. Ces fonctions sont alors appel´es e commandes. Elles sont caract´ris´es par le fait que leurs arguments (lorsqu’ils existent) ne sont e e pas plac´s entre parenth`ses. Les autres fonctions se comportent de fa¸on assez semblable aux fonce e c tions math´matiques et la valeur qu’elles calculent peut ˆtre affect´e ` une variable. e e e a Dans de nombreux cas, fonctions ou commandes peuvent ˆtre appel´es avec des arguments diff´rents e e e soit par leur nombre, soit par leur nature (nombre, vecteur, matrice, . . . ). Le traitement effectu´ e d´pend alors du nombre et de la nature des arguments. Par exemple, nous verrons plus loin que la e fonction diag appel´e avec une matrice pour argument retourne le vecteur constitu´ par sa diage e onale principale ou vecteur diagonal. Lorsque cette mˆme fonction est appel´e avec un vecteur e e pour argument, elle retourne la matrice diagonale dont le vecteur-diagonal est le vecteur donn´. e Aussi une fonction ou une commande n’est pas caract´ris´e par son seul nom, mais par sa signature e e c’est ` dire l’ensemble constitu´ de son nom et de la liste de ses param`tres. a e e 1.2.3 Aide en ligne - help e e MATLAB comporte un tr`s grand nombre d’op´rateurs, de commandes et de fonctions. Tous ne seront pas d´crits dans ce document d’autant qu’une aide en ligne efficace peut ˆtre utilis´e. On e e e peut taper les commandes suivantes : – help permet d’obtenir l’aide de l’aide et donne une liste th´matique ; e – help nom de fonction donne la d´finition de la fonction d´sign´e et des exemples d’utilisation ; e e e – lookfor sujet donne une liste des rubriques de l’aide en ligne en relation avec le sujet indiqu´. e Exemple 1.2.1 : >>lookfor min minus.m: %Minus. uminus.m: %- Unary minus. REALMIN Smallest positive floating point number. FLOOR Round towards minus infinity. MIN Smallest component. FMIN Minimize function of one variable. FMINS Minimize function of several variables. p. 8 AJ.Casadevall - mars 04
  • 9. 1.2. UNE SESSION MATLAB COLMMD Column minimum degree permutation. GMRES Generalized Minimum Residual Method. QMR Quasi-Minimal Residual Method SYMMMD Symmetric minimum degree permutation. . . . EDU> 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.4 Interaction avec le syst`me d’exploitation e Les commandes et fonctions suivantes permettent ` MATLAB d’interagir avec le syst`me d’exa e ploitation de la machine sur laquelle il est utilis´ : e – addpath path : ajoute le chemin d’acc`s (path) a la liste des chemins d’acc`s connus de e ` e MATLAB (MATLABPATH) ; – cd ou pwd : affiche le chemin d’acc`s au r´pertoire de travail actuel ; e e – cd path : fixe le r´pertoire de chemin d’acc`s path comme repertoire de travail ; e e – dir ou ls : affiche le contenu du r´pertoire de travail actuel ; e – delete : efface le fichier sp´cifi´ (peut ˆtre utilis´e sous forme de fonction sous la forme : e e e e delete(’nomDeFichier’)) ; – mkdir path : cr´e le repertoire de chemin d’acc`s path ; e e – rmpath path : supprime le chemin d’acc`s (path) du (MATLABPATH) ; e – isdir (path ) : fonction bool´enne qui retourne 1 si le chemin d’acc`s (path) est celui d’un e e r´pertoire, 0 sinon ; e – filesep : variable dont la valeur est celle du symbole s´parateur de lignes (d´pend du syst`me e e e d’exploitation de la machine utilis´e) ; e AJ.Casadevall - mars 04 p.9
  • 10. CHAPITRE 1. MATLAB p. 10 AJ.Casadevall - mars 04
  • 11. 2 Les “objets” de MATLAB 2.1 2.2 2.3 2.4 2.5 2.6 2.1 Objets et classes de MATLAB . . . . . . . . . . . . . . Valeurs litt´rales . . . . . . . . . . . . . . . . . . . . . . . e 2.2.1 Nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Tableaux de nombres . . . . . . . . . . . . . . . . . . . . 2.2.3 Caract`res et chaˆ e ınes de caract`res . . . . . . . . . . . . e 2.2.4 Cellules et tableaux de cellules - cell array . . . . . . Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Identificateurs . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Affectation . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3 Espace de travail . . . . . . . . . . . . . . . . . . . . . . Listes et vecteurs . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Construction de listes . . . . . . . . . . . . . . . . . . . 2.4.2 Construction de vecteurs . . . . . . . . . . . . . . . . . 2.4.3 Nombre d’´l´ments d’une liste ou d’un vecteur - length ee 2.4.4 Acc`s aux ´l´ments d’une liste ou d’un vecteur . . . . . e ee 2.4.5 Extraction de sous-listes ou de sous-vecteurs . . . . . . Tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.1 Construction de tableaux . . . . . . . . . . . . . . . . . 2.5.2 Acc`s aux ´l´ments d’un tableau . . . . . . . . . . . . . e ee 2.5.3 Lignes et colonnes d’un tableau . . . . . . . . . . . . . . ´e 2.5.4 El´ments diagonaux d’un tableau - diag . . . . . . . . . 2.5.5 Sous-tableaux et blocs - fonctions tril et triu . . . . 2.5.6 Tableaux particuliers . . . . . . . . . . . . . . . . . . . . Op´rations sur les ´l´ments d’un tableau . . . . . . . . e ee 2.6.1 Fonctions sum et prod . . . . . . . . . . . . . . . . . . . 2.6.2 Fonctions max et min . . . . . . . . . . . . . . . . . . . . 2.6.3 Fonction mean . . . . . . . . . . . . . . . . . . . . . . . 2.6.4 Fonction cov . . . . . . . . . . . . . . . . . . . . . . . . Objets et classes de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 12 12 12 13 14 14 15 15 15 18 19 19 20 21 22 22 22 23 24 24 25 26 26 26 27 27 28 MATLAB Un objet est une abstraction du monde r´el (pour MATLAB celui du calcul matriciel), qui cone tient des informations (pour une matrice, par exemple, le nombre de lignes, le nombre de colonnes, la valeur des coefficients) et sur laquelle on peut appliquer un certain nombre d’op´rations (pour les e
  • 12. CHAPITRE 2. LES “OBJETS” DE MATLAB matrices, la somme, le produit . . . ). Un objet est caract´ris´ par des valeurs, mais pas uniquement ; e e un objet poss`de en plus un certain comportement : un tableau Excel bien que structur´ en lignes e e et colonnes comme une matrice, n’est pas une matrice, ou encore un polynˆme de degr´ trois, n’est o e pas un vecteur de R4 . La famille des objets caract´ris´s par le mˆme type de structure et les mˆme fonctionnalit´s cone e e e e stitue une classe. La classe fondamentale de MATLAB est la classe double qui mod´lise les tableaux (double array) e de dimension un ou deux de nombres r´els ou complexes (conformes ` la norme IEEE), Les nome a bres r´els ou complexes ´tant consid´r´s eux-mˆmes comme des tableaux 1 × 1. Cette e e e e e classe permet ´galement de travailler mais de fa¸on moins naturelle avec des tableaux de dimension e c sup´rieure ` deux. e a Les classes suivantes, sont moins fr´quemment utilis´es : e e – La classe char mod´lise les chaˆ e ınes de caract`res (char array), un caract`re unique ´tant e e e une chaˆ de longueur un. ıne – La classe sparse mod´lise les matrices creuses (i.e. dont la plupart des ´l´ments sont nuls) e ee r´elles ou complexes. e e e e A partir de la version 5, MATLAB a propos´ des structures compl´mentaires souvent utilis´es dans les objets pr´d´finis de MATLAB. e e – La classe cell mod´lise les tableaux de “cellules” ou cell array qui sont des sortes de e tableaux dont les ´l´ments ou cellules (cells) peuvent ˆtre de nature diff´rente, nombres, ee e e tableaux, chaˆ ınes de caract`res de longueurs diff´rentes, . . . . e e – La classe struct mod´lise les tableaux de “structures”. Ces “structures” sont des structure de e donn´es assez semblables aux struct du C, dont les composants ou champs, sont accessibles e non pas par un ou plusieurs indices comme dans le cas des tableaux, mais par une notation point´e comme dans client.name, permettant au programmeur de d´finir ces propres objets e e et ses propres classes. !!! Remarque : MATLAB ne propose ni valeurs pr´d´finies true ou false ni classe pour mod´liser e e e les bool´ens ; false est repr´sent´ par la valeur 0, true est repr´sent´e par 1 ou par e e e e e extension, par toute valeur non nulle. 2.2 Valeurs litt´rales e Les valeurs litt´rales sont les valeurs qu’on peut directement taper au clavier et qui peuvent e ˆtre affect´es ` une variable. e e a 2.2.1 Nombres Les nombres r´els et entiers (MATLAB ne distingue pas entre r´els et entiers) sont ´crits sous e e e les formes d´cimales ou scientifiques usuelles : e 2, 3.214, 1.21E33. Les nombres complexes sont ´crits sous la forme a + bi, comme dans 1+2i. e 2.2.2 Tableaux de nombres Les tableaux de nombres r´els ou complexes de dimension un ou deux suivent la syntaxe suive ante : – un tableau est d´limit´ par des crochets ; e e p. 12 AJ.Casadevall - mars 04
  • 13. ´ 2.2. VALEURS LITTERALES – les ´l´ments sont entr´s ligne par ligne ; ee e – les ´l´ments appartenant a la mˆme ligne sont s´par´s par des espaces (ou par des virgules) ; ee ` e e e – les diff´rentes lignes doivent comporter le mˆme nombre d’´l´ments et sont s´par´es e e ee e e par des points-virgule. Exemple 2.2.1 : Les tableaux : 1 2 3 4 s’´crivent sous la forme [1 2 3 4 ] e 1 2 3 4 [1; 2; 3; 4 ] 1 2 0 0 0 2 3 1 0 0 2 2 [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 ans = 1 2 0 2 0 0 0 ; 0 2 3 1 ; 0 0 2 2 ] 0 3 2 0 1 2 Toutes les lignes doivent contenir le mˆme nombre d’´l´ments : e ee >> [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 qu’une seule colonne ; – liste ou vecteur-ligne un tableau de format (1, n) i.e. ne comportant qu’une seule ligne ; – tableau un tableau au sens commun du terme, c’est ` dire une structure organis´e en lignes a e et colonnes. 2.2.3 Caract`res et chaˆ e ınes de caract`res e On ´crit les caract`res et les chaˆ e e ınes de caract`res, entre apostrophes : ’a’, ’toto’. ml e consid`re les caract`res comme des chaˆ e e ınes de caract`res de longueur un et identifie chaˆ e ınes de caract`res et liste de caract`res. e e Exemple 2.2.2 : La liste de caract`res [’a’ ’b’ ’c’ ’d’ ’e’] est identique a la chaˆ e ` ınes de caract`res e [’abcde’] : AJ.Casadevall - mars 04 p.13
  • 14. CHAPITRE 2. LES “OBJETS” DE MATLAB >>[’a’ ’b’ ’c’ ’d’ ’e’] ans = abcde Mieux encore, ’abcde’ ; [’abc’ ’de’] est identique a ’abcde’ : ` >>[’abc’ ’de’] ans = abcde Cet exemple donne un id´e du rˆle des crochets [ ]. Les crochets sont le symbole de l’op´rateur e o e de concat´nation : e – concat´nation ”en ligne” lorsque le s´parateur est un espace ou une virgule ; e e – concat´nation ”en colonne” lorsque le s´parateur est un point-virgule comme dans les tableaux e e de nombres (il est alors n´cessaire que les listes de nombres ou de caract`res ainsi concat´n´es e e e e poss`dent le mˆme nombre d’´l´ments). e e ee Exemple 2.2.3 : La liste de caract`res e [’abcde’] : [’a’ ’b’ ’c’ ’d’ ’e’] est identique a la chaˆ ` ınes de caract`res e >>[’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 d’objets : nombre, chaˆ ıne de caract`res, tableau et mˆme tableau de cellules. Les tableaux de cellules permettent d’associer e e dans une mˆme structure des ´l´ments de nature tr`s diff´rente. La syntaxe des tableaux de cellules e ee e e est voisine de celle des tableaux usuels, les crochets ´tant remplac´s par des accolades. e e Exemple 2.2.4 : >> {’paul’ 4 ; ’vincent’ 7;’...’ 0} ans = ’paul’ [4] ’vincent’ [7] ’...’ [0] La manipulation des ces objets (sauf lorsqu’on on se limite a des composants qui sont des nombres ` ou des chaˆ ınes de caract`res) est un peu plus d´licate que celle des tableaux usuels et sera examin´e e e e dans un prochain chapitre. 2.3 Variables Une caract´ristique de MATLAB est que les variables n’ont pas a ˆtre d´clar´es, leur nature se e `e e e d´duisant automatiquement de l’objet qui leur est affect´ (cf. exemple 2.3.6 - section 2.3.3). Par e e abus de langage on dira “valeur d’une variable” alors qu’il faudrait parler de l’objet associ´ ` la ea variable. p. 14 AJ.Casadevall - mars 04
  • 15. 2.3. VARIABLES 2.3.1 Identificateurs Les r`gles de d´nomination des variables sont tr`s classiques : e e e – un identificateur d´bute par une lettre, suivie de lettres, de chiffres ou du caract`re soulign´ e e e ( ); – sa longueur est inf´rieure ou ´gale ` 31 caract`res ; e e a e – les majuscules sont distinctes des minuscules. Voici quelques identificateurs pr´d´finis : e e – ans : R´sultat de la derni`re ´valuation e e e – pi : 3,416.. – eps : inf{ ≥ 0 tels que 1 < 1 + } – inf : Infini (1/0) – NaN : “Not a Number” (0/0) √ – i,j : i et j repr´sentent tous deux le nombre imaginaire unit´ ( −1) e e – realmin : plus petit nombre r´el positif e – realmax : plus grand nombre r´el positif e 2.3.2 Affectation Le symbole d’affectation de valeur a une variable est le caract`re =. ` e Exemple 2.3.1 : >> a = [1 2 3 4 ] a = 1 2 3 4 >> a = ’abc’ a = abc L’exemple ci-dessus montre bien que dans MATLAB les variables ne sont ni d´clar´es ni typ´es. e e e 2.3.3 Espace de travail L’ensemble des variables et les objets qui leur sont associ´es constitue l’espace de travail ou e workspace de la session en cours. Le contenu de cet espace de travail va se modifier tout au long du d´roulement de la session et plusieurs commandes ou fonctions permettent de le g´rer de fa¸on e e c efficace. Les commande who et whos Ces commandes (le nom d’une commande est contrairement aux fonctions, suivi par la liste non parenth`s´e du ou des param`tres) donnent la liste des variables composant l’espace de travail. La ee e commande who donne la liste des variables pr´sentes dans l’espace de travail. La commande whos e retourne une information plus compl`te comportant pour chaque variable, la dimension du tableau e qui lui est associ´, la quantit´ de m´moire utilis´e et la classe ` laquelle il appartient. e e e e a Exemple 2.3.2 : On d´finit les variables a, b et c : e AJ.Casadevall - mars 04 p.15
  • 16. CHAPITRE 2. LES “OBJETS” DE MATLAB >> 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 l’affichage de la valeur des variables >> who Your variables are : a b c La commande whos donne l’information plus compl`te suivante : e >> 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 : e >> whos b c Name Size Bytes Class b 1x6 12 char array Grand total is 12 elements using 60 bytes c 2x3 48 double array leaving 14918960 bytes of memory free. La fonction size La fonction size retourne le couple (nl,nc) form´ du nombre de lignes nl et du nombre de e colonnes nc du tableau associ´ ` la variable donn´e comme comme argument. ea e Exemple 2.3.3 : On suppose que l’environnement de travail est constitu´ des trois variables a, b et c de l’exemple e pr´c´dent. La fonction size produit l’affichage suivant : e e >> size(a) ans = 1 1 >> size(b) ans = 1 6 Pour acc´der plus facilement au nombre de lignes et au nombre de colonnes, on peut affecter la e valeur retourn´e par size ` un tableau a deux ´l´ments [nl, nc] : e a ` ee >> size(c) >> [nl, nc] = size(c) nl = 2 nc = 3 Enfin size( ,1) et size( ,2) permettent l’acc`s direct au nombre de lignes et au nombre de e colonnes : p. 16 AJ.Casadevall - mars 04
  • 17. 2.3. VARIABLES >> 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 a e comme argument. Exemple 2.3.4 : Avec le mˆme espace de travail que dans l’exemple pr´c´dent, la fonction class produit l’affichage e e e suivant : >> ca = class(a) ca = double >> cb = class(b) cb = char Les commandes save, load et clear - fichiers.mat Ces commandes permettent d’intervenir directement sur l’environnement de travail. – save permet de sauver tout ou partie de l’espace de travail sous forme de fichiers binaires appel´s mat-files ou fichiers .mat : e – save : enregistre la totalit´ de l’espace de travail dans le fichier matlab.mat ; e – save nom de fichier : l’espace de travail est enregistr´ dans le fichier nom de fichier ; e – save nom de variable . . . nom de variable : enregistre les variables indiqu´es (et les e objets qui leurs sont associ´s) dans un fichier .mat qui porte le nom de la premi`re e e variable ; – save nom de fichier nom de variable . . . nom de variable : enregistre les variables dans le fichier dont le nom a ´t´ indiqu´. ee e – load permet d’ajouter le contenu d’un fichier .mat ` l’espace de travail actuel ; a – clear supprime une ou plusieurs variables (et les objets aux quelles elles font r´f´rence) de ee l’environnement de travail : – clear sans argument, supprime toutes les variables de l’espace de travail actuel ; – clear nom de variable . . . nom de variable : supprime les variables indiqu´es de l’espace e de travail. Exemple 2.3.5 : Cet exemple illustre les effets de save, load et clear. Tout d’abord on d´finit trois variables a, b e et t ; la fonction eye(n) cr´e la matrice identit´ d’ordre n. e e >> a = 1 ; b = 2.5 ; t = eye(3) t = 1 0 0 0 1 0 0 0 1 AJ.Casadevall - mars 04 p.17
  • 18. CHAPITRE 2. LES “OBJETS” DE MATLAB >> save a b Les variables a et b sont enregistr´es dans le fichier a.mat e >> clear a b Les variables a et b sont supprim´es comme le montre la ligne suivante : e >> a ??? Undefined function or variable ’a’ On ajoute le contenu de a.mat ` l’espace de travail actuel : a >> load a >> >> x = a + b x = 2 L’espace de travail est enregistr´ dans le fichier toto.mat, puis toutes les variables de l’espace de e travail sont supprim´es : e >> save toto >> >> clear >> t ??? Undefined function or variable ’t’ load(toto) permet de retrouver l’espace de travail initial : >> load toto >> >> t t = 1 0 0 0 1 0 0 0 1 Ce dernier exemple montre bien que le type d’une variable est induit par sa valeur : Exemple 2.3.6 : >> 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 2.4 Listes et vecteurs Les listes et les vecteurs sont des tableaux particuliers. Un vecteur est un tableau qui ne comporte qu’une seule colonne ; une liste (ou vecteur-ligne) est un tableau qui ne comporte qu’une seule ligne. MATLAB propose un certain nombre de fonctions qui simplifient l’usage des listes et des vecteurs. p. 18 AJ.Casadevall - mars 04
  • 19. 2.4. LISTES ET VECTEURS 2.4.1 Construction de listes Valeurs litt´rales du type liste e Ainsi que nous l’avons d´j` vu, on peut d´finir la valeur d’une liste en donnant la suite de ses ea e ´l´ments s´par´s par des espaces, la liste ´tant d´limit´e par des crochets : ee e e e e e Exemple 2.4.1 : >> l1 = [1 3 5 10 ] l1 = 1 3 5 10 Constructeur de listes e ee e L’expression vi : p : vf cr´e une liste dont les ´l´ments constituent une progression arithm´tique de valeur initiale vi , de pas p et dont tous les termes sont inf´rieurs ou ´gaux a vf . Lorsque la valeur e e ` du pas est omise (vi : vf ), la valeur du pas est fix´ par d´faut a un. e e ` Exemple 2.4.2 : >> l2 = 1 : 4 l2 = 1 2 3 4 (le pas par d´faut vaut 1) e >> l3 = 1 : 5.6 l3 = 1 2 3 4 5 (puisque 5.0000 + 1 est strictement sup´rieur ` 5.6) e a >> l4 = 1.5 : 0.3 : 2.5 l4 = 1.5000 1.8000 2.1000 2.5000 (puisque 2.4000 + 0.3 est strictement sup´rieur ` 2.5) e a Fonctions – La fonction linspace(vi , vf , n) cr´e une liste de n ´l´ments uniform´ment r´partis entre vi e ee e e vf −vi et vf : linspace(vi , vf , n) est ´quivalent a vi : n−1 : vf . e ` Exemple 2.4.3 : >> l4 = linspace(0,5, 2, 4) l4 = 0,5000 1.0000 1.5000 2.0000 – Dans la suite (section Tableaux), on d´couvrira d’autres fonctions qui permettent de construe ire des tableaux de format (m, n) quelconque. Ces fonctions permettent 2.4.2 Construction de vecteurs Valeurs litt´rales de type vecteur e On peut d´finir la valeur d’un vecteur en tapant entre deux crochets la suite de ses ´l´ments e ee s´par´es par des point-virgules comme on le voit dans l’exemple suivant : e e AJ.Casadevall - mars 04 p.19
  • 20. CHAPITRE 2. LES “OBJETS” DE MATLAB Exemple 2.4.4 : >>v1 = [1 ; 3 ; 5 ; 10 ] v1 = 1 3 5 10 Transposition La transpos´e d’une liste est un vecteur. On peut donc utiliser les expressions et les fonctions e d´finies pour les listes en les transposant ensuite avec l’op´rateur ’ (ou .’ pour les listes de nombres e e complexes). 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 remarquera que les parenth`ses sont n´cessaires pour d´limiter le constructeur de liste. e e e 2.4.3 Nombre d’´l´ments d’une liste ou d’un vecteur - length ee La fonction size avec pour argument 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 d’une liste est bien ´videmment un. La mˆme remarque vaut pour le nombre de colonnes d’un e e vecteur. Aussi, pour les listes et les vecteurs on utilise de pr´f´rence la fonction length qui retourne ee le nombre d’´l´ments ou longueur de la liste ou du vecteur. ee Exemple 2.4.6 : >> l = [1 2 3 4] ; length(l) ans = 4 >> v = [5 6 7 8 9]’ ; length(v) ans = 5 !!! Remarque : L’exemple pr´c´dent montre que l’on peut ´crire sur la mˆme ligne plusieurs expressions ` la e e e e a condition de les s´parer par une virgule ou un point-virgule. La diff´rence entre ces deux s´parateurs e e e est que le r´sultat de l’´valuation d’une expression suivie d’un point-virgule n’est pas e e affich´. e p. 20 AJ.Casadevall - mars 04
  • 21. 2.4. LISTES ET VECTEURS Cette notion de longueur synonyme de nombre d’´l´ments ne doit pas ˆtre confondue avec la notion ee e math´matique de norme vectorielle. Les fonctions suivantes permettent de calculer les normes e usuelles d’un vecteur (ou d’un vecteur-ligne) de Rn : p |vk |1/p . – norm(v,p) = k=1 – norm(v) = norm(v,2) – norm(v,inf) = max |vk |. k Exemple 2.4.7 : >> l = [1 1 1 1] ; v =l’ ; ans = 2 >> norm(l) ans = 2 2.4.4 norm(v) Acc`s aux ´l´ments d’une liste ou d’un vecteur e ee 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 consid´r´ (1 ≤ k ≤ length(s)). On acc`de ` l’´l´ment d’indice k de la liste ou ee e a ee du vecteur s par s(k), le premier ´l´ment de la liste ou du vecteur ´tant indic´ par 1. ee e e Exemple 2.4.8 : >> s = [1 3 5] ; s(1) ans = 1 >> s(3) ans = 5 L’acc`s en lecture ` un ´l´ment d’indice n´gatif ou dont la valeur est strictement e a ee e sup´rieure ` la longueur de la liste (ou du vecteur), conduit ` une erreur : e a a Exemple 2.4.9 : Pour la mˆme liste s qu’` l’exemple pr´c´dent : e a e e >> s(4) ??? Index exceeds matrix dimensions. Par contre, il est possible d’affecter une valeur ` un ´l´ment d’une liste ou d’un vecteur a ee dont l’indice d´passe la longueur de la liste ou du vecteur. Comme le montre l’exemple e suivant, les ´l´ments dont l’indice est compris entre la longueur de la la liste (ou du vecteur) et ee l’indice donn´ sont affect´s de la valeur 0. La longueur de la liste (ou du vecteur) est alors modifi´e e e e en cons´quence. e Exemple 2.4.10 : Toujours avec la liste s de l’exemple pr´c´dent : e e >> s = [1 3 5] ; length(s) ans = 3 >>s(6) = 6 ; s s = AJ.Casadevall - mars 04 p.21
  • 22. CHAPITRE 2. LES “OBJETS” DE MATLAB 1 3 >> length(s) ans = 6 2.4.5 5 0 0 6 Extraction de sous-listes ou de sous-vecteurs Soient s une liste (ou un vecteur) non-vide et l une liste d’entiers dont la valeur est comprise entre 1 et la longueur length(s) de la liste (ou du vecteur). Alors s(l) est la liste (ou le vecteur) form´ par les ´l´ments de s dont l’indice appartient a l. e ee ` Exemple 2.4.11 : >>s = [1 3 5 0 0 6] ; l = [1 3 5] ; s1 = s(l) s1 = 1 5 0 2.5 Tableaux 2.5.1 Construction de tableaux Valeurs litt´rales de type tableau e On a d´j` vu que pour d´finir la valeur d’un tableau (sauf pour les tableaux d’ordre 1), il suffit ea e de concat´ner “en colonne” (s´parateur ;) des listes de nombres de mˆme longueur : e e e Exemple 2.5.1 : Le tableau 1 0 0 2 2 0 0 3 2 0 1 1 est d´fini par : e >>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 - [ ] L’op´rateur [ ] permet la concat´nation de tableaux : e e – Si les tableaux tk poss`dent le mˆme nombre de lignes l’expression [t1 , t2 , · · · , tp ] cr´e un e e e tableau : – qui a le mˆme nombre de lignes que les tableaux composants ; e – dont le nombre de colonnes est la somme des nombres de colonnes de chacun des tableaux composants ; – qui est obtenu en concat´nant “` droite” les tableaux composants. e a On peut dans l’expression ci-dessus remplacer les virgules par des espaces. – Si les tableaux tk ont le mˆme nombre de colonnes l’expression [t1 ; t2 ; · · · ; tp ] cr´e un e e tableau : – qui a le mˆme nombre de colonnes que les tableaux composants ; e – dont le nombre de lignes est la somme des nombres de lignes de chacun des tableaux composants ; p. 22 AJ.Casadevall - mars 04
  • 23. 2.5. TABLEAUX – qui est obtenu en concat´nant “les uns sous les autres” les tableaux composants. e Exemple 2.5.2 : >>t1 = [1 2 ; 2 3] t1 = 1 2 2 3 >>t2 = [3 4 ; 6 7] t2 = 3 4 6 7 >> t = [t1 , t2] % ou [t1 ts = 1 2 3 4 2 3 6 7 >> t = [t1 ; t2] t = 1 2 2 3 3 4 6 7 t2] On peut remarquer que l’´criture d’une valeur litt´rale tableau suit en fait ce type de syntaxe. e e 2.5.2 Acc`s aux ´l´ments d’un tableau e ee Soit t un tableau, soit l un entier compris respectivement entre 1 et le nombre de lignes de t (size(t,1)), et soit k d’un entier compris entre 1 et le nombre de colonnes de t (size(t,1)), t(l,k) d´signe alors l’´l´ment de la ligne l et de la colonne k du tableau t : e ee Exemple 2.5.3 : >>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 >> x = t(2, 3) x = 3 L’acc`s en lecture ` un ´l´ment dont les indices seraient n´gatifs ou dont la valeur serait strictement e a ee e sup´rieure au nombre de lignes ou au nombre de colonnes, conduit a une erreur : e ` Exemple 2.5.4 : >>x = t(1,5) ??? Index exceeds matrix dimensions Par contre, il est possible d’affecter une valeur ` un ´l´ment d’un tableau dont les indice a ee d´passent le nombre de ligne pour le premier indice, le nombre de colonnes pour le second. Comme e le montre l’exemple suivant, les ´l´ments du dont les indices sont compris entre le nombre de lignes ee ou le nombre de colonnes et ceux sp´cifi´, prennent la valeur 0. e e AJ.Casadevall - mars 04 p.23
  • 24. CHAPITRE 2. LES “OBJETS” DE MATLAB 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 d’un tableau Soient t un tableau non-vide et l un entier compris entre 1 et la nombre de lignes du tableau t. Alors t(l, :) d´signe la ligne l de t. De mˆme, si k est un entier compris entre 1 et le nombre e e de colonnes de t, t( :, k) d´signe la colonne k de t. e Exemple 2.5.6 : >> t 1 2 0 2 0 0 >> x = t(2, :) x = 0 2 >> y = t(:, 3) y = 0 3 2 2.5.4 0 3 2 0 1 1 2 0 0 3 1 0 ´e El´ments diagonaux d’un tableau - diag Soit t un tableau non-vide, diag(t) retourne le vecteur form´ des ´l´ments de la diagonale e ee principale de t (les ´l´ments de la forme t(k, k)). v = diag(t, k) o` k est un entier compris ee u entre-size(1, t) et size(2, t), retourne le vecteur form´ des ´l´ment de la k ieme diagonale de e ee t, la diagonale d’indice z´ro ´tant la diagonale principale, les valeurs positives correspondant aux e e sur-diagonales, les valeurs n´gatives aux sous-diagonales. e Exemple 2.5.7 : Avec le mˆme tableau t que dans l’exemple pr´c´dent : e e e >> t 1 2 0 0 2 3 0 0 2 >> v = diag(t) v = 1 2 2 >> v = diag(t,1) p. 24 0 1 1 2 0 0 AJ.Casadevall - mars 04
  • 25. 2.5. TABLEAUX v = 2 3 1 >> v = diag(t,-1) v = 0 0 2.5.5 Sous-tableaux et blocs - fonctions tril et triu Soient t un tableau non-vide, l une liste d’entiers compris entre 1 et le nombre de lignes de t, et k une liste d’entiers compris entre 1 et le nombre de colonnes de t. Alors t(l, k) est le tableau form´ par les ´l´ments de t dont l’indice de ligne appartient a l et l’indice de colonne appartient e ee ` a ` k. Exemple 2.5.8 : >> t 1 2 3 2 2 3 3 0 2 >> l = [1 2]; k = [1 3 >> t(l, k) ans = 1 3 5 2 3 0 4 1 1 5]; 5 0 0 Les fonctions tril et triu extraient respectivement les termes situ´s sur et au-dessous de la k ieme e diagonale, et les termes situ´s sur et au-dessus de la k ieme diagonale. e Exemple 2.5.9 : Avec le mˆme tableau que dans l’exemple ci-dessus : e >> tril(t,1) ans = 1 2 2 2 3 0 >> triu(t,-1) ans = 1 2 2 2 0 0 0 3 2 0 0 1 0 0 0 3 3 2 4 1 1 5 0 0 tril(t,0) s’´crit aussi tril(t), de mˆme, triu(t,0) s’´crit aussi triu(t). e e e AJ.Casadevall - mars 04 p.25
  • 26. CHAPITRE 2. LES “OBJETS” DE MATLAB 2.5.6 Tableaux particuliers Les fonction ci-dessous permettent de construire des tableaux correspondant aux matrices usuelles : identit´, matrice nulle, ainsi qu’` des matrices-test tr`s utiles pour valider des algorithmes e a e d’analyse matricielle (voir aussi la fonction gallery) . Fonction diag Argument un vecteur ou une liste s vander un vecteur ou une liste s eye hilb invhilb magic ones pascal rand zeros wilkinson un entier n un entier n un entiers n un entier n un entier n un entier n un entier n un entier n un entier n R´sultat e matrice diagonale dont la diagonale est la liste ou le vecteur s matrice de Vandermonde d’ordre n = length(s) engendr´e par s e matrice identit´ d’ordre n e matrice de Hilbert d’ordre n : hi,j = 1/(i + j − 1) inverse de la matrice de Hilbert d’ordre n carr´ magique d’ordre n e matrice A carr´e d’ordre n telle que ai,j = 1 e matrice depascal d’ordre n matrice al´atoire carr´e d’ordre n e e matrice nulle d’ordre n matrice de Wilkinson d’ordre n Les fonctions eye, ones et zeros peuvent ˆtre appel´es avec deux arguments entiers n et m. Le e e r´sultat est alors une matrice de format n × m form´e des n premi`res lignes et des m premi`res e e e e colonnes de la matrice carr´e du mˆme type d’ordre max(n, m). e e 2.6 Op´rations sur les ´l´ments d’un tableau e ee Les fonctions pr´sent´es ci-dessous effectuent des op´rations arithm´tiques it´rativement sur les e e e e e ´l´ments d’une liste ou d’un vecteur. Appliqu´es ` un tableau, elles effectuent ces mˆmes op´rations ee e a e e sur les colonnes du tableau (sauf pour cov). Ce sont des fonctions extrˆmement efficaces (voir plus e loin). 2.6.1 Fonctions sum et prod – Appliqu´e ` une liste ou un vecteur, la fonction sum (respectivement prod) calcule la somme e a (respectivement le produit) des ´l´ments la liste ou du vecteur. ee – Appliqu´e ` un tableau la fonction sum (respectivement prod) retourne une liste dont chacun e a des ´l´ments est la somme (respectivement le produit) des ´l´ments de chaque colonne. ee ee 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 = prod(t) p = p. 26 AJ.Casadevall - mars 04
  • 27. ´ ´ ´ 2.6. OPERATIONS SUR LES ELEMENTS D’UN TABLEAU 36 6 1 >> s = sum(t) s = 14 6 3 Pour obtenir la valeur de l’´l´ment maximal du tableau : ee >> m = max(max(t)) m = 9 2.6.2 Fonctions max et min – Appliqu´e ` une liste ou un vecteur, la fonction max (respectivement min) d´termine le e a e plus grand ´l´ment (respectivement le plus petit ´l´ment) de la liste ou du vecteur et ee ee ´ventuellement la position de cet ´l´ment dans la liste ou le vecteur. e ee – Appliqu´e ` un tableau la fonction max (respectivement min) retourne la liste des plus grands e a (respectivement plus petit ´l´ments) de chaque colonne. ee 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 >> 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 l’´l´ment maximal du tableau : ee >> m = max(max(t)) m = 9 2.6.3 Fonction mean – Appliqu´e ` une liste ou un vecteur, la fonction mean d´termine la moyenne des ´l´ment de e a e ee la liste ou du vecteur. – Appliqu´e ` un tableau la fonction mean retourne la liste des moyennes des ´l´ments de chaque e a ee colonne. AJ.Casadevall - mars 04 p.27
  • 28. CHAPITRE 2. LES “OBJETS” DE MATLAB Exemple 2.6.3 : >> s = [5 2 3 1 7] ; m = mean(s) m = 3.6000 >>t = pascal(3) , m = mean(t) t = 1 1 1 1 2 3 1 3 6 m = 1.0000 2.0000 3.3333 Pour obtenir la moyenne des ´l´ments du tableau : ee >> m = mean(meanx(t)) m = 2.1111 2.6.4 Fonction cov – Appliqu´e ` une liste ou un vecteur, cov d´termine la variance des ´l´ment de la liste ou du e a e ee vecteur. – Appliqu´e ` un tableau o` chaque ligne repr´sente une observation et o` chaque colonne e a u e u correspond a une variable, la fonction cov retourne la matrice de covariance des ´l´ments du ` ee tableau. Exemple 2.6.4 : Avec le mˆmes objets que dans l’exemple pr´c´dent : e e e >> c = cov(s) c = 5.8000 >>c = cov(t) c = 0 0 0 1.0000 0 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 p. 28 AJ.Casadevall - mars 04
  • 29. 3 Expressions, scripts et m-files 3.1 3.2 Introduction . . . . . . . . . . . . . . . . . . . . . Op´rations de MATLAB . . . . . . . . . . . . . . e 3.2.1 Op´rateurs . . . . . . . . . . . . . . . . . . . . . e 3.2.2 Op´rations sur les tableaux . . . . . . . . . . . . e 3.2.3 Op´rations bool´ennes . . . . . . . . . . . . . . . e e ´ 3.2.4 Evaluation des expressions - variable ans . . . . 3.3 Scripts et m-files . . . . . . . . . . . . . . . . . . . 3.3.1 Scripts . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2 Cr´ation de m-files . . . . . . . . . . . . . . . . . e 3.3.3 Ex´cution d’un m-file . . . . . . . . . . . . . . . e ´e 3.3.4 El´ments d’´criture de m-files . . . . . . . . . . . e 3.4 Structures algorithmiques . . . . . . . . . . . . . 3.4.1 S´lection - if . . . end et if . . . else . . . end . e 3.4.2 R´p´tition - for . . . end . . . . . . . . . . . . . e e 3.4.3 It´ration conditionnelle - while . . . end . . . . . e 3.4.4 Construction switch . . . case . . . . . . . . . . 3.5 Fonctions et m-files . . . . . . . . . . . . . . . . . 3.5.1 Syntaxe . . . . . . . . . . . . . . . . . . . . . . . 3.5.2 R`gles et propri´t´s . . . . . . . . . . . . . . . . e ee 3.5.3 Traitement des erreurs - try . . . catch . . . . . 3.5.4 Optimisation des calculs . . . . . . . . . . . . . . 3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 30 30 30 32 33 33 33 34 34 34 36 36 37 39 39 40 41 41 42 42 Introduction Un des avantages de MATLAB est de proposer une syntaxe tr`s simple pour traduire les calculs e matriciels. Les op´rateurs sont repr´sent´s par les mˆmes symboles (` une ou deux exceptions pr´s) e e e e a e que ceux utilis´s commun´ment en alg`bre lin´aire. Mieux, ils op`rent directement sur les tableaux e e e e e (par exemple, il n’est pas n´cessaire d’´crire des boucles pour effectuer la somme ou ou le produit e e de deux matrices).
  • 30. CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES 3.2 3.2.1 Op´rations de e MATLAB Op´rateurs e Class´s par ordre de priorit´ d´croissante, les op´rateurs utilis´s par MATLAB sont les suivants : e e e e e – exponentiation et transposition – l’exponentiation ^ et .^ – la conjugaison ’ et la transposition .’ – op´rateurs multiplicatifs e – les produits * et .*, – les divisions a droite /, ./ et ` gauche , . ` a – op´rateurs additifs et de n´gation e e – les op´rateurs additifs unaire et binaires + et e – la n´gation ~ e – op´rateurs bool´ens avec par ordre de priorit´ : e e e – les op´rateurs de comparaison e – <, >, <= et >= – ´galit´ ==, non ´galit´ ~= e e e e – puis les op´rateurs logiques e – et logique & – ou logique | A propos des op´rateurs bool´ens, il est rappel´ qu’il n’existe pas dans MATLAB de vrai type e e e bool´en, que false est repr´sent´ par la valeur 0 et que true est repr´sent´e par la valeur 1 et par e e e e e extension par toute valeur non nulle, ce qui est confirm´ par l’´valuation des expressions suivantes : e e Exemple 3.2.1 : >> 2&3 ans = 1 >> 2&0 ans = 0 >> 2|3 ans = 1 >> ~3 ans = 0 >> 2==3 ans = 0 % l’´galit´ est bien celle des nombres et non celle des pr´dicats ! e e e 3.2.2 Op´rations sur les tableaux e Losqu’ils sont appliqu´s ` des nombres (ou ` des expressions bool´ennes) dont la valeur est e a a e repr´sent´e par un tableau de dimensions (1 × 1), le r´sultat fourni par ces op´rateurs est le r´sultat e e e e e usuel. Losqu’ils sont appliqu´s ` des listes, des vecteurs ou plus g´n´ralement des tableaux, le e a e e r´sultat est bien sˆr quelque peu diff´rent. Dans le tableau suivant, A et B sont des tableaux et c e u e est un nombre : p. 30 AJ.Casadevall - mars 04
  • 31. ´ 3.2. OPERATIONS DE MATLAB Op´rateur e A+B A+c=c+A A−B A−c c−A A∗B A∗c=c∗A A. ∗ B Aˆn (n > 0) Aˆn (n < 0) A.ˆB A A. B/A AB A./B A.B A/c R´sultat e tableau dont les ´l´ments sont d´finis par aij + bij ee e tableau dont les ´l´ments sont d´finis par aij + c ee e tableau dont les ´l´ments ont pour valeur aij − bij ee tableau dont les ´l´ments ont pour valeur aij − c ee tableau dont les ´l´ments ont pour valeur c − aij ee tableau r´sultant du produit matriciel de A par B e tableau dont les ´l´ments ont pour valeur c ∗ aij ee tableau dont les ´l´ments ont pour valeur aij ∗ bij ee A ∗ A ∗ · · · ∗ A (n fois) −1 ∗ A−1 ∗ · · · ∗ A−1 (|n| fois) A tableau dont les ´l´ments ont pour valeur (aij )bij ee transpos´-conjugu´e du tableau A, aij = aji e e transpos´ du tableau A, aij = aji e si tous les ´l´ments de A sont r´els, A. = A ee e tableau X solution de l’´quation matricielle XA = B e si A est inversible X = BA−1 tableau X solution de l’´quation matricielle AX = B e si A est inversible X = A−1 B tableau dont les ´l´ments ont pour valeur aij /bij ee tableau dont les ´l´ments ont pour valeur bij /aij ee A.B = B./A tableau dont les ´l´ments ont pour valeur aij /c ee Conditions A et B mˆme format e A et B mˆme format e nb col. A = nb lign. B A et B mˆme format e A carr´e e A inversible A et B mˆme format e nb col. A = nb col. B nb lign. A = nb lign. B A et B mˆme format e A et B mˆme format e On notera qu’` certains op´rateurs est associ´ un op´rateur point´, * et .* par exemple. a e e e e De fa¸on g´n´rale, l’op´rateur point´ correspond a une op´ration semblable a celle repr´sent´e par c e e e e ` e ` e e l’op´rateur non point´, mais appliqu´e non pas ”matriciellement” mais “terme ` terme” : * est e e e a l’op´rateur matriciel alors que .* est l’op´rateur du produit “terme a terme”. e e ` Exemple 3.2.2 : On cr´e deux matrices a et b. La fonction ones(n) cr´e une matrice carr´e d’ordre 2 dont tous les e e e termes sont ´gaux a 1 ; la fonction eye(2) cr´e la matrice identit´ d’ordre 2. e ` e e >> a a = 1 1 >> b b = 2 1 >> c c = 4 2 >> d d = = [1 2;1 0] 2 0 = ones(2)+eye(2) 1 2 = a*b 5 1 = a.*b AJ.Casadevall - mars 04 p.31
  • 32. CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES 2 1 3.2.3 2 0 Op´rations bool´ennes e e Dans la suite, “tableau bool´en” d´signera un tableau dont les ´l´ments ont pour valeur 0 e e ee ou 1, 0 repr´sentant false et 1( ou par extension par toute valeur non nulle), repr´sentant true. Les e e op´rateurs bool´ens sont peut-ˆtre ceux dont le comportement peut apparaˆ le plus d´routant e e e ıtre e parce qu’il fonctionnent “terme a terme ” : ` Exemple 3.2.3 : Avec les variables a et b d´finies dans l’exemple pr´c´dent on obtient : e e e >> a , b a = 1 2 1 0 b = 2 1 1 2 >> a == b ans = 0 0 1 0 Dans l’expression a == 1 == 3 → f alse → 0, 1 == 1 → true → 1, Il en est de mˆme pour e b la comparaison porte sur les ´l´ments homologues de a et b : ee 2 == 1 → f alse → 0 0 == 2 → f alse → 0 a > b: >> a > b ans = 0 1 1 0 Dans l’exemple suivant, on ´value a & b, et a | b. Les valeurs des ´l´ments des matrice a et b sont e ee converties, avant l’´valuation, en valeurs bool´ennes avec la convention habituelle : 0 vaut false, e e toute valeur non-nulle vaut true : >> a & b ans = 1 1 1 0 >> a | b ans = 1 1 1 1 En r´sum´, si a et b sont des tableaux de mˆme format et si op d´signe un des op´rateurs e e e e e bool´ens <, >, <=, >=, & et | , le r´sultat de a op b est d´fini par : e e e Op´rateur e R´sultat e Condition a op b “tableau bool´en” dont les ´l´ments sont d´finis par aij op bij mˆme format e ee e e p. 32 AJ.Casadevall - mars 04
  • 33. 3.3. SCRIPTS ET M-FILES 3.2.4 ´ Evaluation des expressions - variable ans Les expressions sont ´valu´es de la gauche vers la droite, suivant l’ordre de priorit´ indiqu´ plus e e e e haut. Pour des op´rateurs de mˆme ordre de priorit´, la r`gle est comme en math´matiques, celle e e e e e de l’associativit´ ` gauche. ea La frappe de <entrer> d´clenche l’´valuation. La valeur de expression ´valu´e est affich´e sous la e e e e e ligne courante et est en l’absence d’affectation explicite, affect´e par d´faut ` une variable-syst`me e e a e g´n´rique d´sign´e par ans pour answer. e e e e Exemple 3.2.4 : >> a = .5 a = 0.5000 >> a*pi ans = 1.5708 >> b = 2 b = 2 >> ans ans = 1.5708 La derni`re ´valuation n’a pas modifi´ la valeur de ans puisqu’elle comportait une affectation. e e e 3.3 3.3.1 Scripts et m-files Scripts Un script est une s´quence d’expressions ou de commandes. Un script peut se d´velopper sur e e une ou plusieurs lignes. Les diff´rentes expressions ou commandes doivent ˆtre s´par´es par une e e e e virgule, un point-virgule ou par le symbole de saut de ligne constitu´ de trois points . . . suivis e de <entrer> (le rˆle des trois points et d’inhiber le m´canisme d’´valuation lors d’un passage o e e a ` la ligne). Comme pour une expression unique, la frappe de <entrer> d´clenche le processus e d’´valuation. Les expressions sont ´valu´es dans leur ordre d’´criture. Seule la valeur des expression e e e e suivie d’une virgule ou d’un saut de ligne est affich´e, celle des expressions suivies d’un point-virgule, e ne l’est 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 AJ.Casadevall - mars 04 p.33
  • 34. CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES ´ Ecrire un script est assez fastidieux, aussi MATLAB permet d’enregistrer le texte d’un script sous forme de fichier de texte appel´s m-files, en raison de leur extension. e 3.3.2 Cr´ation de m-files e Les fichiers .mat ou mat-files que nous avons ´voqu´s dans le chapitre pr´c´dant sont des e e e e fichiers binaires qui permettent d’enregistrer des valeurs. Les m-files permettent d’enregistrer les scripts sous forme de fichiers-texte et servent en particulier ` d´finir de nouvelles fonctions (une a e grande partie des fonctions pr´d´finies de MATLAB sont stock´es sous forme de m-files dans la e e e toolbox matlab. Les m-files peuvent ˆtre cr´es par n’importe quel ´diteur. Dans les versions r´centes de MATLAB e e e e il existe un petit ´diteur int´gr´ que l’on peut appeler a partir du menu file ou a partir de la barre e e e ` ` de menu de la fenˆtre de commande. e Exemple 3.3.2 : Dans la fenˆtre de l’´diteur tapez les lignes suivantes : e e % a b c script - essai . m = .5; = pi; = a * b Sauvez le fichier dans le r´pertoire de travail sous le nom de essai.m. e !!! Remarque : On peux utiliser les techniques du copier/coller pour transf´rer des parties de script de la fenˆtre e e e e de commande de MATLAB vers l’´diteur et r´ciproquement. Il faut prendre garde au fait que dans e la fenˆtre de commande de MATLAB les sauts de ligne lancent l’´valuation des expressions ; il faut e alors utiliser . . . <entrer> ` la place des sauts de ligne. a 3.3.3 Ex´cution d’un m-file e Pour ex´cuter le script contenu dans un m-file et Il suffit de taper le nom de ce m file dans la e fenˆtre de commande suivi de < entrer > e Exemple 3.3.3 : Pour ex´cuter le script pr´c´dent, on tape essai et on obtient : e e e >> essai c = 1.5708 La pr´sence d’un point-virgule ; ` la fin des deux premi`res lignes du script a neutralis´ l’affichage e a e e des valeurs de a et b. 3.3.4 ´e El´ments d’´criture de m-files e Commentaires Les lignes de commentaires sont pr´c´d´es du caract`re %. e e e e p. 34 AJ.Casadevall - mars 04
  • 35. 3.3. SCRIPTS ET M-FILES Entr´es - input et menu e – La fonction input permet la saisie d’une valeur depuis le clavier. Plus pr´cis´ment : e e – Pour les valeurs num´riques, n = input(’message’) affiche message et affecte ` la e a variable n la valeur num´rique entr´e au clavier. e e – Pour les chaˆ ınes de caract`res, str = input(’message’,’s’) affiche message et affecte ` e a la variable str la valeur entr´e au clavier consid´r´e alors comme une chaˆ de caract`res. e ee ıne e Exemple 3.3.4 : >> n = input(’Entrez la valeur de n ’) >> nom = input(’Entrez votre nom ’,’s’) – La fonction menu g´n`re un menu dans lequel l’utilisateur doit choisir une option : e e result = menu(’titre’, ’opt1’, ’opt2’, . . . , ’optn’) La valeur retourn´e dans la variable result est ´gale au num´ro de l’option choisie. menu est e e e souvent utilis´ en relation avec la structure algorithmique switch-case. e Exemple 3.3.5 : result = menu(’Traitement’, ’Gauss’, ’Gauss-Jordan’, ’Quitter’) Affiche la fenˆtre graphique suivante : e Si l’utilisateur s´lectionne Gauss, la variable result prend la valeur 1, la valeur 2 s’il e s´lectionne Gauss-Jordan et la valeur 3 pour Quitter. e Affichages - disp - num2str - format – La valeur d’une variable est tr`s simplement affich´e en faisant ´valuer une expression r´duite e e e e a ` la variable elle-mˆme. e Exemple 3.3.6 : >> a = [1 2] ; >> a a = 1 2 – La fonction num2str(x) o` x est un nombre, retourne la valeur litt´rale de ce nombre. u e Exemple 3.3.7 : >> s = [’la valeur de pi est : ’ num2str(pi)] ; >> s s = la valeur de pi est : 3.1416 AJ.Casadevall - mars 04 p.35
  • 36. CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES – La commande disp(t) o` t est une chaˆ de caract`res ou un tableau, affiche la valeur u ıne e de cette chaˆ de caract`re ou de ce tableau sans faire r´f´rence au nom de la variable. ıne e ee Cette commande sera souvent utilis´e avec num2str pour afficher les valeurs des expressions e num´riques. e Exemple 3.3.8 : >> a = [1 2;3 4] ; >> disp(a) 1 2 3 4 >> disp([ ’ordre de la matrice a : ’ ordre de la matrice a : 2 num2str(size(a,1)) ] ); – La commande format permet de choisir entre plusieurs modes d’affichage (sans interf´rer avec le type des valeurs num´riques affich´es qui est toujours le type double) : e e e Commande Affichage Exemple format short d´cimal ` 5 chiffres e a 31.416 format short e scientifique a 5 chiffres ` 31.416e+01 format long d´cimal ` 16 chiffres e a 31.4159265358979 format long e scientifique a 16 chiffres ` 314159265358979e+01 format hex hexad´cimal e format bank virgule fixe a deux d´cimales ` e 31.41 format rat fractionnaire 3550/113 format + utilise les symboles +, - et espace pour + afficher les nombres positifs n´gatifs et nuls e Pause La commande pause permet de m´nager une pause dans l’ex´cution d’un m file : e e – sans argument pause suspend l’ex´cution jusqu’` ce que l’utilisateur presse sur une touche. e a – pause(n ) suspend l’ex´cution pendant n secondes. e Interaction avec le syst`me d’exploitation e MATLAB poss`de des fonctions et des commandes qui permettent d’obtenir la liste des e r´pertoires accessibles ou matlabpath, la liste des fichiers d’un r´pertoire donn´, les ´diter et e e e e ´ventuellement les effacer : e – addpath path : ajoute path ` la liste matlabpath des r´pertoires accessibles par MATLAB ; a e – p = pwd : retourne dans p le chemin d’acc`s au r´pertoire de travail actuel ; e e – cd path : change le r´pertoire de travail pour celui sp´cifi´ par path ; e e e – d = dir ou d = ls : retourne dans d la liste des fichiers du r´pertoire de travail ; e – what : retourne la liste des m-files et des mat-files du r´pertoire de travail ; e – edit test : ´dite le m-file test.m, identique a Open dans le menu File ; e ` – delete test.m : efface le m-file test.m ; – type test : affiche le le m-file test.m dans la fenˆtre de commande. e 3.4 3.4.1 Structures algorithmiques S´lection - if . . . end et if . . . else . . . end e Syntaxe – if (expression bool´enne) / script / end e p. 36 AJ.Casadevall - mars 04
  • 37. 3.4. STRUCTURES ALGORITHMIQUES – if (expression bool´enne) / script si vrai / else / script si faux / end e Le symbole / remplace l’un des symboles s´parateur : virgule (,), point-virgule ( ;) ou saut de ligne. e L’usage du point-virgule est vivement conseill´ pour ´viter les affichages souvent redondants. Dans e e e e d’anciennes versions de MATLAB et en mode commande, il est indispensable de faire pr´c´der < enter > par une s´quence de trois points ( . . . ) pour passer a la ligne sans d´clancher le e ` e processus d’´valuation. e Exemple 3.4.1 : >> m = -1; >> if (m<0) a =-m, a = 1 end Cette autre pr´sentation est plus lisible : e >> f (m<0) a = -m ; end Utilisation de elseif Lorsqu’il y a plus de deux alternatives, on peut utiliser la structure suivante : if (exp1) script1 (´valu´ si exp 1 est vraie) e e elseif (exp2) script2 (´valu´ si exp 2 est vraie) e e elseif (exp3) ... else script (´valu´ si aucune des expressions exp1, exp2, . . . n’est vraie) e e end 3.4.2 R´p´tition - for . . . end e e Syntaxe for (k = liste) / script / end Le symbole / repr´sente comme dans le paragraphe pr´c´dent un symbole s´parateur virgule (,), e e e e point-virgule ( ;) ou saut de ligne. D’autre part, il est pr´f´rable de ne pas utiliser i et j comme ee indices puisque dans MATLAB i et j sont des variables pr´d´finies dont la valeur est ( − 1). e e 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 AJ.Casadevall - mars 04 2.2361 p.37
  • 38. CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES cette autre pr´sentation plus lisible, doit ˆtre privil´gi´e : e e e e >> for (k = 1 : 5) x = [x, sqrt(k)] ; end Boucles for emboˆ es ıt´ 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 Il est possible de sortir directement d’une boucle for ou while en utilisant la commande break : Exemple 3.4.4 : >> EPS = 1; >> for (n = 1 : 100) EPS = EPS / 2; If ((EPS + 1) <= 1) EPS = EPS*2 break end end EPS = 2.2204e-16 >> n n = 52 e Le test (EPS + 1) <= 1 provoque la sortie de la boucle for ` la 52i`me it´ration. a e Dans l’exemple suivant, le tableau A est celui de l’exemple pr´c´dent. e e >> for (l = 1 : 3) for (k = 1 : 3) if (A(l,k) == 10) [l,k] break end end end ans = p. 38 AJ.Casadevall - mars 04
  • 39. 3.4. STRUCTURES ALGORITHMIQUES 1 3 ans = 3 1 La double boucle se s’est pas arrˆt´ apr`s que le test A(l,k) == 10 ait ´t´ valid´ lorsque l=1 et ee e ee e k=3. En effet break provoque la sortie de la boucle la plus proche, ici la boucle for interne. Une version corrig´e du test pr´c´dent pourrait ˆtre la suivante avec deux break pour pouvoir sortir e e e e 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.4.3 3 It´ration conditionnelle - while . . . end e Syntaxe while (expression bool´enne) / script / end e Le symbole / repr´sente comme dans les d´finitions pr´c´dents, un s´parateur : virgule (,), pointe e e e e virgule ( ;) ou saut de ligne. D’autre part, il faut ´viter l’utilisation des variables i et j comme e indices puiqu’elles sont des variables pr´d´finies dont la valeur est ( − 1). e e Exemple 3.4.6 : >> n = 1 ; >> while (2^n <= 100) n = n + 1; end >> disp(n-1) 6 3.4.4 Construction switch . . . case Syntaxe switch (s´lecteur) e case valeur 1, . . . / script 1 / case Valeur 2, . . . / script 2 / ... otherwise / script end AJ.Casadevall - mars 04 p.39
  • 40. CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES Comme dans les d´finitions pr´c´dentes, le symbole / remplace un s´parateur : virgule (,), pointe e e e virgule ( ;) ou saut de ligne. s´lecteur d´signe une expression dont les valeurs peuvent correspondre aux valeurs associ´es aux e e e diff´rents case. Lorsque la valeur du s´lecteur correspond ` une valeur de case, une fois le script e e a correspondant ex´cut´, l’ex´cution se continue imm´diatement apr`s le end contrairement a ce qui e e e e e ` se passe pour certains langages. Ceci explique l’absence de break apr`s chaque script. e 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 n´gatif’) e end 2 modulo 3 3.5 Fonctions et m-files Les m-files sont aussi le moyen pour l’utilisateur de MATLAB de d´finir ses propres fonctions. e Exemple 3.5.1 : La fonction moyenne d´finie ci-dessous calcule la moyenne des ´l´ments d’une liste ou d’un vecteur. e ee Le texte de cette fonction est saisi dans un ´diteur (l’´diteur int´gr´ pour les versions MacOs ou e e e e Windows). 1 2 3 4 5 6 7 8 function m = moyenne(x) % MOYENNE(X) : moyenne des elements d’une liste ou d’un vecteur % un argument autre qu’une liste ou un vecteur conduit a une erreur [K,l] = size(x) ; if ( (k~=1) & (l~=1) ) error(’l"argument doit ^tre une liste ou un vecteur’) e end m = sum(x)/length(x) ; La fonction est enregistr´e sous le nom moyenne.m. Elle est ensuite appel´e depuis le fenˆtre de e e e commande : >> x = 1 : 9 x = 1 2 3 4 5 6 7 8 9 >> y = y = 5 moyenne(x) >> A = [ 1 2 ; 3 4] ; >> moyenne(A) ??? Error using ==> moyenne l"argument doit ^tre une liste ou un vecteur e p. 40 AJ.Casadevall - mars 04
  • 41. 3.5. FONCTIONS ET M-FILES Le traitement de l’erreur sur le type de l’argument est r´alis´ aux lignes 5 a 7, plus particuli`rement e e ` e par la commande error. MATLAB utilise la section de commentaires en conjonction avec la commande help pour fournir la d´finition de la fonction : e >> help moyenne MOYENNE(X) : moyenne des elements d’une liste ou d’un vecteur un argument autre qu’une liste ou un vecteur conduit a une erreur 3.5.1 Syntaxe Une fonction est constitu´e par : e – un en-tˆte : e function r´sultat = nom de la fonction (liste de param`tres ) e e – une section de commentaires :dont chaque ligne commence par le symbole % ; – le corps de la fonction d´fini par un script.. e 3.5.2 R`gles et propri´t´s e e e • Le nom de la fonction et celui du fichier m-file qui en contient la d´finition doivent ˆtre e e identiques. Ce fichier est le fichier m-file associ´ ` la fonction. ea • La commande help affiche les neuf premi`res lignes de la section de commentaires ; la premi`re e e ligne est utilis´e par la commande lookfor pour effectuer des recherches parmi les fonctions e , MATLAB accessibles. • Chaque fonction poss`de son propre espace de travail et toute variable apparaissant dans le e corps d’une fonction est locale a celle-ci, ` moins qu’elle ait ´t´ d´clar´e comme globale au ` a ee e e moyen du qualificateur global pr´c´dant le nom de la variable dans tous les espaces de e e travail o` cette variable est utilis´e. u e • Un fichier m-file associ´ ` une fonction (i.e. qui porte le nom d’une fonction et contient sa ea d´finition) peut contenir d’autres d´finitions de fonctions. La fonction qui partage son nom e e avec le fichier ou fonction principale doit apparaˆ ıtre en premier. Les autres fonctions ou fonctions internes peuvent ˆtre appel´es par la fonction principale, mais pas par d’autres e e fonctions ou depuis la fenˆtre de commande. e Exemple 3.5.2 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 function [m, v] = myStat(x) % MYSTAT(X) : moyenne et variance des elements d’une liste ou d’un vecteur % un argument autre qu’une liste ou un vecteur conduit a une erreur [k,l] = size(x) ; if ( (k~=1) & (l~=1) ) error(’l"argument doit ^tre une liste ou un vecteur’) e end m = moyenne(x); v = variance(x); function a = moyenne(u) % Calcul de la moyenne a = sum(u)/length(u); function b = variance(u) % Calcul de la variance AJ.Casadevall - mars 04 p.41
  • 42. CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES 15 16 17 c = sum(u)/length(u); u2 = (u - c).^2; b = sum(u2)/length(u); L’ensemble des trois fonctions est enregistr´ dans un seul fichier m-file portant le nom de la e fonction principale myStat.m. • L’ex´cution d’une fonction s’ach`ve : e e – lorsque la fin du script d´finissant la fonction a ´t´ atteint ; e ee – lorsque une commande return ou un appel de la fonction error a ´t´ rencontr´ : ee e – return termine imm´diatement l’ex´cution de la fonction sans que la fin du script e e d´finissant celle-ci ait ´t´ atteint, e ee – error(’message’ ) proc`de de mˆme, mais en plus, affiche le contenu de ’message’. e e Le contrˆle est alors renvoy´ au point d’appel de la fonction, fenˆtre de commande ou autre o e e fonction. 3.5.3 Traitement des erreurs - try . . . catch La commande try . . . catch a pour but de permettre un traitement qui permette a l’utilisateur ` d’intervenir en pr´sence d’erreurs ou de situations inhabituelles. Sa syntaxe est la suivante : e try script1 catch script2 end Le fonctionnement en est assez simple pour les habitu´s des langages modernes,java par exemple : e – l’ex´cution de script1 est lanc´e ; e e – si une erreur survient, alors l’ex´cution de script1 est arrˆt´e et script2 est ex´cut´ ; e ee e e – sinon, script1 est ex´cut´ jusqu’` son terme, script2 n’est pas ex´cut´, les ex´cutions suivantes e e a e e e se poursuivent apr`s le end final. e On peut utiliser lasterr pour acc´der ` l’erreur qui provoque l’arrˆt de l’ex´cution de script1. e a e e 3.5.4 Optimisation des calculs les calculs sont acc´l´r´s de fa¸on spectaculaire en utilisant des op´rations vectorielles en lieu ee e c e et place de boucles. Comparons les deux fonctions suivantes (la commande tic d´clenche un e chronom`tre ; toc arrˆte le chronom`tre et retourne le temps ´coul´ depuis tic) : e e e e e 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Exemple 3.5.3 : function [t,b] = test1(n) % d´termine le temps mis pour cr´er la liste e e % des racines carr´es des entiers compris entre 1 et n e m = 0 ; tic ; for k = 1 : 1 : n b(k) = m+sqrt(k) ; end t = toc ; function [t,b] = test2(n) % d´termine le temps mis pour cr´er la liste e e % des racines carr´es des entiers compris entre 1 et n e tic ; a = 1 : 1 : n ; b = sqrt(a) ; t = toc ; p. 42 AJ.Casadevall - mars 04
  • 43. 3.5. FONCTIONS ET M-FILES Les r´sultats obtenus montrent que test2 est plus efficace que test1. e >>test1(1000) ans = 0.1040 >>test2(1000) ans = 0.0023 MATLAB contient un utilitaire appel´ profiler qui est pr´cieux pour ´tudier les performances d’une e e e ou plusieurs fonctions. Les modalit´s d’utilisation du profiler ont ´volu´ en fonction des versions de e e e MATLAB. On les trouvera dans l’aide en ligne help profile . AJ.Casadevall - mars 04 p.43
  • 44. CHAPITRE 3. EXPRESSIONS, SCRIPTS ET M-FILES p. 44 AJ.Casadevall - mars 04
  • 45. 4 MATLAB et l’analyse num´rique e 4.1 4.2 4.3 4.4 Fonctions “num´riques” . . . . . . . . . . . . e Polynˆmes . . . . . . . . . . . . . . . . . . . . . o Calcul matriciel . . . . . . . . . . . . . . . . . Fonctions d’une variable . . . . . . . . . . . . 4.4.1 Recherche de minimum - fmin . . . . . . . . 4.4.2 Recherche de racines - fzero . . . . . . . . . 4.4.3 Int´gration - trapz, quad et quad8 . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 46 47 48 48 48 49 Il est impossible dans un seul chapitre de faire le tour de toutes les fonctions de MATLAB li´es ` e a l’analyse num´rique. Ce chapitre pr´sente quatre familles de fonctions : les fonctions “num´riques”, e e e les fonctions du calcul polynomial, les fonctions matricielles et les fonctions li´es aux fonctions e d’une variable. 4.1 Fonctions “num´riques” e Les fonctions num´riques g´n´ralisent par leur r´sultat, les fonctions num´riques usuelles. Elles e e e e e s’appliquent aussi bien a des nombres qu’` des tableaux (ceci est assez normal puisqu’un nombre ` a est un tableau particulier) : lorsqu’une de ces fonctions a pour argument un tableau, la fonction est appliqu´e ` chacun des ´l´ments du tableau. e a ee 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 Les fonctions num´riques sont nombreuses. L’aide en ligne en donne une liste exhaustive. Dans le e tableau ci-dessous, on trouvera les fonctions les plus fr´quemment utilis´es. e e
  • 46. ´ MATLAB ET L’ANALYSE NUMERIQUE CHAPITRE 4. Fonction abs angle real imag conj sqrt cos sin tan acos asin atan exp log log10 round fix floor ceil 4.2 R´sultat e valeur absolue ou module (nb. complexes) argument (nb. complexes) partie r´elle (nb. complexes) e partie imaginaire (nb. complexes) complexe conjugu´ e racine carr´e e cosinus (angle en radian) sinus (angle en radian) tangente (angle en radian) arc cosinus (r´sultat en radian) e arc sinus (r´sultat en radian) e arc tangente (r´sultat en radian) e exponentielle logarithme n´p´rien e e logarithme base 10 entier le plus proche partie enti`re math´matique e e troncature par d´faut e troncature par exc`s e Polynˆmes o o e Pour MATLAB, un polynˆme est une liste : la liste des coefficients ordonn´s par ordre d´croissant : e Exemple 4.2.1 : e e Le polynˆme p(x) = 1 − 2x + 4x3 est repr´sent´ par le liste : o >> p = [4 0 p = 4 0 -2 -2 1] 1 Les fonctions usuelles du calcul polynomial sont les suivantes : Fonction polyval roots conv deconv polyder p. 46 Arguments un polynˆme p et un nombre a o un polynˆme p o deux polynˆmes p et q o deux polynˆmes p et q o un polynˆme p o R´sultat e calcul de p(a) la liste des racines de p le polynˆme produit p × q o le quotient et le reste de la division euclidienne de p par q le polynˆme-d´riv´e de p o e e AJ.Casadevall - mars 04
  • 47. 4.3. CALCUL MATRICIEL 4.3 Calcul matriciel Voici quelques-unes des fonctions usuelles du calcul matriciel : Fonction eig poly det trace inv R´sultat e calcul des valeurs et des vecteurs propres polynˆme caract´ristique o e calcul du d´terminant e calcul de la trace calcul de l’inverse Exemple 4.3.1 : >> a = [1 2 ; 3 a = 1 2 3 4 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 = % -0.3723 0 est la matrice ddiagonalis´e e 0 5.37233 >> p = poly(a) p = 1.0000 -5.0000 -2.0000 % le polyn^me caract´ristique est p(t) = t^2 - 5t - 2 o e >> roots(p) ans = 5.3723 -0.3723 % les racines de p sont bien les valeurs propres AJ.Casadevall - mars 04 p.47
  • 48. CHAPITRE 4. 4.4 4.4.1 ´ MATLAB ET L’ANALYSE NUMERIQUE Fonctions d’une variable Recherche de minimum - fmin La fonction fmin prend pour arguments le nom de la fonction ` ´tudier ´crite sous forme a e e d’une chaˆ de caract`res, et les bornes inf´rieures et sup´rieures de l’intervalle d’´tude. La fonction ıne e e e e peut ˆtre une fonction pr´d´finie de MATLAB ou une fonction d´finie par l’utilisateur, mais elle e e e e doit imp´rativement ˆtre une fonction de la variable x . e e Exemple 4.4.1 : >> xmin = fmin(’cos’, 3, 4) , ymin = cos(xmin) xmin = 3.1416 ymin = -0.7071 Lorsque la fonction est d´finie par une expression, on peut utiliser directement cette expression, e ´crite sous forme d’une chaˆ de caract`res, comme argument de fmin : e ıne e >> 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 e sous forme de chaˆ de caract`re (comme cela est possible pour fmin) : ıne e >> x = xmin ; ymin = eval(fn) ymin = -0.0279 Lorsque l’expression dont on veut calculer la valeur est d´finie par une fonction de MATLAB ou e d´finie par l’utilisateur, on utilise feval e >> 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 a ´tudier ´crite sous forme d’une chaˆ de caract`res, `e e ıne e et une valeur initiale voisine de celle d’une racine. La fonction peut ˆtre une fonction pr´d´finie de e e e MATLAB ou une fonction d´finie par l’utilisateur, mais elle doit imp´rativement ˆtre une fonction e e e de la variable x. Exemple 4.4.2 : >> x0 = fzero(’cos’,1), y0 = cos(x0) x0 = 1.5708 y0 = 0 Il n’est pas possible comme pour la fonction fmin de d´finir la fonction a ´tudier par une expression e `e math´matique. On cr´era alors une fonction m-file pour d´finir cette fonction. e e e p. 48 AJ.Casadevall - mars 04
  • 49. 4.4. FONCTIONS D’UNE VARIABLE 4.4.3 Int´gration - trapz, quad et quad8 e e e MATLAB propose plusieurs fonctions pour calculer num´riquement la valeur de l’int´grale d’une fonction d’une variable, sur un intervalle ferm´. e – trapz - La fonction trapz utilise la m´thode des trap`zes. les arguments de trapz sont deux e e listes, dans l’ordre : – une liste x qui est une subdivision de l’intervalle d’int´gration ; e – une liste y dont les valeurs sont les images des valeurs de de la liste x par la fonction a ` int´grer (y(k) = f(x(k))). e 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 fond´es respectivement sur la m´thode de Simpson e e et sur la m´thode de Newton-Cotes. Leur syntaxe est celle de la fonction fmin voir 4.4.1 : e Exemple 4.4.4 : >> z = quad(’sin’, 0, pi) z = 2.0000 AJ.Casadevall - mars 04 p.49
  • 50. CHAPITRE 4. p. 50 ´ MATLAB ET L’ANALYSE NUMERIQUE AJ.Casadevall - mars 04
  • 51. 5 Courbes et surfaces 5.1 Fenˆtres graphiques . . . . . . . . . . . . . . . . . . . e 5.1.1 Cr´ation d’une fenˆtre - fonctions figure et gcf . . e e 5.1.2 Attributs d’une fenˆtre - get . . . . . . . . . . . . . e 5.2 Courbes du plan . . . . . . . . . . . . . . . . . . . . . 5.2.1 La fonction plot . . . . . . . . . . . . . . . . . . . . 5.2.2 Tracer dans une ou plusieurs fenˆtres . . . . . . . . . e 5.2.3 La commande print . . . . . . . . . . . . . . . . . 5.2.4 Courbes param´triques . . . . . . . . . . . . . . . . e 5.2.5 Personnalisation des axes et de la plotting-box . . . 5.2.6 Autres fonctions de trac´ de courbes planes . . . . . e 5.3 Courbes de l’espace - Fonction plot3 . . . . . . . . . 5.4 Surfaces de l’espace . . . . . . . . . . . . . . . . . . . 5.4.1 Mod´lisation du domaine [x0 , x1 ] × [y0 , y1 ] - fonction e 5.4.2 Trac´ de la surface - fonctions mesh et surf . . . . e 5.4.3 Surfaces et courbes de niveau . . . . . . . . . . . . . 5.1 5.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . meshgrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 51 53 53 53 54 56 57 57 60 61 61 61 61 62 Fenˆtres graphiques e Cr´ation d’une fenˆtre - fonctions figure et gcf e e La fonction figure cr´e une fenˆtre graphique vide e e Exemple 5.1.1 : >> h = figure h = 1 Une fenˆtre appel´e Figure N◦ 1 apparaˆ e e ıt.La valeur retourn´e par le fonction figure est le num´ro e e de la fenˆtre. Un second appel a la fonction figure cr´e une seconde fenˆtre appel´e Figure N◦ 2. e ` e e e >> h = figure h = 2
  • 52. CHAPITRE 5. COURBES ET SURFACES La derni`re fenˆtre cr´e est la fenˆtre active (situ´e au premier plan). Pour faire passer une fenˆtre e e e e e e au premier plan, on utilise la fonction figure avec pour argument le num´ro de la fenˆtre que l’on e e souhaite activer. Si aucune fenˆtre portant ce numero n’existe elle sera cr´´e. e ee R´ciproquement, la fonction gcf (get currant figure) retourne le num´ro (ou r´f´rence) de la fenˆtre e e ee e active. Exemple 5.1.2 : >> h = gcf h = 2 >> figure(1) >> h = gcf h = 1 La fenˆtre active est la Figure N◦ 2, puis on rend active Figure N◦ 1. Elle passe au premier plan (il e est possible de faire la mˆme chose en cliquant dans Figure N◦ 1). e p. 52 AJ.Casadevall - mars 04
  • 53. 5.2. COURBES DU PLAN 5.1.2 Attributs d’une fenˆtre - get e (Ce paragraphe peut ˆtre laiss´ de cˆt´ en premi`re lecture.) e e oe e Les fenˆtres poss`dent un grand nombre d’attributs, par exemple un nom (Name), une couleur de e e fond (Color), . . . (consultez l’aide en ligne). On obtient la liste compl`te des attributs de la e fenˆtre active et de leur valeur, par get(n) o` n est le numero de cette fenˆtre. e u e 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 utilis´e pour obtenir le num´ro de la fenˆtre active, et get pour obtenir la liste e e e des attributs de la fenˆtre et de leur valeur sous la forme : Nom de l’attribut = Valeur de l’attribut. e On modifie la valeur des attributs d’une fenˆtre avec la fonction set : e set(’Nom de l’attribut’, ’Valeur de l’attribut’, . . . , . . . ) On peut cr´er directement une fenˆtre dont les attributs ont une valeur particuli`re : e e e figure(’Nom de l’attribut’, ’Valeur de l’attribut’, . . . , . . . ) Exemple 5.1.4 : La s´quence : e >> figure(’Name’, ’essai’, ’NumberTitle’, ’off’) cr´e une fenˆtre dont le nom est essai. e e 5.2 5.2.1 Courbes du plan La fonction plot Soient x et y deux listes (ou deux vecteurs) de mˆme longueur. La fonction plot(x, y) trace e dans la fenˆtre active le graphe de y en fonction x. En fait le graphe est obtenu en joignant par e de petits segments de droite les points de coordonn´es (x(k), y(k)) pour (1 ≤ k ≤ length(x)). e lorsqu’il n’y a pas de fenˆtre active, MATLABcr´e automatiquement une nouvelle fenˆtre. e e e AJ.Casadevall - mars 04 p.53
  • 54. CHAPITRE 5. COURBES ET SURFACES Exemple 5.2.1 : Pour obtenir le graphe de la fonction sin(x) sur l’intervalle [0, 2π] : >> x=[0:.5:2*pi] ; y=sin(x) ; plot(x,y) MATLAB d´finit automatiquement un syst`me d’axes. La qualit´ du trac´ d´pend du nombre de e e e e e points construits comme le montre l’exemple suivant dans lequel on a choisi un pas plus petit pour d´crire l’intervalle [0, 2π] : e 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 fenˆtre et qu’il a ´t´ remplac´ par le second. e ee e e ee e 5.2.2 Tracer dans une ou plusieurs fenˆtres e Suivant le contexte, on peut souhaiter que : – les trac´s apparaissent dans des fenˆtres diff´rentes : on cr´e autant de fenˆtres que e e e e e de trac´s en utilisant la fonction figure : e 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) Ces deux s´quences construisent deux fenˆtres, la premi`re contenant le graphe de cos(x), la e e e seconde le graphe de sin(x). p. 54 AJ.Casadevall - mars 04
  • 55. 5.2. COURBES DU PLAN – tous les trac´s apparaissent simultan´ment dans la fenˆtre active : on peut proc´der e e e e de deux fa¸ons : c – soit en utilisant les commandes hold on et hold off : apr`s hold on tous les trac´s e e ont lieu dans la fenˆtre active ; hold off fait revenir au mode de trac´ normal. e e 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 mˆme fenˆtre e e et dans le mˆme syst`me d’axes. e e – soit en donnant comme argument a plot la liste de tous les couples de listes (ou de ` vecteurs) correspondant aux courbes a tracer : plot(x1 , y1 , x2 , y2 , · · · ) ce qui est exacte` ment ´quivalent a e ` >> hold on >> plot(x1 , y1 ) >> plot(x2 , y2 ) >> . . . . >> hold off Lorsque plusieurs trac´s ont lieu dans la mˆme fenˆtre, il peut ˆtre int´ressant d’utiliser un e e e e e style diff´rent pour distinguer les diff´rents trac´s. Pour cela on ajoute un troisi`me argument ` e e e e a AJ.Casadevall - mars 04 p.55
  • 56. CHAPITRE 5. COURBES ET SURFACES la d´finition de chaque trac´ : plot(x1 , y1 , st1 , x2 , y2 , st2 , · · · ) o` sti est une chaˆ de un a trois e e u ıne ` caract`res pris dans le tableau ci-dessous : e Couleur Marqueur Style du trac´ e y jaune . point - (∗) ligne continue m magenta o cercle : ligne pointill´e e c cyan x x -tirets r red + plus -. tiret point g vert ∗ ´toiles e b bleu s carr´s e w blanc d losanges k noir (∗) <, > triangles Les valeurs not´es (∗) sont les valeurs par d´faut. e e 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´. e 5.2.3 La commande print La commande print permet d’imprimer le contenu de la fenˆtre active, plus pr´cis´ment de la e e e zone rectangulaire d´finie par les axes dans laquelle s’inscrit le trac´ ou plot-box. e e Avec pour argument un nom de fichier, print -option nomDeFichier cette commande permet de rediriger l’impression vers le fichier. Les options d´pendent de l’environnement (UNIX, Linux, Windows, MacOs) et de la version de e MATLAB utilis´e (c.f aide en ligne). e p. 56 AJ.Casadevall - mars 04
  • 57. 5.2. COURBES DU PLAN Exemple 5.2.6 : La commande print -deps fig-gr6.eps appliqu´e ` la fenˆtre ci-dessus donne la figure suivante : e a e 5.2.4 Courbes param´triques e La fonction plot permet aussi le trac´ de courbes planes d´finies sous la forme : e e   x = f (t) t ∈ [t0 , t1 ]  y = g(t) – on cr´e un vecteur t correspondant a une subdivision de l’intervalle [t0 , t1 ] e ` – on cr´e deux vecteurs x et y en appliquent respectivement les fonctions f et g ` t e a – 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 cˆt´ en premi`re lecture.) e e oe e La fonction plot ainsi que les autres fonctions de trac´, cr´e automatiquement deux axes gradu´s, e e e l’axe des x et l’axe des y : – l’axe des x est l’axe horizontal ; il est associ´ au vecteur qui est le premier argument de plot e et couvre l’intervalle qui s’´tend de la plus petite valeur min de ce vecteur ` sa plus grande e a valeur xmax ; – l’axe des y est l’axe vertical ; il est associ´ au vecteur qui est le second argument de plot et e couvre l’intervalle qui s’´tend de la plus petite valeur ymin de ce vecteur et sa plus grande e valeur ymax. Ces deux axes d´finissent la zone rectangulaire ou plotting-box dans laquelle s’inscrivent les trac´s. e e la fonction axis – axis([x0 , x1 , y0 , y1 ]) permet d’extraire de la plotting-box la r´gion rectangulaire d´finie par e e e les points (x0 , x1 ) et (y0 , y1 ), et de l’afficher dans la fenˆtre active. AJ.Casadevall - mars 04 p.57
  • 58. 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]) L’exemple pr´c´dent montre que la modification de la zone affich´e a une incidence non e e e n´gligeable sur le facteur d’´chelle utilis´ par MATLAB. Le graphe de la fonction exp(5x)−1 e e e qui paraˆ tr`s “plat” dans la figure de gauche ne l’est pas autant dans la figure de droite. ıt e – axis option modifie l’apparence des axes et de la plotting-box : – manual fixe les bornes (et le facteur d’´chelle) de chaque axe ` leur valeur actuelle, de e a telle sorte que si hold a la valeur on, les trac´s suivants ne pourront les modifier ; e – equal fixe une ´chelle commune aux deux axes ; e – square donne a la plotting-box une forme carr´e ; ` e – normal rend a la plotting-box sa forme rectangulaire usuelle et restaure les valeurs des ` bornes de chaque axe ` leur valeur par d´faut ; a e – auto retour au mode automatique de d´finition des axes et de la plotting-box. e Consultez l’aide en ligne pour d’autres usages de axis. Exemple 5.2.8 : Dans cet exemple, on trace la courbe (un cercle) d´finie par l’´quation param´trique : e e e 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 n´cessaire pour que le cercle n’ait pas la forme d’une ellipse : e les fonctions xlabel, ylabel, title et gtext Les fonctions xlabel(’x-legend ’) et ylabel(’y-legend ’) permettent d’associer une l´gende e a ` l’axe de coordonn´e correspondant. La fonction title(’titre ’) ajoute un titre au trac´ (pas e e a ` la fenˆtre) et gtext(’texte ’) permet de placer avec la souris le texte pass´ comme argument. e e A Toutes ces chaˆ ınes de caract`res peuvent contenir des commandes L TEX. e p. 58 AJ.Casadevall - mars 04
  • 59. 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 affiche un cadre qui d´limite la plotting-box ; box off supprime ce cadre ; e grid on superpose une grille au trac´ ; grid off supprime cette grille. e AJ.Casadevall - mars 04 p.59
  • 60. CHAPITRE 5. COURBES ET SURFACES 5.2.6 Autres fonctions de trac´ de courbes planes e Les fonctions d´riv´es de plot sont nombreuses. On peut se r´f´rer ` l’aide pour en avoir une e e ee a liste exhaustive. fonctions loglog, semilogx et semilogy Ces fonctions sont semblables ` plot except´ le fait qu’une ´chelle logarithmique est utilis´e a e e e respectivement pour les deux axes, l’axe des x et l’axe des y. fonction plotyy Avec une syntaxe proche de celle de plot, plotyy(x1 , y1 , st1 , x2 , y2 , st2 ) trace y1 en fonction de x1 et y2 en fonction de x2 avec deux axes des y l’un a gauche de la plotting-box adapt´ ` y1 , ` ea l’autre a droite adapt´ ` y2 . ` ea 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 d’une chaˆ de caract`res) de la fonction dont ıne e on souhaite tracer le graphe et les valeurs des bornes de l’intervalle d’´tude. L’intervalle d’´tude e e c a e e est subdivis´ par MATLAB de fa¸on ` donner le trac´ le plus pr´cis possible. e les fonctions hist et pie la fonction hist(x,n) r´partit les valeurs de la liste (ou du vecteur) x en n classes et trace e l’histogramme correspondant (par d´faut n = 10). [N,X] = hist(x,n) retourne dans N l’effectif e de chacune des classes et dans X l’abscisse du centre de chaque classe. La fonction pie(x) dessine un diagramme des valeurs de x normalis´es par s = n xi . e i=1 Exemple 5.2.10 : >> a = randn(1,500) ; hist(a) >> [N,X] = hist(a) N = 12 15 47 79 96 102 69 X = -2.275 -1.786 -1.297 -0.808 -0.318 >> pie(N) p. 60 46 0.171 26 0.660 8 1.150 1.639 2.128 AJ.Casadevall - mars 04
  • 61. 5.3. COURBES DE L’ESPACE - FONCTION PLOT3 5.3 Courbes de l’espace - Fonction plot3 La fonction plot3 ´tends les fonctionnalit´s de plot aux courbes de l’espace. Les possibilit´s e e e de personnalisation des axes sont les mˆmes : e 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 parall´l´pip´dique. Dans les versions r´centes de MATLAB, rotate3d on permet de d´placer la plottingee e e e box avec la souris. 5.4 Surfaces de l’espace e e Dans cette section on va voir comment MATLAB permet de repr´senter des surfaces d´finies par une relation z = f (x, y) o` f est une fonction continue, d´finie sur un domaine [x0 , x1 ] × [y0 , y1 ]. u e 5.4.1 Mod´lisation du domaine [x0 , x1 ] × [y0 , y1 ] - fonction meshgrid e Cette mod´lisation se fait en deux ´tapes : e e – d´finition de deux subdivisions r´guli`res : x pour [x0 , x1 ] et y pour [y0 , y1 ] ; e e e – construction d’une grille mod´lisant le domaine [x0 , x1 ] × [y0 , y1 ] : La grille est d´finie e e par deux tableaux xx et yy r´sultant de [xx,yy] = meshgrid(x,y). e Pr´cis´ment, xx(l, k) = x(k) et yy(l, k) = y(l) pour tout k, (1 ≤ k ≤ length(x)) et pour e e tout l, (1 ≤ l ≤ length(y)) de telle sorte que (xx(l, k), yy(l, k)) = (x(k), y(l)). Il est alors possible d’´valuer les valeurs de f suivant cette grille en appliquant f au couple de e tableaux xx et yy. 5.4.2 Trac´ de la surface - fonctions mesh et surf e Une fois le domaine d’´tude mod´lis´ par deux tableaux xx et yy, on ´value les valeurs de e e e e la fonction pour obtenir un tableau z = f(xx,yy). On dessine la surface z = f (x, y) (trac´e en e perspective dans une plotting-box comme pour plot3) avec l’une des fonctions suivantes : AJ.Casadevall - mars 04 p.61