Polycopie Informatique 1A Chapitres 1 2 3 et 4 .pdf



Nom original: Polycopie_Informatique_1A_Chapitres_1_2_3_et_4.pdf

Ce document au format PDF 1.5 a été généré par LaTeX with hyperref package / pdfTeX-1.40.14, et a été envoyé sur fichier-pdf.fr le 19/09/2014 à 16:46, depuis l'adresse IP 193.52.x.x. La présente page de téléchargement du fichier a été vue 468 fois.
Taille du document: 1.6 Mo (151 pages).
Confidentialité: fichier public


Aperçu du document


Ecole Nationale des Travaux Publics de l’Etat

ENTPE

DEPARTEMENT M.I.P.

INFORMATIQUE CONCEPTUELLE ET
LANGAGE DE PROGRAMMATION

1e`re ANNEE

Septembre 2014

Rapha¨el LABAYRADE

Mis en page avec la classe thloria.

Table des gures
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
1.12
1.13

Icône du raccourci de Matlab (version R2012b) sur le bureau de Windows
Menu déroulant Démarrer → Tous les programmes → MATLAB . . . . .
Illustration a chée pendant le chargement de Matlab R2012b . . . . . . .
Interface de Matlab R2012b, au lancement de l'application. . . . . . . . .
Barre de la fenêtre principale de Matlab R2012b . . . . . . . . . . . . . .
Ruban de Matlab R2012b . . . . . . . . . . . . . . . . . . . . . . . . . . .
Barre du répertoire courant de Matlab R2012b . . . . . . . . . . . . . . .
Barre de statut de Matlab R2012b . . . . . . . . . . . . . . . . . . . . . .
Command Window (Fenêtre de commandes) de Matlab R2012b . . . . . .
Editeur de variables et Workspace (Espace de travail) de Matlab R2012b .
Command History (Historique de commandes) de Matlab R2012b . . . . .
Current folder (Répertoire courant) de Matlab R2012b . . . . . . . . . . .
Details (Détails) de Matlab R2012b . . . . . . . . . . . . . . . . . . . . . .

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

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

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

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

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

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

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

7
8
8
9
10
11
12
13
14
16
18
19
21

3.1
3.2

Fenêtre Editor (Editeur) qui permet l'édition de scripts et fonctions .m . . . . . . . . .
Barre du répertoire courant de Matlab R2012b . . . . . . . . . . . . . . . . . . . . . .

66
72

4.1
4.2

Fenêtre
Fenêtre

Editor pour l'édition de fonctions .m . . . . . . . . . . . . . . . . . . . . . . . 104
Editor en mode débogage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

i

Table des gures

ii

Table des matières
Table des gures

i

Avant-Propos

1

1

Objectifs pédagogiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

2

Polycopié . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

3

Organisation du cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

4

Modalités d'évaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

4.1

Test théorique

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

4

4.2

Travaux dirigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

4.3

Projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

5

Equipe pédagogique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

6

Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

Chapitre 1
Interface de Matlab

7

1.1

Lancement de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.2

Présentation de l'interface de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

1.3

1.2.1

Interface de type

Ruban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

1.2.2

Organisation de la fenêtre principale de Matlab . . . . . . . . . . . . . . . . . .

10

1.2.3

Ruban et barres horizontales . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.2.4

Les cinq fenêtres de l'interface de Matlab . . . . . . . . . . . . . . . . . . . . .

14

Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

1.3.1

♥ Ce qu'il faut retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

1.3.2

X Ce qu'il faut faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

1.3.3

χ Ce qu'il ne faut pas faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

Chapitre 2
Variables et instructions élémentaires
2.1

23

Notion de variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
iii

25

Table des matières
2.2

2.3

2.4

2.5

2.6
iv

Manipulation de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

2.2.1

Création d'une nouvelle variable : opérateur d'a ectation = . . . . . . . . . . .

25

2.2.2

Opérateur de non-a chage ; . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

2.2.3

Suivi de l'état de l'espace mémoire : fenêtre

Workspace . . . . . . . . . . . . . .

28

2.2.4

E acement d'une variable : instruction clear

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

29

2.2.5

Ecrasement de la valeur d'une variable . . . . . . . . . . . . . . . . . . . . . . .

29

2.2.6

Absence de relation dynamique entre variables . . . . . . . . . . . . . . . . . .

29

2.2.7

Exécution séquentielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

2.2.8

A ectation multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

2.2.9

Test d'égalité : opérateur == . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31

2.2.10 Variable ans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32

2.2.11 Priorité des calculs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

2.2.12 Tests de comparaison : opérateurs <, >, <=, >= . . . . . . . . . . . . . . . . .

34

2.2.13 Tests de di érence : opérateur ~= . . . . . . . . . . . . . . . . . . . . . . . . .

34

2.2.14 Comparaison de nombres réels

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

35

Manipulation de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

2.3.1

Création d'une variable matricielle . . . . . . . . . . . . . . . . . . . . . . . . .

36

2.3.2

Création de variables matricielles particulières . . . . . . . . . . . . . . . . . . .

38

2.3.3

Matrice particulière ne comportant que des 1 : fonction ones() . . . . . . . . . .

38

2.3.4

Aide sur les fonctions préprogrammées . . . . . . . . . . . . . . . . . . . . . . .

39

2.3.5

Autres matrices particulières : fonctions zeros() et eye() . . . . . . . . . . . . .

39

2.3.6

Vecteur automatique : opérateur : . . . . . . . . . . . . . . . . . . . . . . . . .

40

2.3.7

Fonction isempty() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

2.3.8

Lecture du coe cient d'une matrice . . . . . . . . . . . . . . . . . . . . . . . .

42

2.3.9

Ecriture du coe cient d'une matrice . . . . . . . . . . . . . . . . . . . . . . . .

43

2.3.10 Lecture et écriture du coe cient d'un vecteur . . . . . . . . . . . . . . . . . . .

44

2.3.11 Evaluation des dimensions d'une matrice : fonction size()

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

46

2.3.12 Evaluation de la taille d'un vecteur : fonction length() . . . . . . . . . . . . . .

49

Manipulation de sous-matrices

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

50

2.4.1

Accès à des éléments voisins spéci és par leurs coordonnées . . . . . . . . . . .

50

2.4.2

Opérateur end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

2.4.3

Inversion des éléments d'un vecteur . . . . . . . . . . . . . . . . . . . . . . . . .

52

Opérations sur les matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

54

2.5.1

Opérations mathématiques sur les matrices . . . . . . . . . . . . . . . . . . . .

54

2.5.2

Opérations terme à terme sur les matrices . . . . . . . . . . . . . . . . . . . . .

56

2.5.3

Opérations usuelles sur les matrices . . . . . . . . . . . . . . . . . . . . . . . . .

57

Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

2.6.1

♥ Ce qu'il faut retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

2.6.2

X Ce qu'il faut faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

61

2.6.3

χ Ce qu'il ne faut pas faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

61

Chapitre 3
Scripts et structures d'instructions
3.1

3.2

3.3

63

Création et édition d'un chier script . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

3.1.1

Ouverture de la fenêtre

Editor (Editeur) . . . . . . . . . . . . . . . . . . . . . .

66

3.1.2

Nom de sauvegarde d'un script . . . . . . . . . . . . . . . . . . . . . . . . . . .

67

3.1.3

Répertoire de sauvegarde d'un script . . . . . . . . . . . . . . . . . . . . . . . .

68

3.1.4

Copie de sauvegarde des scripts . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

3.1.5

Création d'un chier

.zip ou .rar . . . . . . . . . . . . . . . . . . . . . . . . . .

69

3.1.6

Edition d'un script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

3.1.7

Exécution d'un script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

71

3.1.8

Sélection du répertoire de travail dans la fenêtre principale de Matlab . . . . .

72

3.1.9

Sauvegarde d'un script après modi cation . . . . . . . . . . . . . . . . . . . . .

73

3.1.10 Edition simultanée de plusieurs scripts . . . . . . . . . . . . . . . . . . . . . . .

75

3.1.11 Utilisation de commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

76

3.1.12 E acement de l'espace mémoire en début de script . . . . . . . . . . . . . . . .

76

Structures d'instructions pour automatiser des tâches . . . . . . . . . . . . . . . . . . .

77

3.2.1

Boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77

3.2.2

Boucle for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78

3.2.3

Boucles for imbriquées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

81

3.2.4

Boucle while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

82

3.2.5

Di érences entre boucle for et boucle while . . . . . . . . . . . . . . . . . . . .

83

3.2.6

Spéci cités d'une boucle while . . . . . . . . . . . . . . . . . . . . . . . . . . . .

85

3.2.7

Evaluation de la Condition de la boucle while à l'intérieur de celle-ci . . . . . .

86

3.2.8

Absence de boucle do/while . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

87

Tests logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

88

3.3.1

Opérateurs de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

88

3.3.2

Opérateurs logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

88

3.3.3

Tests logiques complexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

89

3.3.4

Structure d'instructions if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

90

3.3.5

Structure d'instructions if else . . . . . . . . . . . . . . . . . . . . . . . . . . . .

91

3.3.6

Structure d'instructions if elseif else . . . . . . . . . . . . . . . . . . . . . . . .

92

3.3.7

Test d'appartenance à un intervalle . . . . . . . . . . . . . . . . . . . . . . . . .

92

3.3.8

Imbrication de boucles for, while et de structures d'instructions if . . . . . . . .

93
v

Table des matières
3.3.9

3.4

Embranchement : structure d'instructions switch . . . . . . . . . . . . . . . . .

93

3.3.10 Comparaison des structures d'instructions if et switch . . . . . . . . . . . . . .

94

3.3.11 Indentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

95

Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

96

3.4.1

♥ Ce qu'il faut retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

96

3.4.2

X Ce qu'il faut faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

97

3.4.3

χ Ce qu'il ne faut pas faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

99

Chapitre 4
Fonctions et décomposition d'une tâche complexe en tâches simples
4.1

4.2

4.3

4.4

4.5

vi

101

Dé nition et caractéristiques d'une fonction . . . . . . . . . . . . . . . . . . . . . . . .

103

4.1.1

Création et édition d'une fonction

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

103

4.1.2

Prototype d'une fonction

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

103

4.1.3

Commentaires dans une fonction . . . . . . . . . . . . . . . . . . . . . . . . . .

106

4.1.4

Corps d'une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

107

4.1.5

Nom du chier

4.1.6

Sauvegarde d'une fonction après modi cation . . . . . . . . . . . . . . . . . . .

110

4.1.7

Création d'une fonction à partir d'un script vierge . . . . . . . . . . . . . . . .

111

4.1.8

Exemple de dé nition et d'utilisation d'une fonction simple . . . . . . . . . . .

111

4.1.9

Cas général : fonction avec plusieurs paramètres d'entrée et de sortie . . . . . .

112

Portée des variables

.m d'une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . 109

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

114

4.2.1

Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

114

4.2.2

Espaces mémoires disjoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

115

4.2.3

Visualisation des di érents espaces mémoires . . . . . . . . . . . . . . . . . . .

116

4.2.4

Di érence entre script classique et fonction . . . . . . . . . . . . . . . . . . . .

118

Bonnes pratiques pour l'utilisation d'une fonction . . . . . . . . . . . . . . . . . . . . .

119

4.3.1

Bonnes pratiques pour l'appel d'une fonction . . . . . . . . . . . . . . . . . . .

119

4.3.2

Bonnes pratiques pour l'a chage des résultats d'une fonction . . . . . . . . . .

121

Fonctions avec entrées - sorties particulières . . . . . . . . . . . . . . . . . . . . . . . .

124

4.4.1

Fonction sans paramètre d'entrée . . . . . . . . . . . . . . . . . . . . . . . . . .

124

4.4.2

Fonction sans paramètre de sortie . . . . . . . . . . . . . . . . . . . . . . . . . .

125

4.4.3

Fonction sans paramètre d'entrée ni de sortie . . . . . . . . . . . . . . . . . . .

126

Imbrication de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

127

4.5.1

Résultat d'une fonction utilisé en tant que paramètre d'entrée d'une autre . . .

127

4.5.2

Appel d'une fonction à l'intérieur d'un script . . . . . . . . . . . . . . . . . . .

128

4.5.3

Appel d'une fonction à l'intérieur d'une autre fonction . . . . . . . . . . . . . .

128

4.5.4

Fonction récursive : appel d'une fonction à l'intérieur d'elle-même . . . . . . . .

129

4.6

4.7

Conception d'une solution informatique à un problème complexe . . . . . . . . . . . .

131

4.6.1

Décomposition d'un problème complexe en sous-problèmes simples . . . . . . .

131

4.6.2

Processus global de résolution d'un problème complexe . . . . . . . . . . . . . .

131

4.6.3

Processus détaillé de résolution d'un problème complexe . . . . . . . . . . . . .

132

4.6.4

Conseils naux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

133

Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

135

4.7.1

♥ Ce qu'il faut retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

135

4.7.2

X Ce qu'il faut faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

136

4.7.3

χ Ce qu'il ne faut pas faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

139

Bibliographie

141

vii

Table des matières

viii

Avant-Propos
1 Objectifs pédagogiques
Le cours d'Informatique Conceptuelle et Langage de Programmation est un cours de tronc
commun de l'ENTPE, dispensé en 1ère année. Ce cours a vocation à apporter aux étudiants les connaissances et l'expérience nécessaires pour résoudre, à l'aide de l'outil informatique, un problème qui pourrait être posé à un ingénieur. Il s'agit d'un cours d'Informatique Conceptuelle, dans le sens où
les étudiants auront à concevoir une solution à un problème, pouvant être mise en ÷uvre de façon
informatique - autrement dit par le biais de traitements automatisés de l'information. Il s'agit aussi
d'un cours de Langage de Programmation, dans la mesure où la solution conçue devra être mise en
÷uvre de façon e ective par l'intermédiaire d'un langage de programmation (le terme consacré pour
désigner cette mise en ÷uvre est l'implémentation, qui vient de l'anglais, ou l'implantation, dans sa
version française).
Contrairement à ce qui pourrait être imaginé de prime abord, la conception d'une solution informatique à un problème donné est très largement indépendante de son implantation. Il est tout à
fait possible, en e et, de commencer à concevoir une solution sans avoir d'idée précise du langage de
programmation qui sera utilisé pour l'implantation, le choix du langage s'e ectuant dans un second
temps (une démarche de ce type est d'ailleurs fréquemment adoptée au sein des Sociétés de Services
en Ingénierie Informatique - SSII). Ceci est rendu possible par le caractère général des méthodes de
conception qui sont traditionnellement exploitées, et qui seront développées dans ce document ; elles
s'appuient sur une décomposition d'un problème complexe en un ensemble de problèmes plus simples,
interdépendants les uns des autres. Dans le cadre de ce cours d'informatique, pour mettre en pratique
ces méthodes et permettre aux étudiants d'acquérir de l'expérience, un langage sera utilisé, à titre
d'illustration ; le choix de ce langage a été guidé par des considérations pédagogiques et techniques,
mais un autre choix aurait pu être e ectué. Si bien qu'à l'issue du cours, les étudiants pourront, s'ils
le souhaitent, utiliser un autre langage de programmation que celui enseigné dans ce cours, au prix de
quelques e orts d'adaptation.
Néanmoins, l'impression qui pourra prévaloir à l'issue du cours est que ce dernier aura été principalement consacré au langage de programmation utilisé, dans la mesure où les étudiants auront consacré
beaucoup d'e orts à mettre au point leur programme avec ce langage. Cette première impression pourra
évoluer à l'occasion d'une prise de recul.
Le langage qui sera utilisé dans ce cours est Matlab. Il s'agit d'un langage de programmation
qui permet d'obtenir des solutions numériques à un problème. Sa philosophie est di érente de celle de
Maple, un langage dont la vocation est le calcul symbolique et analytique, et que certains étudiants ont
peut-être déjà utilisé en classes préparatoires. Matlab est un langage de programmation bien adapté
à la résolution de problèmes de l'ingénieur, qui tire sa force de sa simplicité (par rapport à d'autres
langages, et malgré l'impression que certains étudiants pourront avoir), de son ergonomie, et du grand
1

Avant-Propos
nombre de fonctions déjà programmées permettant de résoudre des problèmes courants. Par ailleurs,
des mises à jours régulières lui permettent de suivre l'évolution des techniques (à titre d'illustration, la
version 2012b permet de tirer parti des solutions de calcul parallèle, de type CPU multi-core et GPU CUDA). Ses défauts résident principalement dans sa relative lenteur d'exécution (Matlab est un langage
interprété : chaque instruction d'un programme est transformée à la volée en un ensemble d'instructions
pouvant être exécutées par le processeur, ce qui induit une vitesse globale d'exécution moindre que dans
le cas de langages compilés comme le langage C, où cette étape est réalisée une fois pour toute pour
l'ensemble du programme, avant son exécution), et son prix élevé pour des licences professionnelles.
Néanmoins QT - OCTAVE 1 est une alternative gratuite qui permet d'exécuter directement un code
Matlab.
Un des objectifs du cours consiste à démysti er l'informatique, en démontrant à tous les étudiants
qu'ils sont capables de développer un programme apportant une solution à un problème concret - et
le plus concret possible -, dans un des domaines étudiés à l'ENTPE, ou connexe à l'un d'entre eux. Le
problème posé pourra être perçu comme complexe en apparence, ce qui correspond au positionnement
choisi pour le cours. Trois raisons à cela. La première est a érente à l'objectif de démysti cation de
l'informatique ; réussir à apporter une solution informatique à un problème simple ne participerait
qu'incomplètement à cet objectif. La seconde réside dans le caractère concret - et donc réaliste - du
problème posé, qui induit implicitement un certain niveau de complexité - une simpli cation trop
importante du problème pourrait amoindrir son caractère concret, et par là même l'intérêt que les
étudiants pourraient y porter. La troisième est liée au côté voulu attractif voire ludique du problème, qui
s'appuie sur des rendus visuels pouvant donner l'impression d'une mise en ÷uvre forcément complexe
- a priori. En dépit de cette impression éventuelle initiale, il convient de réa rmer que ce cours est
destiné à tous les étudiants, et ne nécessite aucun prérequis en informatique.
Les compétences acquises à l'issue du cours seront utiles aux étudiants pendant la scolarité à
l'ENTPE (un langage de programmation sera utilisé dans certains cours, ainsi qu'à l'occasion de
certains stages et TFE) et dans leur vie professionnelle future (en particulier pour les ingénieurs qui
opteront pour une mission en Bureau d'Etudes, ou au sein du Réseau Scienti que et Technique du
Ministère). De plus, elles pourront participer au développement de l'esprit critique des étudiants, de
leur culture du doute et également favoriser leur indépendance intellectuelle, dans la mesure où un
résultat ou une hypothèse pourront souvent être véri ées grâce à l'écriture de quelques lignes de code,
sans avoir à s'appuyer sur un logiciel auquel il aurait été nécessaire de faire con ance.

2 Polycopié
Ce polycopié a été écrit a n de tenter de répondre aux besoins et attentes des étudiants de l'ENTPE,
et a n d'accroître leur autonomie lors des phases de programmation avec Matlab. Il s'appuie sur les
préoccupations et di cultés fréquentes des étudiants, face auxquelles il essaie d'apporter di érents
éclairages. La philosophie adoptée consiste à apporter le maximum d'explications détaillées sur les
concepts abordés, en retranscrivant celles qui ont pu être données un jour en cours, et toujours de façon
très pragmatique. Certaines explications pourront paraître évidentes ou exagérement développées, mais
sont le re et de di cultés récurrentes éprouvées par un certain nombre d'étudiants. Ce polycopié peut
aussi être perçu comme un Guide des bonnes pratiques, dont le respect devrait permettre d'éviter la
majorité des écueils et soucis habituellement rencontrés.
1. téléchargeable sur http://www.malinc.se/math/octave/mainen.php

2

2. Polycopié
Il est organisé en neuf chapitres 2 :










Chapitre
Chapitre
Chapitre
Chapitre
Chapitre
Chapitre
Chapitre
Chapitre
Chapitre

1
2
3
4
5
6
7
8
9

:
:
:
:
:
:
:
:
:

Interface de Matlab
Variables et instructions élémentaires
Scripts et structures d'instructions
Fonctions et décomposition d'une tâche complexe en tâches simples
Fonctions Matlab usuelles
Algorithmes simples et utiles implantés en Matlab
Mise au point d'un programme : comment identi er et corriger les erreurs ?
Eléments fréquemment utilisés dans le cadre des projets
Optimisation des programmes Matlab

Plusieurs niveaux de lecture de ce polycopié sont possibles. Une première lecture intégrale pourra
apporter une vision détaillée des concepts abordés.
Pour une vision d'ensemble, une grille de lecture rapide pourra être exploitée. Elle o re l'assurance
de ne pas passer à côté des points essentiels. Tout au long du polycopié, en e et, la symbolique suivante
sera utilisée :



A savoir par c÷ur !

XA
χ
F

faire ! C'est-à-dire une bonne pratique à respecter !

A ne pas faire ! C'est-à-dire une erreur à ne pas commettre !
Uniquement pour les geeks !

A la n de chaque chapitre, le lecteur aura accès à un résumé qui rassemble les notions importantes,
et indique en particulier ce qu'il faut retenir, ce qu'il faut (essayer de) faire, et aussi ce qu'il ne faut
(surtout) pas faire.
Le document peut aussi être utilisé sous sa forme électronique, selon deux modalités principales :
En utilisant les hyperliens pour accéder rapidement à une section, à partir de la table des matières
générale, ou de la table des matières au début de chaque chapitre, ou encore à partir du plan du
document situé dans la colonne de gauche du lecteur pdf ;
En réalisant une recherche dans le document, grâce à la fonction Rechercher (CTRL + F), pour
accéder à la section donnant des explications sur le terme recherché (par exemple sum()).
La version électronique du polycopié pourra ainsi être utilisée pendant les phases de mise au point
d'un programme, en complément de l'aide de Matlab.
En n, à l'issue du cours, les étudiants pourront parcourir à nouveau ce polycopié, dont certains
contenus pourront leur apparaître sous un jour di érent, à la lumière de l'expérience qu'ils auront
acquise pendant le cours.
2. Ce document ne comprend que les chapitres 1,2,3 et 4 ; les suivants seront fournis en temps et en heure.

3

Avant-Propos

3 Organisation du cours
Sans compter les deux séances initiales consacrées à la sécurité informatique et à la sensibilisation
au droit dans le domaine de l'informatique, le cours s'articule en trois temps :



Notions de base d'algorithmique et implantation avec Matlab (trois séances de cours de trois

heures en salle informatique par petits groupes) ;

Décomposition d'un problème en éléments simples / TD (une séance de cours de une heure

par demi-promotion, suivie d'une séance d'analyse de deux heures en salles banalisées en petits
groupes, et de deux séances de programmation de deux à trois heures en salle informatique) ;
Résolution d'un problème complexe / Projet (une séance d'une heure de présentation du projet
par demi-promotion, suivi d'une séance de deux heures d'analyse en salles banalisées en petits
groupes, et de cinq séances d'assistance projet de deux heures en salle informatique).
Au total, le cours d'informatique comporte 38 heures de cours obligatoires. A ces séances obligatoires
s'ajoutent des séances facultatives d'assistance en salle informatique, qui ont vocation à aider les
étudiants dans les phases de programmation. Ces séances sont organisées à la demande des étudiants.
En complément, un travail personnel est nécessaire entre chaque séance pour réaliser le projet dans
les temps. En tout, le projet correspond à 30 heures de travail pour un étudiant, soit 90 heures pour
un trinôme (en comptant les séances d'assistance obligatoire et les séances facultatives).

4 Modalités d'évaluation
Les modalités d'évaluation du cours sont les suivantes.

4.1 Test théorique
Un test théorique d'une heure est organisé à l'issue des trois premières séances de cours. Il a lieu
en salle informatique et est individuel. Il a vocation à s'assurer que les notions de base - dont la
maîtrise est indispensable pour la suite du cours - ont été acquises, et à identi er le cas échéant les
points spéci ques sur lesquels chaque étudiant doit apporter une attention particulière. Ce test, sans
document, comporte une dizaine de questions sur les notions de base. Pour répondre à ces questions, les
étudiants sont invités à utiliser Matlab, et écrire les scripts et/ou fonctions permettant de répondre aux
questions posées. Le rendu attendu est un chier .zip, comportant les scripts et fonctions qui auront
été écrits. Ce chier .zip sera envoyé par e-mail à l'intervenant du groupe (ce dernier n'autorisant la
sortie de la salle de l'étudiant qu'après s'être assuré qu'il a bien reçu son e-mail). Les sujets seront
rendus à l'intervenant à la n du test.
Le test n'est pas noté, mais évalué par compétences (11 au total). Chaque compétence est évaluée
selon l'un des critères suivants :
Non véri é : lorsqu'aucune réponse n'a été fournie à la question permettant de s'assurer de la
maîtrise de la compétence ;
Non acquis : lorsque la réponse est fausse ;
A perfectionner : lorsque la réponse est globalement juste, mais qu'elle manque de précision ou
comporte des erreurs mineures ;
Validé : lorsque la réponse est juste ;
Maîtrisé : lorsque la réponse est juste et va au-delà de la question posée, démontrant une maîtrise
certaine de la compétence sous-jacente.
4

4. Modalités d'évaluation
Pour que le test soit validé, il faut que toutes les compétences le soient, à l'exception de trois, au
maximum.
Le test ne présente pas de di culté particulière, mais sa validation est en revanche relativement
exigeante, dans la mesure où valider sept compétences sur 11 est équivalent à une note d'environ 15/20.
A l'issue du test, une correction détaillée sera fournie sur le Bureau Virtuel (http ://bureauvirtuel.entpe.net depuis l'Ecole, ou https ://bureau-virtuel.entpe.fr depuis un accès hors Ecole). Les
étudiants n'ayant pas validé le test sont invités à le repasser à l'issue de la séance de cours suivante ;
ceci autant de fois que nécessaire jusqu'à validation.
Pour valider le cours d'informatique, il est nécessaire d'avoir validé le test initial avant la dernière
séance de cours.

4.2 Travaux dirigés
Le module Décomposition d'un problème en éléments simples donne lieu à une séance d'analyse sur
papier et à deux séances de programmation par trinôme en salle informatique. Ce module a vocation
à donner aux étudiants une première expérience de la résolution informatique d'un problème, et à
comprendre ce qui est attendu d'eux dans le cadre du projet. Ce module est ainsi réalisé dans des
conditions similaires à celles du projet. Il n'est pas évalué. En revanche, il constitue la première partie
du projet, qui pour sa part sera évalué.

4.3 Projet
Le projet, réalisé par trinôme, est noté sur 20, selon une grille d'analyse précise, évoquée ci-après.
La note obtenue constitue la note du cours d'informatique, qui est validé pour les notes supérieures ou
égales à 10/20 (sous réserve que le test théorique ait été préalablement validé). Le projet est évalué
pour chaque trinôme de façon solidaire, c'est-à-dire que la même note est attribuée à tous les membres
du trinôme. Des exceptions peuvent toutefois être observées, dans le cas notamment de l'absence non
justi ée d'un étudiant lors de la soutenance, ou du manque agrant de travail et d'implication d'un
étudiant pendant le projet.
La note re ète l'atteinte d'objectifs d'une part, et l'évaluation des rendus d'autre part.
Les objectifs à atteindre sont classés en deux catégories : les objectifs principaux, et les objectifs
secondaires. Les objectifs principaux sont notés sur 5. Les objectifs secondaires sont notés sur 7, plus
des points attribués à d'éventuels objectifs personnels, après accord de l'intervenant du groupe (1 à 2
points attribués en plus par objectif personnel atteint).
Les rendus, notés sur 10, comportent :
Un premier rapport d'analyse, à rendre (éventuellement manuscrit) à l'issue de la 1ère séance
d'assistance projet ;
Un second rapport d'analyse, à rendre (dactylographié) au début de la soutenance orale ;
La soutenance orale ;
Les chiers informatiques.
Les critères pris en compte pour l'attribution d'une note pour chaque rendu sont indiqués dans la
grille d'analyse, déposée sur le bureau virtuel en temps utile. En particulier, il convient de noter que
les tests unitaires des fonctions du projet, qui doivent être exposés dans le second rapport d'analyse,
représentent une part non négligeable de la note.
5

Avant-Propos

5 Equipe pédagogique
Pour l'année scolaire 2014-2015, les intervenants sont les suivants :


Demi-Promotion A :



Demi-Promotion B :










Groupe
Groupe
Groupe
Groupe
Groupe
Groupe
Groupe
Groupe

1
2
3
4
5
6
7
8

:
:
:
:
:
:
:
:

Raphaël Labayrade
Emmanuel Gourdon
Luc Jaouen
Fabien Chevillotte
Raphaël Labayrade
Joachim Blanc-Gonnet
Mathias Ngo
François-Xavier Bécot

6 Remerciements
Avec l'autorisation de Vincent Henn, ce document s'appuie partiellement (en particulier les chapitres 2-4) sur les supports pédagogiques qu'il avait réalisés. Je lui adresse mes remerciements.

6

Chapitre 1

Interface de Matlab
C

OMMENÇONS

par le commencement...

Ce chapitre présente l'interface de Matlab, avec laquelle il faut se familiariser avant de passer
aux chapitres suivants.

XSe

familiariser avec l'interface de Matlab permettra de ne pas perdre de temps
lorsque les notions des chapitres suivants seront abordées !
Sommaire

1.1 Lancement de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Présentation de l'interface de Matlab . . . . . . . . . . . . . . . . . .
1.2.1
1.2.2
1.2.3
1.2.4

Interface de type Ruban . . . . . . . . . . . . .
Organisation de la fenêtre principale de Matlab
Ruban et barres horizontales . . . . . . . . . .
Les cinq fenêtres de l'interface de Matlab . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

1.3 Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7
9

. 9
. 10
. 10
. 14

21

1.3.1 ♥ Ce qu'il faut retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3.2 X Ce qu'il faut faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3.3 χ Ce qu'il ne faut pas faire . . . . . . . . . . . . . . . . . . . . . . . . . 22

1.1 Lancement de Matlab
Pour lancer Matlab, il convient de double-cliquer sur l'icône de raccourci vers le logiciel sur le
bureau de Windows, si celle-ci est présente. Cette icône est représentée sur la Figure 1.1.

Figure 1.1 Icône du raccourci de Matlab (version R2012b) sur le bureau de Windows
Dans le cas où l'icône de raccourci n'est pas présente sur le bureau, il convient de faire apparaître
le menu déroulant Démarrer → Tous les programmes → MATLAB (représenté sur la Figure 1.2)
7

Chapitre 1. Interface de Matlab
et de cliquer sur MATLAB
MATLAB R2012b).

R2012b (et non pas sur Activate MATLAB R2012b ou Desactivate

Figure

1.2 Menu déroulant qui apparaît en sélectionnant Démarrer → Tous les programmes →
MATLAB
Pendant le chargement de Matlab R2012b, l'illustration de la Figure 1.3 est a chée sur le bureau
de Windows.

XAprès

avoir double-cliqué sur l'icône de raccourci vers Matlab, ou cliqué sur MATLAB R2012b, attendre que l'illustration de chargement s'a che !
En e et, l'a chage de l'illustration de la Figure 1.3 peut prendre un certain temps, surtout si
Windows vient d'être démarré et est en train de lancer divers services (anti-virus, programmes
lancés au démarrage, etc.). Le clic ou double-clic e ectué a bien été pris en compte par Windows !
En double-cliquant à nouveau sur l'icône de raccourci vers Matlab, ou en cliquant à nouveau
sur MATLAB R2012b dans le menu déroulant avant l'a chage de l'illustration, une seconde
instance de Matlab (c'est-à-dire un second Matlab, ou dit autrement encore, une seconde fenêtre
de Matlab indépendante de la première) sera lancée. Windows aura ainsi à lancer deux Matlab,
et le lancement de chacun d'entre eux sera ralenti ; le second Matlab étant par ailleurs super u,
il conviendra de le fermer dès qu'il aura été lancé.

Figure 1.3 Illustration a chée pendant le chargement de Matlab R2012b
A la n du chargement de Matlab R2012b, son interface s'a che. Elle est représentée sur la Figure
1.4. Intégralement en anglais, Matlab participera à la pratique de la langue de Shakespeare !
8

1.2. Présentation de l'interface de Matlab

1.2 Présentation de l'interface de Matlab
Cette section présente l'interface de la version R2012b de Matlab. La Figure 1.4 présente cette
interface, telle qu'elle apparaît au lancement du logiciel.

Figure 1.4 Interface de Matlab R2012b, au lancement de l'application.

1.2.1 Interface de type Ruban
Par rapport aux versions antérieures de Matlab, l'interface de version R2012b présente des changements signi catifs, en substituant notamment aux menus déroulants une interface de type
Ruban. Le Ruban, visible dans la partie supérieure de la Figure 1.4, est situé immédiatement sous
la barre de la fenêtre principale.
Les interfaces de type Ruban, initialement introduites avec la version 2007 de la suite O ce de
Microsoft (qui comprend notamment les logiciels Word, Excel et PowerPoint), ont tendance à se
9

Chapitre 1. Interface de Matlab
généraliser au rythme des mises à jour de nombreux logiciels. Elles sont censées permettre un
accès plus facile, plus rapide et plus intuitif aux di érentes fonctions des logiciels, et ont vocation
à améliorer la productivité de l'utilisateur. Pour les utilisateurs des versions antérieures, ces
avantages ne sont néanmoins sensibles qu'après une période d'appropriation de l'interface. Ce
bémol - à relativiser néanmoins car le nombre de menus accessibles dans Matlab est moindre que
dans d'autres logiciels, notamment ceux de la suite O ce - ne concerne bien évidemment pas les
nouveaux utilisateurs de Matlab.

1.2.2 Organisation de la fenêtre principale de Matlab
Au lancement de Matlab R2012b, la fenêtre principale apparaît selon une organisation standard,
présentée sur la Figure 1.4.
Elle comporte, en plus du ruban et des barres horizontales (barre de la fenêtre principale située
à l'extrémité supérieure de la fenêtre, barre du répertoire courant située sous le ruban, barre de
statut située à l'extrémité inférieure de la fenêtre), les cinq fenêtres suivantes :






F

Command Window
Workspace
Command History
Current Folder
Details

Il est possible de modi er l'organisation de cette fenêtre !

Aprés la présentation du ruban et des barres horizontales, la fonction et les modalités d'utilisation
de ces cinq fenêtres seront explicitées ; des conseils destinés à rendre leur utilisation pratique
seront également formulés.

1.2.3 Ruban et barres horizontales
Dans cette section le ruban et les trois barres horizontales de la fenêtre principale de Matlab
sont décrits, dans l'ordre dans lequel ils sont situés dans la fenêtre principale de Matlab, depuis
le haut et vers le bas :





la barre de la fenêtre principale ;
le ruban ;
la barre du répertoire courant ;
la barre de statut.

Barre de la fenêtre principale

Figure 1.5 Barre de la fenêtre principale de Matlab R2012b
10

1.2. Présentation de l'interface de Matlab
La barre horizontale de la fenêtre principale de Matlab, représentée sur la Figure 1.5, est située à
son extrémité supérieure. Dans la partie gauche de cette barre, la version de Matlab (MATLAB
R2012b ) est indiquée. En cliquant sur cette barre horizontale et en déplaçant la souris tout en
maintenant son bouton gauche enfoncé, un glisser/déposer est e ectué, ce qui permet de déplacer
la fenêtre de Matlab sur le bureau de Windows (lorsqu'elle ne s'étend pas sur l'ensemble de la
surface du bureau de Windows). En cliquant sur l'une des trois icônes situées dans la partie
droite de la barre horizontale, est réalisée, respectivement (de l'icône la plus à gauche à l'icône
la plus à droite) :
la minimisation de la fenêtre dans la barre d'applications de Windows ;
lorsqu'elle a une taille initialement inférieure à sa taille maximale, la maximisation de sa taille
(a n que la fenêtre utilise tout l'espace disponible sur le bureau de Windows) ; lorsqu'elle a
une taille initialement maximale, la réduction de sa taille, qui reprend alors sa taille antérieure.
Il convient de remarquer qu'à l'instar de la majorité des logiciels sous Windows, la taille de
la fenêtre peut être redimensionnée à la souris (lorsque la fenêtre ne s'étend pas sur toute la
surface du bureau) ;
la fermeture de la fenêtre principale de Matlab, qui induit la fermeture simultanée du logiciel.

Ruban

Figure 1.6 Ruban de Matlab R2012b
Le ruban de Matlab, représenté sur la Figure 1.6, comporte plusieurs onglets : HOME, PLOTS
et APPS. Dans le cadre de ce cours, seul l'onglet HOME sera utilisé.
Parmi les nombreuses icônes regroupées dans le ruban de Matlab, nous n'utiliserons habituellement qu'un petit nombre d'entre-elles :
l'icône New, située dans l'ensemble d'icônes FILE, qui permet de créer un nouveau chier
Matlab .m (script ou fonction), dans lequel le code (c'est-à-dire l'ensemble d'instructions)
d'un programme sera écrit ;
l'icône New Variable, située dans l'ensemble d'icônes VARIABLE, qui permet de créer une
nouvelle variable à l'aide d'une interface de type tableur (Matlab, qui provient de la concaténation des premières lettres de MATrix LABoratory, signi e en e et LABoratoire sur les
MATrices, et considère que toutes les variables sont des matrices, y compris les scalaires). Il
convient néanmoins de remarquer que généralement, les variables seront créées directement à
partir de la fenêtre Command Window (Fenêtre de commandes), selon une procédure décrite
dans le Chapitre 2 : Variables et instructions élémentaires. L'utilisation de l'interface de type
tableur, si elle est pratique dans certains cas, reste habituellement assez marginale ;
11

Chapitre 1. Interface de Matlab
la barre de dialogue Search documentation, qui permet d'obtenir de l'aide sur la fonction
Matlab dont le nom aura été saisi. D'autres modalités d'accès à la documentation en ligne et
à l'aide existent ; elles seront abordées par la suite.
En n, signalons que les icônes de l'ensemble CODE sont utiles pour optimiser le code et améliorer ses performances (c'est-à-dire réduire le temps d'exécution d'un programme). Les étudiants
intéressés pourront se référer au Chapitre 9 : Optimisation des programmes Matlab, où diverses
techniques d'optimisation sont présentées, certaines d'entre-elles faisant appel aux icônes de l'ensemble CODE du ruban de Matlab.

Barre du répertoire courant

Figure 1.7 Barre du répertoire courant de Matlab R2012b
La barre du répertoire courant, située en-dessous du ruban, permet de sélectionner le répertoire
dont le contenu est a ché dans la fenêtre Current Folder. Elle est représentée sur la Figure 3.2.
Par défaut, le répertoire courant est un répertoire d'installation de Matlab.

Ne jamais travailler dans un répertoire d'installation de Matlab (en particulier
le répertoire MATLAB) qui est le répertoire courant généralement sélectionné par
défaut, au lancement de Matlab !
χ

En e et, cela pourrait induire des disfonctionnements du logiciel, par exemple dans le cas où une
fonction portant le même nom qu'une fonction préprogrammée de Matlab y serait enregistrée.
A son appel, ce serait la fonction écrite par l'utilisateur qui serait appelée, et pas la fonction
préprogrammée de Matlab.
Au lancement de Matlab, le premier ré exe à acquérir consiste à dé nir comme répertoire de travail un répertoire personnel, situé soit sur une clé USB, soit sur un espace réseau personnel. Ce répertoire pourra avoir par exemple comme nom Séance_date_du_jour (e.g. Séance_23_09_2013 ).
Ainsi, à l'occasion du changement de salle informatique ou d'ordinateur, ce répertoire personnel
sera toujours accessible.

XToujours

travailler dans un répertoire personnel, situé soit sur une clé USB, soit
sur un espace réseau personnel !

12

1.2. Présentation de l'interface de Matlab
Il convient d'être attentif à ce que le répertoire personnel ne soit pas situé sur le bureau de
Windows, pour deux raisons :
le contenu du bureau d'un utilisateur est local à l'ordinateur sur lequel l'utilisateur travaille.
En d'autres termes, ce qui est sauvegardé sur le bureau personnel d'un utilisateur sur un
ordinateur donné, ne sera pas accessible depuis le bureau personnel du même utilisateur sur
un autre ordinateur ;
le service informatique de l'ENTPE procède périodiquement au nettoyage des disques durs
des ordinateurs des salles informatiques, et les contenus des bureaux des utilisateurs sont
susceptibles d'être e acés à cette occasion.

χ

Ne jamais travailler dans un répertoire personnel situé sur le bureau de Windows !

Pour modi er le répertoire de travail, di érentes modalités sont disponibles, en utilisant les icônes
mises en évidence sur la Figure 3.2 :
1) L'icône en forme de dossier présentant une èche verte dirigée vers le bas, située immédiatement à gauche du chemin d'accès, permet de sélectionner un répertoire dans l'arborescence
de l'ordinateur ;
2) Dans la barre de chemin d'accès proprement dit, il est possible de cliquer sur une èche
triangulaire noire pour a cher les sous-répertoires contenus dans le répertoire situé à sa gauche,
et sélectionner l'un d'entre eux ;
3) Par ailleurs, la liste des derniers répertoires utilisés est accessible en cliquant sur la èche
triangulaire noire située à l'extrémité droite du chemin d'accès ;
4) En n, l'icône en forme de dossier présentant une èche noire dirigée vers le haut, située à
gauche du chemin d'accès et au-dessus de la fenêtre Current Folder, permet de remonter d'un
niveau dans l'arborescence.

Barre de statut

Figure 1.8 Barre de statut de Matlab R2012b
La barre de statut (représentée sur la Figure 1.8), est située à l'extrémité inférieure de la fenêtre
de Matlab. Elle indique l'état dans lequel se trouve Matlab, parmi deux possibles :
Prêt à exécuter une instruction. Dans ce cas, l'indication Ready (qui signi e Prêt, en anglais),
est a chée dans la partie gauche de la barre horizontale. Dans cette situation, l'utilisateur a
la main et peut entrer des instructions dans la fenêtre Command Window (Fenêtre de commandes) ;
Occupé, c'est-à-dire en train d'exécuter une instruction ou un programme. Dans ce cas, l'indication Busy (qui signi e Occupé, en anglais), est a chée dans la partie gauche de la barre de
statut.

Pour forcer Matlab à reprendre le statut 'Ready' alors qu'il est 'Busy', appuyer
simultanément sur CTRL et C ! Cela a pour e et de mettre un terme à l'exécution
de l'instruction ou du programme en cours.


13

Chapitre 1. Interface de Matlab

1.2.4 Les cinq fenêtres de l'interface de Matlab
Dans cette section, les cinq fenêtres de l'interface de Matlab sont décrites, dans l'ordre suivant :






Command Window : Fenêtre de commandes ;
Workspace : Espace de travail ;
Command History : Historique de commandes ;
Current Folder : Répertoire courant.
Details : Détails

Command Window : Fenêtre de commandes
La fenêtre Command Window est, littéralement, la Fenêtre de commandes. Il s'agit d'une fenêtre
essentielle de Matlab, par l'intermédiaire de laquelle l'utilisateur entre les commandes et les
instructions qu'il souhaite voir exécutées par Matlab. Elle est représentée sur la Figure 1.9.

Figure 1.9 Command Window

(Fenêtre de commandes) de Matlab R2012b

L'invite de commandes est symbolisée par le double caractère >>, suivi du curseur (barre verticale)
clignotant. Lorsque le symbole >> est a ché, l'utilisateur a la main : il peut entrer des instructions
au clavier, puis les exécuter en appuyant sur Entrée.
14

1.2. Présentation de l'interface de Matlab

Pour dé nir une instruction et la faire exécuter par Matlab, il faut écrire l'instruction en question dans la fenêtre Command Window, puis appuyer sur Entrée !



Ces instructions peuvent être des instructions élémentaires (e.g. dé nition d'une variable, calcul
simple ; ce type d'utilisation est décrit dans le Chapitre 2 : Variables et instructions élémentaires ),
des appels à des scripts (voir le Chapitre 3 : Scripts et structures d'instructions ), ou à des fonctions
(voir le Chapitre 4 : Fonctions et décomposition d'une tâche complexe en tâches simples ).
Lorsqu'une instruction, un script ou une fonction est en cours d'exécution, Matlab suspend
l'a chage du curseur, et le terme Busy apparaît dans la partie gauche de la barre de statut.
L'utilisateur n'a alors plus la main : il lui faut attendre que l'exécution se termine pour que
Matlab a che à nouveau l'invite de commandes >> et le curseur clignotant. L'utilisateur peut
alors à nouveau entrer une instruction.
La durée d'exécution, c'est-à-dire le temps nécessaire à l'exécution des instructions par Matlab
et pendant laquelle l'utilisateur n'a plus la main, dépend des instructions : de quasi-instantanée
pour les instructions élémentaires, elle peut s'élever à plusieurs heures (voire plus) dans le cas de
scripts et/ou fonctions coûteux en temps de calcul. Dans l'hypothèse où l'utilisateur souhaiterait
reprendre la main en cours d'exécution, il peut le faire en appuyant simultanément sur les touches
CTRL et C. L'exécution s'interrompra alors ; Matlab indiquera à quel stade de l'exécution cette
interruption est intervenue, puis rendra la main à l'utilisateur : l'invite de commandes >> et le
curseur clignotant s'a cheront à nouveau.
En plus de permettre d'entrer des instructions, la fenêtre Command Window (Fenêtre de commandes) sert à l'a chage des résultats, sous forme numérique ou alphanumérique (dans le cas
de la manipulation de caractères).

Le résultat d'un calcul, d'une instruction ou d'un programme s'a che dans la
fenêtre Command Window (Fenêtre de commandes) !


En n, la fenêtre Command Window (Fenêtre de commandes) a che les messages d'erreur, qu'il
faut considérer comme une aide précieuse pour la mise au point des programmes, et qu'il est très
vivement conseillé de lire et d'essayer de comprendre. Les messages d'erreur les plus courants
sont répertoriés et commentés dans le Chapitre 7 : Mise au point d'un programme : comment

identi er et corriger les erreurs ?

Les messages d'erreur s'a chent dans la fenêtre Command Window (Fenêtre de
commandes) !


XIl

faut lire les messages d'erreur et essayer de les comprendre ! Ils constituent une
aide précieuse pour la mise au point d'un programme !
Il ne faut pas fuir devant un message d'erreur sans l'avoir lu ni essayé de le
comprendre ! Les messages d'erreur sont nos amis !
χ

15

Chapitre 1. Interface de Matlab

Workspace : Espace de travail
Le Workspace est, littéralement, l'espace de travail. Il est représenté dans la partie droite de
la Figure 1.10. Il permet de visualiser l'état de la mémoire utilisée par Matlab pour exécuter
des instructions. Di érentes informations sur les variables existantes y sont indiquées (voir le
Chapitre 2 : Variables et instructions élémentaires ).

♥ La fenêtre Workspace permet de visualiser l'état de la mémoire utilisée par Matlab !
Comme cela sera vu dans le Chapitre 4 : Fonctions et décomposition d'une tâche complexe en
tâches simples, le Workspace permet en fait de visualiser les di érents espaces mémoires utilisés,
en particulier l'espace mémoire principal (Base ) lié à la fenêtre Command Window (Fenêtre de
commandes), et aussi les espaces mémoire liés aux di érentes fonctions utilisées.

Figure

R2012b

16

1.10

Variable Editor (Editeur de variables) et Workspace (Espace de travail) de Matlab

1.2. Présentation de l'interface de Matlab
En plus d'a cher des informations sur les variables existantes, la fenêtre
créer de nouvelles variables et de modi er celles qui sont existantes.

Workspace permet de

Pour modi er une variable existante, il su t de double-cliquer sur son nom. La fenêtre Variable
Editor (Editeur de variables) apparaît alors, permettant de modi er la valeur de la variable.
Elle est représentée dans la partie gauche de la Figure 1.10. Cette fenêtre a l'apparence d'un
tableur (c.f. le logiciel Excel de la suite O ce) car Matlab considère que toutes les variables
sont des matrices (voir le Chapitre 2 : Variables et instructions élémentaires ) ; un tableur est par
conséquent approprié pour l'édition d'une variable car il permet de modi er les valeurs de ses
coe cients. Une fois que la variable a été modi ée, la fenêtre Variable Editor peut être fermée ;
la modi cation aura été prise en compte, sans qu'aucune autre action, comme la sauvegarde de
la variable, ne soit requise de la part de l'utilisateur.

Pour modi er la valeur d'une variable, il est possible de double-cliquer rapidement
sur son nom dans la fenêtre Worspace, puis d'utiliser la fenêtre Variable Editor qui
sera alors apparue. Il su t ensuite de fermer la fenêtre Variable Editor une fois la
modi cation réalisée !


Pour créer une nouvelle variable, il su t d'e ectuer un clic droit sur la fenêtre Workspace, puis
de sélectionner l'option New (NB : ce menu déroulant apparaît également lorsque l'on clique sur
la èche triangulaire entourée d'un cercle, situé en haut et à droite de la fenêtre Workspace ).
Une variable dont le nom est unnamed est alors créée. Il est possible de modi er son nom en
e ectuant un double-clic lent sur la variable, ou de modi er sa valeur par l'intermédiaire de la
fenêtre Variable Editor qui apparaît lorsqu'un double-clic rapide est réalisé sur la variable.

Pour créer une nouvelle variable, il est possible de sélectionner l'option New dans
le menu déroulant qui apparaît en e ectuant un clic droit sur la fenêtre Workspace.
Double-cliquer lentement sur son nom pour le modi er !
χ Ne pas abuser de ces fonctionnalités ! Les utiliser uniquement lorsqu'elles sont
utiles et pratiques. Dans la majorité des cas, les variables seront créées et modi ées directement depuis la fenêtre Command Window (voir le Chapitre 2), ou à
l'intérieur d'un script (voir le Chapitre 3) ou d'une fonction (voir le Chapitre 4) !


Command History : Historique de commandes
La fenêtre Command History est, littéralement, la fenêtre de l'historique de commandes. Elle est
représentée sur la Figure 1.11. Comme son nom l'indique, cette fenêtre recense l'ensemble des
commandes entrées préalablement dans la fenêtre Command Window (Fenêtre de commandes),
selon un classement par date et heure. Il est possible d'a cher, ou non, l'historique relatif à une
date en cliquant sur le bouton +/- situé à droite de la date en question, qui apparaît en vert,
encadré par deux caractères %.
Une fonctionnalité pratique et intuitive repose sur la navigation dans l'historique à l'aide des
èches haut et bas du curseur sur le clavier. En particulier, lors de la mise au point d'un
script ou d'une fonction, il sera fréquent d'avoir à exécuter à nouveau la dernière (ou l'une des
dernières) commandes entrées. Face à cette situation, les étudiants ont initialement tendance à
retaper entièrement la commande en question. Il est beaucoup plus e cace et rapide d'utiliser
la èche haut.
17

Chapitre 1. Interface de Matlab

Figure 1.11 Command History (Historique de commandes) de Matlab R2012b
XUtiliser

les èches haut et bas pour naviguer dans l'historique, et en particulier
pour faire réapparaître la (ou les) dernière(s) commande(s) tapée(s) !
Attention ! Pour que cette technique fonctionne, il faut s'assurer que le curseur soit positionné
juste après l'invite de commandes >>. En e et, il est possible qu'un espace ait été involontairement
introduit après l'invite de commandes >>. Dans ce cas, la èche haut ne permettra pas de naviguer
dans l'historique. Il convient alors de supprimer l'espace a n de rendre à nouveau opérationnelle
cette fonctionnalité. Une fois ce ré exe de navigation dans l'historique de commande acquis, un
temps précieux sera gagné pour les phases de mise au point de scripts et de fonctions.

XLors

de l'utilisation des èches haut et bas pour naviguer dans l'historique, bien
s'assurer qu'aucun espace n'a été introduit après l'invite de commandes >> !
Le comportement observé lorsqu'un espace a été involontairement ajouté après l'invite de commandes >> est en réalité une manifestation du principe général sur lequel s'appuie Matlab pour
gérer l'historique de commandes. En e et, si un (ou plusieurs) caractère(s) a (ont) été écrit(s)
après l'invite de commandes >>, et si l'on utilise les èches haut et bas pour naviguer dans l'historique, Matlab proposera les commandes précédemment entrées qui commencent par le ou les
caractères en question. Ce comportement est très pratique pour lancer une ancienne commande
en indiquant uniquement sa première lettre, puis en appuyant sur la èche haut. En particulier,
si le premier caractère entré est un espace, Matlab adopte le même comportement ; néanmoins,
il est peu probable qu'une précédente commande ait commencé par un espace. En conséquence,
18

1.2. Présentation de l'interface de Matlab
aucune commande n'est alors proposée, ce qui semble rendre inopérante la navigation dans l'historique.

Current Folder : Répertoire courant
La fenêtre Current Folder est, littéralement, celle du Répertoire Courant. Elle est représentée
sur la Figure 1.12. Cette fenêtre a che le contenu du répertoire de travail, dans lequel Matlab
recherchera les scripts et les fonctions à exécuter (voir le Chapitre 3 : Scripts et structures
d'instructions et le Chapitre 4 : Fonctions et décomposition d'une tâche complexe en tâches
simples ). La barre de navigation située en dessous du ruban et juste au-dessus de la fenêtre
Current Folder permet de sélectionner le répertoire dont le contenu est a ché, selon l'une des
modalités explicitée précédemment.
Il est primordial de bien sélectionner le répertoire de travail : son choix n'a pas pour unique e et
d'a cher son contenu dans la fenêtre Current Folder. C'est aussi dans ce répertoire que Matlab
recherchera les chiers (scripts et fonctions) auxquels il sera fait appel par la suite, à partir de la
fenêtre Command Window (où directement depuis un autre script ou depuis une autre fonction).

Figure 1.12 Current folder

(Répertoire courant) de Matlab R2012b

En d'autres termes, si le répertoire sélectionné n'est pas celui dans lequel sont sauvegardés les
scripts et fonctions qui seront appelés, Matlab génèrera un message d'erreur dans la fenêtre
Command Window (Fenêtre de commandes) :

Unde ned function or variable 'nom_du_ chier.m'
Cela ne signi e pas forcément que le chier en question n'existe pas, mais peut faire suspecter
que le répertoire de travail sélectionné n'est pas celui dans lequel le chier est sauvegardé. En
pratique, cette erreur est rencontrée fréquemment.
19

Chapitre 1. Interface de Matlab
Dans ce cas, a n de pouvoir appeler le script ou la fonction en question, il s'agira de sélectionner
le bon répertoire, c'est-à-dire celui dans lequel le chier est e ectivement sauvegardé. Voir pour
cela la section Barre du répertoire courant.

Ne pas laisser inchangé le répertoire courant par défaut au lancement de Matlab, car il ne contient probablement pas les chiers .m, scripts et fonctions, que
l'utilisateur souhaite exécuter !
χ

XSélectionner

comme répertoire de travail celui dans lequel sont sauvegardés les
chiers .m, scripts et fonctions, que l'utilisateur souhaite exécuter !
Il convient de remarquer que les chiers Matlab .m apparaissent ornés d'une icône située à gauche
du nom du chier. Cette icône représente le logo de Matlab dans le cas où le chier .m est un
script, et le symbole fx dans le cas où le chier est une fonction.

Details : Détails
La fenêtre Details, qui signi e littéralement Détails, a che des informations relatives au chier
sélectionné dans la fenêtre Current Folder. Elle est liée à la fenêtre Current Folder et est représentée sur la Figure 1.13. Bien que cette fenêtre permette de prévisualiser di érents types
de chiers, comme les chiers image, son utilité principale réside dans l'a chage d'informations
relatives aux chiers Matlab (.m) :
Dans la partie supérieure de la fenêtre, le nom du chier et son type (script ou fonction) sont
indiqués ;
Dans la fenêtre proprement dite, la première ligne des commentaires placés en entête du chier
.m (informations précédées du caractère %) est reproduite. Ces commentaires, écrits par l'auteur
du script ou de la fonction, sont destinés à donner des informations essentielles à l'utilisateur du
chier pour lui permettre de l'utiliser correctement. Comme cela sera détaillé dans le Chapitre
3 : Scripts et structures d'instructions et le Chapitre 4 : Fonctions et décomposition d'une
tâche complexe en tâches simples, ils indiquent généralement la tâche réalisée par le script
ou la fonction, ses modalités d'utilisation, ainsi que la nature des paramètres d'entrée et de
sortie dans le cas d'une fonction. En phase de mise au point d'un programme, l'accès à ces
informations est primordiale. D'autres façons d'y accéder existent (double-clic sur le chier
pour l'ouvrir dans la fenêtre Editor (Editeur) de Matlab, utilisation des commandes help,
helpwin ou doc suivi du nom du chier (sans .m ) dans la fenêtre Command Window (Fenêtre
de commandes). Néanmoins, la fenêtre Details indique la première ligne de ces informations
directement dans la fenêtre principale de Matlab, ce qui peut permettre un gain de temps.

XPenser

à regarder la fenêtre Details pour obtenir un aperçu des commentaires
situés en entête d'un chier .m !

20

1.3. Résumé

Figure 1.13 Details (Détails) de Matlab R2012b

1.3 Résumé
1.3.1



Ce qu'il faut retenir

Pour dé nir une instruction et la faire exécuter par Matlab, il faut écrire l'instruction en question
dans la fenêtre Command Window, puis appuyer sur Entrée.
Le résultat d'un calcul, d'une instruction ou d'un programme s'a che dans la fenêtre
Window.
Les messages d'erreur s'a chent dans la fenêtre

Command

Command Window.

Pour forcer Matlab à reprendre le statut 'Ready' alors qu'il est 'Busy', appuyer simultanément
sur CTRL et C. Cela a pour e et de mettre un terme à l'exécution de l'instruction ou du
programme en cours.
La fenêtre

Workspace permet de visualiser l'état de la mémoire utilisée par Matlab.

Pour modi er la valeur d'une variable, il est possible de double-cliquer rapidement sur son nom
dans la fenêtre Workspace, puis d'utiliser la fenêtre Variable Editor qui apparaît alors. Il su t
ensuite de fermer la fenêtre Variable Editor une fois la modi cation réalisée.
Pour créer une nouvelle variable, il est possible de sélectionner l'option New dans le menu déroulant qui apparaît en e ectuant un clic droit sur la fenêtre Workspace. Double-cliquer lentement
sur son nom pour le modi er.

1.3.2

X

Ce qu'il faut faire

Se familiariser avec l'interface de Matlab.
Après avoir double-cliqué sur l'icône de raccourci vers Matlab, ou cliqué sur MATLAB R2012b
dans le menu déroulant Démarrer -> Tous les programmes -> MATLAB, attendre que l'illustration de chargement s'a che.
21

Chapitre 1. Interface de Matlab
Toujours travailler dans un répertoire personnel, situé soit sur une clé USB, soit sur un espace
réseau personnel.
Sélectionner comme répertoire de travail celui dans lequel sont sauvegardés les chiers .m, scripts
et fonctions, que l'utilisateur souhaite exécuter.
Lire les messages d'erreur et essayer de les comprendre. Ils constituent une aide précieuse pour
la mise au point d'un programme.
Utiliser les èches haut et bas pour naviguer dans l'historique, et en particulier pour faire réapparaître la (ou les) dernière(s) commande(s) tapée(s).
Lors de l'utilisation des èches haut et bas pour naviguer dans l'historique, bien s'assurer qu'aucun espace n'a été introduit après l'invite de commandes >>.
Penser à regarder la fenêtre
d'un chier .m.

1.3.3

χ

Details pour obtenir un aperçu des commentaires situés en entête

Ce qu'il ne faut pas faire

Ne jamais travailler dans un répertoire d'installation de Matlab (en particulier le répertoire
MATLAB) qui est le répertoire courant généralement sélectionné par défaut, au lancement de
Matlab.
Ne pas laisser inchangé le répertoire courant par défaut au lancement de Matlab, car il ne contient
probablement pas les chiers .m, scripts et fonctions, que l'utilisateur souhaite exécuter.
Ne jamais travailler dans un répertoire personnel situé sur le bureau de Windows.
Ne pas fuir devant un message d'erreur sans l'avoir lu ni essayé de le comprendre ! Les messages
d'erreur sont nos amis.
Ne pas abuser des fonctionnalités du Workspace et de la fenêtre Variable Editor ! Les utiliser
uniquement lorsqu'elles sont utiles et pratiques. Dans la majorité des cas, les variables seront
créées et modi ées directement depuis la fenêtre Command Window (voir le Chapitre 2), ou à
l'intérieur d'un script (voir le Chapitre 3) ou d'une fonction (voir le Chapitre 4).

22

Chapitre 2

Variables et instructions élémentaires
C

E chapitre présente la notion de variable et les méthodes à mettre en ÷uvre pour créer, lire et
manipuler des variables. Des remarques induites par des questions et des erreurs fréquemment
commises par les étudiants sont formulées, de façon à faciliter l'assimilation des concepts qu'il
sera indispensable de maîtriser par la suite.

XUne

bonne connaissance de ce chapitre est nécessaire avant d'aborder les suivants !

Sommaire

2.1 Notion de variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Manipulation de variables . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1
2.2.2
2.2.3
2.2.4
2.2.5
2.2.6
2.2.7
2.2.8
2.2.9
2.2.10
2.2.11
2.2.12
2.2.13
2.2.14

Création d'une nouvelle variable : opérateur d'a ectation =
Opérateur de non-a chage ; . . . . . . . . . . . . . . . . .
Suivi de l'état de l'espace mémoire : fenêtre Workspace . . .
E acement d'une variable : instruction clear . . . . . . . .
Ecrasement de la valeur d'une variable . . . . . . . . . . . .
Absence de relation dynamique entre variables . . . . . . .
Exécution séquentielle . . . . . . . . . . . . . . . . . . . . .
A ectation multiple . . . . . . . . . . . . . . . . . . . . . .
Test d'égalité : opérateur == . . . . . . . . . . . . . . . . . .
Variable ans . . . . . . . . . . . . . . . . . . . . . . . . . . .
Priorité des calculs . . . . . . . . . . . . . . . . . . . . . . .
Tests de comparaison : opérateurs <, >, <=, >= . . . . . .
Tests de di érence : opérateur ~= . . . . . . . . . . . . . .
Comparaison de nombres réels . . . . . . . . . . . . . . . .

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

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

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

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

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

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

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

2.3.1
2.3.2
2.3.3
2.3.4
2.3.5
2.3.6
2.3.7
2.3.8
2.3.9

Création d'une variable matricielle . . . . . . . . . . . . . . . .
Création de variables matricielles particulières . . . . . . . . . .
Matrice particulière ne comportant que des 1 : fonction ones()
Aide sur les fonctions préprogrammées . . . . . . . . . . . . . .
Autres matrices particulières : fonctions zeros() et eye() . . . .
Vecteur automatique : opérateur : . . . . . . . . . . . . . . . .
Fonction isempty() . . . . . . . . . . . . . . . . . . . . . . . . .
Lecture du coe cient d'une matrice . . . . . . . . . . . . . . .
Ecriture du coe cient d'une matrice . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

2.3 Manipulation de matrices . . . . . . . . . . . . . . . . . . . . . . . . .

23

25
25

25
27
28
29
29
29
30
30
31
32
33
34
34
35

36

36
38
38
39
39
40
41
42
43

Chapitre 2. Variables et instructions élémentaires
2.3.10 Lecture et écriture du coe cient d'un vecteur . . . . . . . . . . . . . . . 44
2.3.11 Evaluation des dimensions d'une matrice : fonction size() . . . . . . . . 46
2.3.12 Evaluation de la taille d'un vecteur : fonction length() . . . . . . . . . . 49

2.4 Manipulation de sous-matrices . . . . . . . . . . . . . . . . . . . . . .

50

2.5 Opérations sur les matrices . . . . . . . . . . . . . . . . . . . . . . . .

54

2.6 Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

2.4.1 Accès à des éléments voisins spéci és par leurs coordonnées . . . . . . . 50
2.4.2 Opérateur end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.4.3 Inversion des éléments d'un vecteur . . . . . . . . . . . . . . . . . . . . . 52
2.5.1 Opérations mathématiques sur les matrices . . . . . . . . . . . . . . . . 54
2.5.2 Opérations terme à terme sur les matrices . . . . . . . . . . . . . . . . . 56
2.5.3 Opérations usuelles sur les matrices . . . . . . . . . . . . . . . . . . . . 57
2.6.1 ♥ Ce qu'il faut retenir . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.6.2 X Ce qu'il faut faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.6.3 χ Ce qu'il ne faut pas faire . . . . . . . . . . . . . . . . . . . . . . . . . 61

24

2.1. Notion de variable

2.1 Notion de variable
Une variable est une sorte de boîte dé nie par son
nommée "VarA" contient la valeur 10.

nom et son contenu 3 . Ci-dessous, la variable

Name Value
VarA

10

2.2 Manipulation de variables
2.2.1 Création d'une nouvelle variable : opérateur d'a ectation =
Initialement, l'espace mémoire de Matlab ne comporte pas de variables. Pour créer une variable,
il faut utiliser l'opérateur d'a ectation = , qui permet également de dé nir le contenu initial de
la variable.



Il n'est pas possible de créer une variable sans dé nir simultanément son contenu !

Le tableau suivant propose trois exemples de création de variables. Le premier consiste à créer
une variable dont le nom est "A" et la valeur 12. La syntaxe A = 12 (avec ou sans espace avant et
après l'opérateur =) doit être entrée dans la fenêtre Command Window (Fenêtre de commandes),
après l'invite de commandes >>, et être suivie d'un appui sur la touche Entrée :
Opération mathématique

Command Window

Workspace

>> A = 12
A = 12

A =
12
>> a = 14

a = 14

a =
14
>> B = A * 2

B =A×2

B =
24

Name Value
A

12

Name Value
A
a

12
14

Name Value
A
a
B

12
14
24

3. Physiquement, une variable est stockée dans la mémoire de l'ordinateur. En plus de son nom et de son contenu, elle
est donc aussi caractérisée par sa localisation en mémoire. Informatiquement, cette localisation porte le nom d'adresse
mémoire. Matlab gère automatiquement les adresses mémoire des variables de façon transparente pour l'utilisateur, qui
n'a donc pas à s'en soucier. Par conséquent la notion d'adresse mémoire ne sera plus abordée dans ce document.

25

Chapitre 2. Variables et instructions élémentaires
Lors de la création d'une variable, Matlab e ectue plusieurs opérations, dans l'ordre suivant :
1) l'évaluation de l'expression située à droite de l'opérateur d'a ectation = . Ce comportement
est systématique : lors d'une opération d'a ectation, Matlab commence toujours
par évaluer l'expression située à droite de = . Dans le premier exemple (A = 12), cette
évaluation est immédiate et ne nécessite aucun calcul, puisque l'utilisateur a directement entré
une valeur numérique (12) ;
2) la création d'une nouvelle variable, dont le nom est "A". Après avoir évalué l'expression
située à droite de =, Matlab véri e si une variable dont le nom est celui indiqué à gauche de =
existe. Ici, ce n'est pas le cas, puisque l'espace mémoire de Matlab est initialement vierge. Par
conséquent, Matlab crée une nouvelle variable dont le nom est "A". Selon l'analogie précédente
de la boîte, Matlab crée une boîte vide, sur laquelle est collée une étiquette portant le nom
"A" ;
3) l'a ectation du résultat de l'évaluation e ectuée à l'étape 1) à la variable A. En utilisant la
même analogie, Matlab ouvre la boîte étiquetée "A", met la valeur numérique 12 à l'intérieur,
puis referme la boîte.
Dans le second exemple, une variable a est créée et la valeur 14 lui est a ectée (on dit aussi que
a prend la valeur 14). Les variables A et a sont considérées comme di érentes par Matlab qui
distingue les lettres majuscules des minuscules.

Matlab fait la distinction entre les lettres majuscules et minuscules dans le nom
des variables !


Le troisième exemple di ère des deux premiers au niveau de l'évaluation de l'expression située
à droite de l'opérateur =. En e et, cette évaluation n'est pas immédiate, dans la mesure où elle
induit un calcul faisant intervenir la variable

χ

Ne jamais écrire 12 = A !

Cette syntaxe provoquerait en e et le message d'erreur suivant :

Error: The expression to the left of the equals sign is not a valid target for an
assignment.
XLes

messages d'erreur doivent être considérés comme une aide précieuse fournie
par Matlab pour corriger les erreurs ! A ce titre, il est vivement conseillé de les lire
attentivement et d'essayer de les comprendre !
Il ne faut pas fuir devant un message d'erreur sans l'avoir lu ni essayé de le
comprendre ! Les messages d'erreur sont nos amis !
χ

Dans le cas présent, Matlab considère que la variable à laquelle a ecter le résultat est 12, ce qui
n'est pas un nom acceptable pour une variable, qui ne doit jamais commencer par un chi re (ni
comporter d'espace, ni de caractère accentué, ni de caractère correspondant à un opérateur de
Matlab).

χ
26

Ne jamais utiliser d'espace ou de caractère accentué dans le nom d'une variable !

2.2. Manipulation de variables
XUtiliser

le caractère _ (touche 8 sur la partie gauche du clavier, pas sur le pavé
numérique) comme séparateur dans un nom de variable (e.g. Ma_variable)
XEssayer

de conserver une certaine cohérence dans le nommage des variables, pour
améliorer la lisibilité des futurs programmes !
χ

Ne jamais commencer le nom d'une variable par un chi re !

Ne jamais utiliser de caractère désignant un opérateur Matlab dans le nom d'une
variable (e.g. =, :, *, +, -, (, [) !
χ

χ Ne jamais donner à une variable le nom d'une
eps, pi) (exception : i et j peuvent être utilisées)
de Matlab (e.g. size, ones) !

variable réservée de Matlab, (e.g.
ou d'une fonction préprogrammée

Pour savoir si un nom est disponible, le taper dans la fenêtre Command Window, suivi d'un appui
sur Entrée. Si ce nom (par exemple, "aa") est disponible, Matlab génèrera le message d'erreur
suivant :

Undefined function or variable 'aa'.
Si le nom est celui d'une variable déjà dé nie (par l'utilisateur, ou prédé nie dans Matlab),
Matlab a chera sa valeur dans la fenêtre Command Window.
En n, si le nom est celui d'une fonction déjà dé nie (par l'utilisateur, ou prédé nie dans Matlab,
par exemple size), Matlab génèrera le message d'erreur suivant :

Error using size. Not enough input arguments.
En particulier, les variables i et j sont considérées en Matlab comme les nombres complexes
habituellement désignés comme tels. Néanmoins, les noms "i" et "j" sont généralement très
fréquemment utilisés dans les boucles for et while (voir le chapitre 3 : Scripts et structures
d'instructions ). Il est heureusement possible d'utiliser "i" et "j" comme noms de variable. Lors
de l'a ectation de leur contenu, le contenu précédent est remplacé (on dit aussi écrasé) par le
nouveau (voir la section 1.2.5 de ce chapitre : Ecrasement de la valeur d'une variable ). Par
exemple, le nombre complexe contenu dans i sera remplacé par 1 si l'instruction i = 1 est
exécutée.

2.2.2 Opérateur de non-a chage ;
Dans les trois exemples précédents, le résultat de l'a ectation est a ché dans la fenêtre Command
Window. A n d'éviter cet a chage, il convient d'utiliser l'opérateur de non-a chage ; à la n
de la ligne de l'instruction. L'absence d'a chage du résultat ne signi e pas pour autant que
l'opération d'a ectation n'aura pas été réalisée ou n'aura pas abouti : l'a ectation aura bien
été réalisée, ce dont rendra compte la fenêtre Workspace qui représente l'état de la mémoire
de Matlab. Si l'opération n'avait pas abouti, Matlab aurait généré un message d'erreur dans la
fenêtre Command Window. Si l'opérateur ; est utilisé à la n de la ligne de l'instruction, le
résultat de cette ligne n'est pas a ché dans la fenêtre Command Window, comme dans l'exemple
suivant :
27

Chapitre 2. Variables et instructions élémentaires
>> A = 12;
XIl est conseillé d'utiliser l'opérateur ; à la suite de toutes les instructions qui ne
nécessitent pas obligatoirement un a chage !
A l'exception de la véri cation de la valeur des variables (initialement ou pour la mise au point
d'un programme - voir le chapitre 7 : Mise au point d'un programme : comment identi er et
corriger les erreurs ? ), ou de l'a chage du résultat nal, il est déconseillé, super u et inutile
d'a cher le résultat des instructions. Deux raisons à cela :
pour ne pas surcharger inutilement la fenêtre Command Window, et ainsi améliorer la lisibilité
des informations importantes ;
pour éviter de ralentir sensiblement la vitesse d'exécution des programmes, car l'a chage
nécessite des opérations supplémentaires de la part de Matlab, coûteuses en temps de calcul.

2.2.3 Suivi de l'état de l'espace mémoire : fenêtre Workspace
L'évolution de l'état de l'espace mémoire peut être suivi dans la fenêtre Workspace. Cette fenêtre
est présentée dans le Chapitre 1 : Interface de Matlab. A la suite des exemples précédents, cette
fenêtre indique que trois variables existent : A, a et B.
Par défaut, les informations suivantes sont indiquées dans les di érentes colonnes de la fenêtre
Workspace :




Name : le nom de la variable ;
Value : la valeur de la variable ;
Min : la valeur minimale de la

variable. Plus précisément, il s'agit de la valeur minimale
des coe cients de la variable. L'existence de cette colonne est justi ée par le fait que Matlab
(qui est la contraction de MATrix LABoratory, ce qui signi e LABoratoire sur les MATrices)
considère que toutes les variables sont des matrices. Or, dans les trois exemples précédents, les
variables A, a et B sont des scalaires. Néanmoins Matlab les considère comme des matrices 1 x
1, c'est-à-dire comportant une ligne et une colonne. La valeur minimale des coe cients d'une
matrice 1 x 1 est bien sûr la valeur de son unique coe cient, c'est-à-dire le scalaire lui-même ;
Max : de la même façon, cette colonne indique la valeur maximale des coe cients de la variable,
considérée comme une matrice. Dans le cas d'une variable scalaire, les valeurs minimale et
maximale sont identiques.

Il est possible d'a cher des informations supplémentaires sur les variables dans
la fenêtre Workspace !
F

En e et, en réalisant un clic droit sur la barre horizontale indiquant la nature des informations
a chées (située juste sous la barre supérieure de la fenêtre Workspace ), on peut sélectionner les
informations que l'on souhaite voir a chées. A l'exception du nom de la variable (Name), toutes
les informations listées ci-dessus et ci-dessous sont a chables de façon optionnelle :



28

Size : nombre de lignes x nombre de colonnes ;
Bytes : taille de l'espace mémoire utilisé pour stocker la variable ;
Class : type de la variable (e.g. double, short, char) ;

2.2. Manipulation de variables







Range : Intervalle des valeurs des coe cients de la variable ;
Mean : Moyenne des valeurs des coe cients de la variable ;
Median : Médiane des valeurs des coe cients de la variable ;
Mode : Valeur la plus fréquente des coe cients de la variable ;
Var : Variance des valeurs des coe cients de la variable ;
Std : Ecart-type des valeurs des coe cients de la variable.

2.2.4 E acement d'une variable : instruction clear
Pour e acer une variable, il faut utiliser l'instruction clear suivi du nom de la variable. Par
exemple, clear a e ace la variable a. La ligne correspondante de la fenêtre Workspace disparaît
alors, re étant l'e acement de la variable a de l'espace mémoire.
Pour e acer toutes les variable, il convient d'utiliser l'instruction clear all, qui signi e

tout en anglais. La fenêtre Worskpace retrouve alors son état vierge initial.

E ace

Sauf mention contraire, dans la suite de ce chapitre, on considèrera que l'instruction clear all a été utilisée avant chaque illustration d'une instruction, commande,
fonction ou fonctionnalité de Matlab.

2.2.5 Ecrasement de la valeur d'une variable
En réutilisant une variable, la valeur qu'elle stockait précédemment est perdue. Lorsque l'opérateur = est utilisé pour a ecter une valeur à une variable déjà existante, la nouvelle valeur remplace
(le terme informatique est écrase) la précédente. Selon l'analogie de la boîte, une variable est
une boîte ne contenant qu'un seul emplacement. Néanmoins, la taille de la boîte s'adapte au
contenu qu'elle doit stocker ; par exemple, si une variable stocke un scalaire, l'emplacement de
la boîte est dimensionné pour un scalaire : la boîte a une taille réduite ; s'il s'agit d'une matrice
1000 x 1000, l'emplacement de la boîte est dimensionné pour une matrice 1000 x 1000 : la boîte
a une taille élevée, etc. Dans l'exemple présenté dans le tableau suivant, la variable A perd son
ancienne valeur 12, et prend la nouvelle valeur 17. On dit que la valeur 17 écrase la valeur 12 :
Opération mathématique

Command Window

A = 12

>> A = 12;

A = 17

>> A = 17;

Workspace

Name Value
A

12

Name Value
A

17

2.2.6 Absence de relation dynamique entre variables
Les variables ne sont pas liées dynamiquement entre elles, même si une relation explicite les liant
a été dé nie antérieurement par une instruction. Dans l'exemple suivant, B prend la valeur de A
multipliée par 3 (c'est-à-dire 17 x 3 = 51). Matlab commence en e et par évaluer l'expression
située à droite de l'opérateur = :
Opération mathématique

Command Window

B =A∗3

>> B = A * 3;

Workspace

Name Value
B

51

29

Chapitre 2. Variables et instructions élémentaires
L'instruction ci-dessus ne crée pas de relation dynamique entre A et B.



Il n'existe pas de relation dynamique entre les variables !

En conséquence, si une nouvelle valeur est a ectée à A, cette a ection n'a aucune conséquence
automatique sur la valeur de B, qui reste inchangée :
Opération mathématique

Command Window

A = 18

>> A = 18;

Workspace

Name Value
A

18

Cette instruction a ecte la valeur 18 à A ; en revanche, la valeur de B n'est pas modi ée : B
conserve la valeur 51. Si l'on souhaite que B prenne une nouvelle valeur, il faut que l'instruction
correspondant à l'évaluation de sa nouvelle expression soit explicitement exécutée. En particulier,
si l'on souhaite que B soit mise à jour selon la même relation que précédemment, il faut exécuter
à nouveau l'instruction suivante :
Opération mathématique

Command Window

B =A∗3

>> B = A * 3;

Workspace

Name Value
B

54

B prend alors la valeur 54, qui peut être considérée comme sa valeur mise à jour suite à la
modi cation de la valeur de A, dans le cas où la relation initiale entre A et B reste valable. En
Matlab, la persistance de relations entre variables n'est pas automatique. Si l'on souhaite qu'une
variable soit mise à jour en fonction d'une seconde et d'une relation qui les lie, il faut exécuter
l'instruction qui évalue cette relation explicitement, et ceci à chaque fois que l'on souhaite que
la mise à jour ait lieu.

2.2.7 Exécution séquentielle
Cette absence de relation dynamique est une conséquence du fonctionnement séquentiel de Matlab : Matlab exécute les instructions selon la séquence indiquée, une instruction après l'autre,
une instruction à la fois. A la di érence de certains langages de programmation (e.g. Maple),
Matlab ne met jamais à jour automatiquement des variables. Ce comportement séquentiel induit
un contrôle accru de ce qui est exécuté et une compréhension plus aisée du fonctionnement d'un
programme, dans la mesure où Matlab ne fait jamais rien "tout seul" ou automatiquement.

Le fonctionnement de Matlab est séquentiel : il se cantonne STRICTEMENT à
exécuter les instructions qui lui sont données, séquentiellement, une à la fois, l'une
après l'autre !


2.2.8 A ectation multiple
Pour a ecter la même valeur à deux (ou plusieurs) variables, il faut explicitement exécuter deux
(ou plusieurs) instructions :
Opération mathématique Command Window
Workspace

30

E = 16

>> E = 16;

F = 16

>> F = 16;

Name Value
E

16

Name Value
F

16

2.2. Manipulation de variables
En e et, l'instruction E = F = 16 génèrera une erreur :
Opération mathématique

Command Window

E = F = 16

>> E = F = 16;

Workspace

Name Value

Error

Error: The expression to the left of the equals sign is not a valid target for an
assignment.
En l'occurrence, ce message d'erreur indique que l'expression située à gauche du signe = n'est
pas valide pour une opération a ectation. E ectivement, Matlab considère que l'opérateur d'affectation est le second signe =, et qu'en l'occurrence la variable à laquelle il convient d'a ecter le
résultat est E = F. Cette expression n'est pas un nom de variable, ce qui induit la génération du
message d'erreur.

χ
F

Ne jamais écrire E

= F = 16 !

Il est possible de réaliser des a ectations multiples grâce à la fonction deal() !
Opération mathématique

Command Window

E = F = 16

>> [E,F] = deal(16);

E = 7, F = 4

>> [E,F] = deal(7,4);

Workspace

Name Value
E
F

16
16

Name Value
E
F

7
4

2.2.9 Test d'égalité : opérateur ==
Pour tester l'égalité de deux expressions (expression mathématique, variable, constante), if faut
utiliser l'opérateur de comparaison ==. L'exemple présenté dans le tableau ci-dessous évalue si
les valeurs des variables B et A sont les mêmes :
Opération mathématique

B = A?

Command Window

Workspace

>> B == A

Name Value

ans =
0

A
B
ans

18
54
0

Le résultat de cette évaluation est une valeur binaire : 0 ou 1. L'opérateur == renvoie 0 dans le
cas où les valeurs des variables comparées sont di érentes (l'égalité testée est fausse), ou 1 dans
le cas où elles sont égales (l'égalité testée est vraie 4 ). Matlab répond ainsi à la question qui lui
est posée par une variable booléenne (on encore un booléen), i.e. une variable qui ne peut
prendre que l'une des deux valeurs 0 et 1.
4. En pratique, toute valeur non nulle est réputée vraie. Lorsqu'une opération logique est vraie, le résultat pourrait
donc être n'importe quelle valeur non nulle. Nous utiliserons par la suite la convention vrai ⇐⇒ 1

31

Chapitre 2. Variables et instructions élémentaires
Bien que cette remarque puisse ici paraître triviale, il est essentiel de remarquer que l'opérateur de
comparaison == comporte deux fois le signe =, qui est aussi le symbole de l'opérateur d'a ectation.
La similitude entre ces deux opérateurs induit fréquemment l'utilisation erronée de l'opérateur
d'a ectation = dans des contextes où c'est l'opérateur de comparaison == qui devrait être utilisé.
Par exemple, une erreur courante consiste à utiliser l'opérateur = pour la comparaison de la
valeur d'une variable à une constante :
Opération mathématique

Command Window

D = 19

>> D = 19 ;

Workspace

Name Value
D

19

Bien évidemment, cette instruction a ecte la valeur 19 à la variable D, et ne teste pas si la valeur
de D est égale à 19. Pour cela, il aurait fallu utiliser l'instruction suivante :
Opération mathématique Command Window
Workspace

>> D == 19
D = 19?

ans =

Name Value
D
ans

19
1

1
Confondre == et = peut rendre la mise au point d'un programme di cile, et donc sensiblement
augmenter la durée de la phase de débogage (voir le Chapitre 7 : Mise au point d'un programme :
comment identi er et corriger les erreurs ? ). En e et, comme mise en évidence ci-dessus, cette
confusion ne provoque pas de génération de message d'erreur de la part de Matlab, puisque
les deux opérateurs == et = sont parfaitement corrects ; néanmoins leur e et est radicalement
di érent. Or, cette erreur pourrait être facilement évitée en portant une attention accrue à
l'opérateur à utiliser.
♥ Confondre les opérateurs d'a ectation
classique !
χ

=

et de comparaison

==

est une erreur

Ne pas confondre les opérateurs d'a ectation = et de comparaison == !

La raison pour laquelle la confusion des opérateurs == et = peut être pernicieuse repose sur
le fait que l'opérateur de comparaison == est généralement couplé à la structure d'instructions
conditionnelle if (voir le Chapitre 3 : Scripts et structures d'instructions ).
Utiliser = à la place de == dans une structure d'instruction if provoquera le message d'erreur
suivant :

Error: The expression to the left of the equals sign is not a valid target for an
assignment.

2.2.10 Variable ans
La variable ans stocke le résultat de la dernière instruction lorsque celui-ci n'est pas a ecté
explicitement à une autre variable. ans, qui est une variable réservée de Matlab, est le début du
mot answer, qui signi e réponse en anglais. Matlab dispose uniquement de cette variable réservée
pour stocker les résultats des instructions qui ne sont pas a ectés explicitement à une variable.
Autrement dit, si une seconde instruction est exécutée et qu'aucune variable à laquelle a ecter
32

2.2. Manipulation de variables
son résultat n'est explicitement utilisée, la variable ans prendra la valeur du résultat de cette
seconde instruction, et le résultat de la première sera perdu (le résultat de la seconde instruction
écrasera le résultat de la première).

Ne pas appeler une variable ans, car même si cela est possible, la valeur de ans
présente une forte probabilité d'être écrasée à l'occasion d'un calcul pour lequel la
variable à laquelle a ecter le résultat n'aura pas été précisée !
χ

Ce comportement est illustré dans l'exemple suivant :
Opération mathématique

Command Window

Workspace

>> 5 - 2
ans =

5−2

3
>> C = 18
C = 18

C =
18
>> 2 + 2
ans =

2+2

4

Name Value
ans

3

Name Value
ans
C

3
18

Name Value
ans
C

4
18

2.2.11 Priorité des calculs
L'instruction suivante a ecte le résultat de l'évaluation de l'égalité des valeurs des variables B et
A à la variable C :
Opération mathématique

B = A?

Command Window

Workspace

>> C = (B == A)

Name Value

C =
0

A
B
C

18
54
0

Les parenthèses sont utilisées pour indiquer l'ordre de priorité d'exécution des calculs : les calculs
qui sont situés à l'intérieur des parenthèses sont e ectués en premier. Dans le cas où

plusieurs parenthèses sont imbriquées les unes dans les autres, ce sont les calculs situés le plus à
l'intérieur des parenthèses qui sont e ectués en premier, puis ceux situés au niveau d'imbrication
directement inférieur, et ainsi de suite.
Dans le cas d'utilisation de parenthèses multiples, il est courant d'oublier de fermer une (ou
plusieurs) parenthèse(s), ce qui induit une erreur de syntaxe. Pour éviter ce désagrément, il est
conseillé de soigner la mise en page lors de l'écriture des expressions à évaluer, en utilisant des
33

Chapitre 2. Variables et instructions élémentaires
espaces et des tabulations (qui sont ignorés par Matlab et n'induisent donc pas de modi cation
de comportement, mais rendent le code plus lisible).

XPrendre

garde à bien fermer toutes les parenthèses et utiliser une syntaxe espacée
pour éviter les oublis !
En cas d'erreur, le message d'erreur suivant sera généré :

Error: Unbalanced or unexpected parenthesis or bracket.
Lorsque la priorité d'évaluation n'est pas explicitement indiquée par l'usage des parenthèses, un
niveau de priorité par défaut est utilisé par Matlab. Par exemple, l'opérateur de multiplication
* est prioritaire par rapport à l'opérateur d'addition +. Néanmoins, il est fortement conseillé
d'utiliser systématiquement des parenthèses pour éviter des ambiguïtés et d'éventuelles erreurs.

XUtiliser

systématiquement des parenthèses pour indiquer la priorité des calculs qui
ne sont pas élémentaires, et ainsi éviter des erreurs pouvant découler d'ambiguïtés !
2.2.12 Tests de comparaison : opérateurs <, >, <=, >=
Pour réaliser la comparaison des valeurs de variables selon les relations d'ordre mathématiques,
les opérateurs suivants sont utilisés :

<

>

<=

>=

Les symboles de ces opérateurs sont similaires à ceux des opérateurs mathématiques qu'ils désignent :
< : strictement inférieur ;
> : strictement supérieur ;
<= : inférieur ou égal ;
>= : supérieur ou égal.

χ

Ne pas inverser le symbole = avec le symbole < ou > !

Dans le cas contraire le message d'erreur suivant serait généré :

Error: The expression to the left of the equals sign is not a valid target for an
assignment.
La modalité d'utilisation de ces opérateurs est similaire à celle de l'opérateur ==. Ces opérateurs
sont à considérer comme une question posée à Matlab, qui répondra de façon binaire (0 : faux,
1 : vrai).

2.2.13 Tests de di érence : opérateur ~=
Un opérateur très utile est l'opérateur de di érence ~=. En pratique, cet opérateur s'écrit en
appuyant simultanément sur Alt Gr et 2, puis sur la touche =. Il convient de remarquer que les
deux caractères de l'opérateur s'a cheront simultanément après avoir réalisé cette manipulation.
En particulier, le symbole ~ (tilde) n'apparaît pas après le premier appui simultané sur Alt Gr
34

2.2. Manipulation de variables
et 2 (de façon générale, ~ s'a chera juste avant n'importe quel caractère tapé après
2).

Alt Gr et

~ représente l'opérateur logique not et symbolise la négation. ~= peut donc s'interpréter comme
"non" égal, c'est-à-dire di érent.
Pour tester si les valeurs de deux expressions (expression mathématique, variable, constante)
sont di érentes, il faut ainsi utiliser l'opérateur de di érence ~=. Le test renverra un résultat
logiquement opposé à celui qui aurait été obtenu avec l'opérateur de comparaison == : 1 (vrai)
si les expressions sont di érentes, 0 (faux) si elles sont égales.

2.2.14 Comparaison de nombres réels
Comme pour la majorité des langages de programmation, les nombres réels sont représentés par
un ensemble de bits (chacun valant 0 ou 1) en Matlab. La précision avec laquelle les nombres
réels sont représentés en mémoire est donc limitée, ce qui peut induire quelques surprises lors de
certains calculs ou tests de comparaison.
Mathématiquement, 0.5 - 0.4 - 0.1 vaut bien sûr 0. Est-ce le cas informatiquement, en Matlab ?
Opération mathématique

Command Window

Workspace

0.5 − 0.4 − 0.1 = 0?

>> 0.5 - 0.4 - 0.1 == 0 ;

Name Value
ans

0

Le résultat indique que 0.5 - 0.4 - 0.1 ne vaut pas 0 en Matlab. Combien cette expression
vaut-elle alors ?
Opération mathématique

Command Window

0.5 − 0.4 − 0.1

>> 0.5 - 0.4 - 0.1;

Workspace

Name
ans

Value

-2.7756e-17

0.5 - 0.4 - 0.1 est donc égal pour Matlab à -2.7756e-17, une valeur très faible, mais non
nulle ! Ce type de résultat est lié à la précision limitée avec laquelle les nombres réels sont
représentés en informatique, et a induit des branches de recherche spéci ques, toujours actives.

35

Chapitre 2. Variables et instructions élémentaires
Pour savoir si le résultat d'une évaluation peut être considéré comme nul, il convient de comparer
sa valeur absolue (obtenue grâce la fonction préprogrammée abs()) à la variable réservée eps,
dont la valeur est égale à 2.2204e-16 (eps est constitué des trois premières lettres de epsilon,
qui est la lettre grecque représentant généralement une très petite valeur en mathématiques) :
Opération mathématique

Command Window

0.5 − 0.4 − 0.1 = 0?

>> abs(0.5 - 0.4 - 0.1) < esp;

Workspace

Name Value
ans

1

Le résultat de ce test vaut 1. Il peut dont être considéré que 0.5 - 0.4 - 0.1 est nul en Matlab,
mais pour arriver à cette conclusion il a fallu utiliser la technique illustrée ci-dessus, qui est plus
complexe que la simple utilisation de l'opérateur de comparaison ==.

Pour évaluer si deux nombres réels sont égaux, il faut comparer la valeur absolue
de leur di érence à la variable eps !


vaut 21 . Cette valeur provient de la façon dont les nombres réels de type
double précision sont représentés en mémoire (sur 64 bits), sous la forme +/- a.2n ,
avec a codé sur 52 bits, n sur 11 bits et le signe sur 1 bit !
F eps

52

2.3 Manipulation de matrices
Matlab (dont le nom provient, pour mémoire, de la contraction de MATrix LABoratory) considère
que toutes les variables (y compris les scalaires) sont des matrices. Un scalaire est ainsi considéré
comme une matrice 1 x 1, comportant une ligne et une colonne.

2.3.1 Création d'une variable matricielle
De façon générale, une matrice se dé nit en indiquant la valeur de ses coe cients entre crochets
[...], ligne par ligne. Matlab est aussi exible que possible sur la syntaxe à utiliser pour séparer
les di érents coe cients :
les coe cients d'une même ligne peuvent être séparés par un espace ou une virgule ;
pour passer à la ligne suivante, il est possible d'utiliser le symbole ; ou d'appuyer sur

Entrée.

Dans tous les cas, il faut débuter la dé nition d'une matrice par la caractère [ et la terminer par
le caractère ].
La manière la plus intuitive de dé nir une matrice consiste à séparer les coe cients d'une même
ligne par un espace, et de passer à la ligne en appuyant sur Entrée. De cette façon, l'édition de la
matrice est visuellement très proche de la façon dont elle sera a chée (en particulier, les lignes
sont les unes en dessous des autres).

36

2.3. Manipulation de matrices
Le tableau suivant présente les di érentes syntaxes possibles :
Opération mathématique


1 2
M=
3 4


M=

1 2
3 4

Command Window



Workspace

>> M = [1 2
3 4];

Name

>> M = [1,2
3,4];

Name

M

M

Value

[1 2;3 4]

Value

[1 2;3 4]

>> M = [1 2 ; 3 4]

M=


M=

1 2
3 4



1 2
3 4



M =

Name
1
3

2
4

>> M = [1,2;3,4];

Value

M

[1 2;3 4]

Name

Value

M

[1 2;3 4]

Il est aussi possible d'utiliser la fenêtre Variable Editor associée à la fenêtre Workspace, pour
dé nir une variable matricielle à l'aide d'une interface de type tableur. Cette technique a été
décrite dans le Chapitre 1 : Interface de Matlab. Cette modalité de dé nition d'une variable
présente un intérêt principalement dans deux cas :
lorsqu'il s'agit de dé nir une matrice à partir de coe cients provenant d'un autre logiciel (Excel
par exemple) ;
lorsque l'on souhaite visualiser les coe cients d'une matrice qui comporte plus de 10 coe cients ; en e et, dans ce cas la colonne Value de la fenêtre Workspace n'a che plus la valeur
des coe cients de la matrice, mais seulement son nombre de lignes et de colonnes.
Bien évidemment, lors de la dé nition d'une matrice, certaines précautions doivent être prises
pour éviter de provoquer un message d'erreur. En particulier, il faut que le nombre de coe cients
soit le même sur l'ensemble des lignes.
Dans l'exemple suivant, la première ligne est dé nie avec deux coe cients, tandis que la seconde
n'en comporte qu'un seul. Cette syntaxe est incorrecte, dans la mesure où elle ne présente pas
de sens mathématique.
Opération mathématique

Command Window

Workspace

Absence de sens

>> M = [1 2 ; 3]
error

Name Value

37

Chapitre 2. Variables et instructions élémentaires
Le message d'erreur renvoyé par Matlab est alors le suivant :

Error using vertcat
Dimensions of matrices being concatenated are not consistent.
Ce message d'erreur indique très clairement l'origine du problème : littéralement, les dimensions
des matrices concaténées ne sont pas consistantes (c'est-à-dire compatibles entre elles). En e et,
confronté à l'instruction précédente, Matlab crée d'abord chaque ligne en mémoire, pour les
assembler ensuite (le terme informatique est concaténer ) a n d'obtenir la valeur de la variable
matricielle M. Les deux lignes dé nies par la syntaxe utilisée ne comportant pas le même nombre
de coe cients, Matlab ne peut pas les concaténer pour obtenir une matrice, et génère donc le
message d'erreur précédent. En tout état de cause, même sans avoir à analyser les étapes suivies
par Matlab pour exécuter l'instruction, le message d'erreur indique clairement que le problème
provient d'un problème de dimensions.

De façon générale, les messages d'erreur générés par Matlab sont explicites et
contiennent des informations précieuses qui peuvent contribuer à régler le problème
à l'origine du message d'erreur !


2.3.2 Création de variables matricielles particulières
Des matrices particulières peuvent être dé nies en utilisant des fonctions préprogrammées de
Matlab, c'est-à-dire des fonctions programmées par les développeurs du langage de programmation, et mises à la disposition de l'utilisateur (le terme préprogrammé s'oppose aux fonctions qui
sont écrites par l'utilisateur lui-même ; la façon d'écrire ses propres fonctions est présentée dans
le Chapitre 4 : Fonctions et décomposition d'une tâche complexe en tâches simples ).
De façon générale, une fonction présente des paramètres d'entrée et des paramètres de sortie.
Dans la suite, une fonction sera désignée par nom_de_fonction suivi de parenthèses ouvertes et
fermées ( ) ; lorsqu'il sera nécessaire de désigner les paramètres d'entrée, ceux-ci seront indiqués
entre les parenthèses.

2.3.3 Matrice particulière ne comportant que des 1 : fonction ones()
Pour dé nir une matrice dont la valeur de tous les coe cients est égale à 1, il est possible d'utiliser
la fonction ones() de la façon suivante :
Opération mathématique
Command Window
Workspace


1 1
Name
Value

>> Un = ones(3,2);
M = 1 1
Un
M = [1 1;1 1;1 1]
1 1
Les coe cients 3 et 2 entre parenthèses sont les paramètres d'entrée de la fonction ones().

38

2.3. Manipulation de matrices

2.3.4 Aide sur les fonctions préprogrammées
Pour savoir à quoi correspondent ces coe cients, il est possible d'utiliser l'aide de Matlab, selon
l'une des modalités suivantes :
1) cliquer sur Help dans le menu RESOURCES du bandeau de Matlab et sélectionner Documentation (ou appuyer sur F1), indiquer le nom de la fonction (ones) dans le champ Search
Documentation, cliquer sur la loupe, et en n sélectionner la ligne ones dans la liste des résultats
de la recherche ;
2) entrer doc ones, ou helpwin ones dans la fenêtre Command Window ;
3) entrer help ones dans la fenêtre Command Window.
En utilisant l'une des deux premières modalités ci-dessus, une fenêtre d'aide (en anglais) apparaît,
précisant le rôle de la fonction ones() et de ses paramètres d'entrée. En l'occurrence, il s'agit
d'une fonction qui renvoie (un autre terme usité est retourne, c'est-à-dire calcule et fournit
comme résultat) une matrice dont la valeur de tous les coe cients est égale à 1. Les dimensions
de la matrice renvoyée en paramètre de sortie (le terme retournée est aussi possible) sont
les suivantes : le nombre de lignes est égal à la valeur du premier paramètre d'entrée, et le nombre
de colonnes à la valeur du second paramètre d'entrée.
La troisième modalité a che des informations similaires, directement dans la fenêtre
Window de Matlab, et non pas dans une fenêtre dédiée.

Command

XPour

savoir comment utiliser une fonction préprogrammée de Matlab, a cher
l'aide en ligne à son sujet (grâce à l'instruction doc, help, ou helpwin) !
Il faut connaître le vocabulaire lié aux fonctions ! Une fonction dispose de paramètres d'entrée, réalise une tâche, et retourne ou renvoie un résultat par l'intermédiaire de ses paramètres de sortie !


2.3.5 Autres matrices particulières : fonctions zeros() et eye()
D'autres fonctions préprogrammées permettent de dé nir d'autres matrices particulières :
la fonction zeros() permet de dé nir une matrice ne comportant que des 0 ;
la fonction eye() permet de dé nir une matrice diagonale dont les coe cients valent 1 sur la
diagonale, et 0 en dehors de la diagonale.
Il convient de noter que la fonction eye() ne prend qu'un seul paramètre d'entrée, puisqu'une
matrice diagonale est forcément carrée. En conséquence, ce paramètre correspond à la fois au
nombre de colonnes et au nombre de lignes.
Le tableau suivant présente un exemple d'utilisation des fonctions zeros() et eye() :
Opération mathématique


0 0
Z = 0 0 
0 0


1 0
I=
0 1

Command Window

>> Z = zeros (3,2);
>> I = eye(2);

Workspace

Name
Z

Name
I

Value

[0 0;0 0;0 0]

Value

[1 0;0 1]
39

Chapitre 2. Variables et instructions élémentaires
Une alternative à l'utilisation de ces fonctions préprogrammées (ones(), zeros() et eye())
consiste bien sûr à dé nir ces matrices particulières "à la main" (c'est-à-dire en entrant explicitement la valeur de tous leurs coe cients). L'intérêt des fonctions préprogrammées réside dans
le gain de temps obtenu, qui est d'autant plus élevé que les dimensions des matrices à dé nir
augmentent.

2.3.6 Vecteur automatique : opérateur :
Un opérateur très utile est l'opérateur : qui permet de dé nir des vecteurs automatiques. Dans
sa syntaxe la plus simple, cet opérateur s'utilise en indiquant la valeur du premier et du dernier
coe cient du vecteur que l'on souhaite dé nir. L'opérateur renvoie alors un vecteur dont les
coe cients augmentent de 1 en 1 (une telle progression est dénommée incrémentation), entre
la première et dernière valeurs indiquées. Un exemple d'utilisation est donné dans le tableau
suivant :
Opération mathématique

Command Window

Workspace

>> V_auto = 1:5
V _auto = (1, . . . , 5)

V_auto =

Name

Value

V_auto

[1 2 3 4 5]

1 2 3 4 5
Le vecteur V_auto = [1 2 3 4 5] est ainsi dé ni en utilisant l'opérateur : sans que le pas
séparant deux coe cients successifs ne soit précisé (ce pas est égal à 1 par défaut).
La valeur du pas peut être dé nie explicitement. La syntaxe à utiliser est la suivante : il faut
indiquer la valeur du pas entre deux caractères :, après la valeur du premier coe cient et avant
la valeur du dernier. Par exemple, pour que deux coe cients successifs soient séparés de 2, il faut
utiliser la syntaxe suivante :
Opération mathématique

Command Window

V _pas2 = (1, 3, 5, . . . , 10)

>> V_pas2 = 1:2:10;

Workspace

Name

V_pas2

Value

[1 3 5 7 9]

Dans cet exemple, la valeur du premier coe cient étant impaire, tous les coe cients du vecteur
généré sont aussi impairs (si le premier coe cient avait été pair, il en aurait alors été de même
de tous les autres). Il convient de remarquer que le dernier coe cient du vecteur est 9, alors que
le dernier paramètre de l'opérateur est 10. Le résultat obtenu est néanmoins logique, puisque
le dernier coe cient obtenu par pas de 2 en partant de 1 et qui est inférieur à 10 est bien 9
(le coe cient suivant aurait été 9 + 2 = 11, qui est strictement supérieur à 10). Ainsi, lors de
l'utilisation de l'opérateur : le premier coe cient indiqué appartient au vecteur généré (sauf dans
certains cas évoqués ci-après), alors que le dernier coe cient doit être considéré comme la limite
à ne pas dépasser, et ne fait par conséquent pas forcément partie du vecteur obtenu.

40




Télécharger le fichier (PDF)

Polycopie_Informatique_1A_Chapitres_1_2_3_et_4.pdf (PDF, 1.6 Mo)

Télécharger
Formats alternatifs: ZIP







Documents similaires


tp1correctionmatlab
tp1
matlab beschreibung arabic
introduction matlab
exe corriges c
chapitre 4 generalites sur les fonctions st 1

Sur le même sujet..