Polycopie Informatique 1A Chapitres 1 et 2 .pdf



Nom original: Polycopie_Informatique_1A_Chapitres_1_et_2.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 12/09/2014 à 17:11, depuis l'adresse IP 193.52.x.x. La présente page de téléchargement du fichier a été vue 798 fois.
Taille du document: 1.1 Mo (71 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 . . . . . . . . . . . . . . . . . . . . . .

i

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

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

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

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

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

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

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

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

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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

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 ~= . . . . . . . . . . . . . . . . . . . . . . . . .

35

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 . . . . . . . . . . . . . . . . . . . . . . . . .

53

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

Bibliographie

63

v

Table des matières

vi

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 deux premiers chapitres ; 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 :

6



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
Luc Jaouen
Fabien Chevillotte
Mathias Ngo
Raphaël Labayrade
Joachim Blanc-Gonnet
François-Xavier Bécot
Emmanuel Gourdon

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
1.2

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

7

Présentation de l'interface de Matlab

9

1.2.1
1.2.2
1.2.3
1.2.4
1.3

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

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 . . .

Résumé

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

. 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) et de
7

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

R2012b (et non pas sur Activate MATLAB R2012b ou Desactivate MATLAB

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 doublecliquant à 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 gé9

Chapitre 1. Interface de Matlab
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
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 )
10

1.2. Présentation de l'interface de Matlab
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 ;
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.
11

Chapitre 1. Interface de Matlab
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 1.7.
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 1.7 :
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. Doublecliquer 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, aucune commande n'est alors proposée, ce
qui semble rendre inopérante la navigation dans l'historique.
18

1.2. Présentation de l'interface de Matlab

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.
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.
19

Chapitre 1. Interface 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 !
χ

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

1.3.1

Résumé



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
et fonctions, que l'utilisateur souhaite exécuter.

.m, scripts

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 Details pour obtenir un aperçu des commentaires situés en entête d'un
chier .m.

1.3.3

χ

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
2.2

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

25

Manipulation de variables

25

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
2.3

Manipulation de matrices

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 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 . . . . . . . . . . . . . . . .

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

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

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

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

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

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

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

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

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

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

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

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

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 . . . . . . . . . . . . . . .
23

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

25
27
28
29
29
29
30
30
31
33
33
34
35
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.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 . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.5

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
2.6

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

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

2.2

10

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).

χ

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

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)
26

2.2. Manipulation de variables
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) ou
Matlab (e.g. size, ones) !

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

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 :

>> 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 !
27

Chapitre 2. Variables et instructions élémentaires
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.

F Il est possible d'a cher des informations supplémentaires sur les variables dans la
fenêtre Workspace !
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) ;
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. Manipulation de variables

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
a été utilisée avant chaque illustration d'une instruction, commande, fonction
ou fonctionnalité de Matlab.
clear all

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

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 !
29

Chapitre 2. Variables et instructions élémentaires
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 :

30

Opération mathématique

Command Window

E = 16

>> E = 16;

F = 16

>> F = 16;

Workspace

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'a ectation
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
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
une variable booléenne (on encore un
deux valeurs 0 et 1.

booléen), i.e. une variable qui ne peut prendre que l'une des

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

>> D == 19
D = 19?

ans =
1

Workspace

Name Value
D
ans

19
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 = et de comparaison == est une erreur classique !


χ

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.
32

2.2. Manipulation de variables

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 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

33

Chapitre 2. Variables et instructions élémentaires
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 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).
34

2.2. Manipulation de variables

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 et 2 (de façon
générale, ~ s'a chera juste avant n'importe quel caractère tapé après Alt Gr et 2).

~ 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

2.3

52

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

Command Window



1 2
M=
3 4

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
M=
3 4

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


1 1
M = 1 1 
1 1

Command Window

>> Un = ones(3,2);

Workspace

Name
Un

Value

M = [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

2.3. Manipulation de matrices
Le pas séparant deux coe cients peut être un réel, et n'est pas forcément un entier. Par exemple,
un vecteur dont le premier coe cient est 0.2, le dernier 0.5, avec un pas séparant deux coe cients
successifs égal à 0.1, est obtenu de la façon suivante :
Opération mathématique

Command Window

V _reel = (0.2, 0.3, 0.4, 0.5)

>> V_reel = 0.2:0.1:0.5;

Workspace

Name

V_reel

Value

[0.2 0.3 0.4 0.5]

En particulier, le pas peut être négatif (entier ou réel). Par exemple, un vecteur dont les coe cients
forment une suite décroissante de -7 à -9 par pas de -1 est obtenu de la façon suivante :
Opération mathématique

Command Window

V _negatif = (−7, −8, −9)

>> V_negatif = -7:-1:-9;

Workspace

Name

V_negatif

Value

[-7 -8 -9]

En e et, l'écart entre deux coe cients successifs est dans ce cas égal à -1. Si le pas avait été dé ni
égal à 1, pour les mêmes valeurs du premier et dernier coe cients, Matlab aurait renvoyé un vecteur
vide, dans la mesure où il n'existe aucun coe cient respectant les conditions induites par l'opérateur
: (en e et, il n'existe pas de coe cient compris entre -7 et -10, dont l'écart avec son prédécesseur est
1). Lorsque l'opérateur : est utilisé avec de tels paramètres, Matlab renvoie une matrice vide :
Opération mathématique

Command Window

V=∅

>> V = -7:1:-10;

Workspace

Name Value
V

[ ]

Il faut donc considérer les paramètres de l'opérateur : comme des conditions à respecter, et avoir
conscience que ces conditions peuvent être incompatibles. Dans ce cas Matlab renvoie un vecteur vide.

♥ Il est indispensable de savoir utiliser l'opérateur : pour générer des vecteurs automatiquement !

2.3.7 Fonction isempty()
Dans le cas précédent, la fonction préprogrammée isempty() (qui signi e est vide en anglais)
permet de savoir si un vecteur (ou une matrice) est vide. Cette fonction prend en paramètre un vecteur
ou une matrice à tester, et renvoie une variable booléenne : 1 (vrai) si le vecteur ou la matrice est vide,
0 (faux) sinon.

41

Chapitre 2. Variables et instructions élémentaires
Voici le résultat retourné par la fonction isempty() lorsqu'elle est appliquée au vecteur V précédent :

Opération mathématique

Command Window

V=∅

>> V = -7:1:-10;

V = ∅?

>> isempty(V);

Workspace

Name Value
V

[ ]

Name Value
V
ans

[ ]
1

De nombreuses autres fonctions préprogrammées permettent d'obtenir des informations sur des
variables. Certaines d'entre elles (e.g. isnan(), isinf()) sont présentées dans le Chapitre 5 : Fonctions
Matlab usuelles.

2.3.8 Lecture du coe cient d'une matrice
Pour lire un coe cient d'une matrice, il su t d'indiquer le nom de la matrice, suivi des coordonnées
(ligne, colonne) du coe cient entre parenthèses ( ), sans utiliser d'espace entre le nom de la matrice
et la parenthèse ouverte (. Dans l'exemple présenté dans le tableau suivant, une matrice 2 x 2 est créée,
puis le coe cient situé sur sa deuxième ligne et première colonne est lu :

Opération mathématique


1 2
M=
3 4

Command Window

>> M = [1 2
3 4];
>> M21=M(2,1)

M (2, 1)

M21 =
3

Workspace

Name
M

Name
M
M21

Value

[1 2;3 4]

Value

[1 2;3 4]
3

Si l'on essaye de lire un coe cient qui n'existe pas (c'est-à-dire dont au moins l'une des coordonnées
(ligne, colonne) est supérieure à la dimension correspondante de la matrice (nombre de lignes ou nombre
de colonnes)), Matlab génère un message d'erreur :

Opération mathématique


1 2
M=
3 4

Command Window

>> M = [1 2
3 4];

Name

>> M31=M(3,1)

Name

M (3, 1)

error
42

Workspace

M

M

Value

[1 2;3 4]

Value

[1 2;3 4]




Télécharger le fichier (PDF)

Polycopie_Informatique_1A_Chapitres_1_et_2.pdf (PDF, 1.1 Mo)

Télécharger
Formats alternatifs: ZIP







Documents similaires


tp1
matlab beschreibung arabic
tp1correctionmatlab
syntaxe javascript
chapitre 4 generalites sur les fonctions st 1
introduction matlab

Sur le même sujet..