Académique Documents
Professionnel Documents
Culture Documents
1. TP 1 : INTRODUCTION A LA
PROGRAMMATION SOUS MATLAB
1.1. INTRODUCTION
Ce texte a pour but de familiariser l’étudiant avec la programmation et l’environnement MATLAB. On
commencera par présenter l’interface par défaut du logiciel ainsi que ses diverses composantes, puis on
expliquera comment réaliser les opérations les plus basiques sous l’environnement Matlab.
L’ordinateur ne se trompe jamais. Tant que tous ses composants fonctionnent correctement, l’erreur vient
TOUJOURS du programmeur. Petit indice : si l’ordinateur parvient à faire fonctionner Windows, c’est
qu’il fonctionne correctement. L’erreur proviendra donc dans 99,99% du temps de votre programme.
Le but de ce module est de vous initier à la programmation afin de profiter de la puissance de calcul des
ordinateurs. Nous nous focaliserons sur la programmation dans le langage Matlab car il s’agit d’un
langage très répandu, mais gardez en tête qu’il existe énormément d’autres langages (C, C++, Java,
Python, assembleur, etc.)
Ceci dit, il ne serait pas aisé de s’installer devant son ordinateur et d’écrire une succession ennuyeuse de 0
et de 1 pour la moindre opération. Il existe donc des langages informatiques. Les langages consistent en
Etablissement : USTHB
Document : TP 1 : Introduction à la programmation sous Matlab
Module : Info 3
Enseignant : L. Demri
un ensemble de mots-clés tels que « si », « sinon », « tant que », de symboles (=,+,*,<,>) et en une
syntaxe, c'est-à-dire un agencement prédéfini des mots clés et des symboles. Un langage informatique est
plus proche du langage humain et donc plus facile à mémoriser. Les mots-clés sont des mots simples
qu’on utilise tous les jours ; nous connaissons tous les symboles les plus utilisés, et la syntaxe est
également proche de la syntaxe de la plupart des langages parlés par les humains.
Le programmeur rédige donc plutôt son programme dans un langage informatique. Un petit programme
se chargera ensuite de la traduction de ce langage en langage machine compris par l’ordinateur (la
fameuse suite de 0 et de 1). Ce programme s’appelle un « compilateur ».
Vu que la traduction est faite par la machine elle-même et non par un humain, le programme doit être
écrit d’une manière très précise. Par exemple :
1.4. INTERFACE
Matlab utilise diverses sous-fenêtres dont chacune a un rôle précis. La figure suivante présente l’interface
MATLAB par défaut1 :
1
Il s’agit ici de la version 2009 ; si vous avez une autre version, vous devriez quand même pouvoir repérer les
mêmes modules
Etablissement : USTHB
Document : TP 1 : Introduction à la programmation sous Matlab
Module : Info 3
Enseignant : L. Demri
Nous présentons ici brièvement les fenêtres principales qui sont affichées et dont nous aurons besoin pour
ce premier TP :
D’autre part, si l’une des fenêtres Command Window ou Editor n’est pas affichée, il vous suffit d’aller
dans « Desktop » et de cliquer sur « Command Window » ou « Editor », en fonction de la fenêtre qui
vous manque. Les fenêtres non-affichées sont celles qui ne sont pas cochées.
Etablissement : USTHB
Document : TP 1 : Introduction à la programmation sous Matlab
Module : Info 3
Enseignant : L. Demri
>> 5+3
(Vous n’avez pas à taper les deux flèches ; Matlab ne les affiche que pour distinguer facilement les lignes
que vous tapez et celles qu’il aura lui-même affichées). Appuyez ensuite sur la touche entrée et vous
obtiendrez :
ans =
8
La réponse (« ans » pour « answer » en anglais) est immédiatement donnée en dessous de votre opération.
Dans la fenêtre Workspace, vous verrez qu’une variable nommée « ans » a été créée et qu’elle contient la
valeur 8. Si vous faites une nouvelle opération, par exemple 2+4, vous verrez que le résultat sera affiché
encore une fois dans la fenêtre de commandes, et dans le Workspace vous constaterez que « ans » a
maintenant pris la valeur de 6. En effet, tant que vous ne créez pas vos propres variables, le résultat de
toute opération est stocké dans la variable « ans ». Tout résultat précédent est perdu.
Afin de stocker une valeur dans une variable, la syntaxe est « nom de variable = valeur », par exemple :
>> A=4
Lorsque vous appuyez sur entrée, vous obtenez :
A =
4
Dans le workspace, vous devriez maintenant avoir une nouvelle variable A dont la valeur est bien 4.
Notez que la variable « ans » existe toujours dans le workspace et que sa valeur n’a cette fois ci pas
changé.
Il est ensuite possible de réaliser des opérations sur les variables créées, par exemple,
>> B=A/2
B =
2
Une nouvelle variable « B » est créée, son contenu est déterminé en divisant la variable « A » par 2. Bien
entendu, cela fonctionne uniquement parce que la variable « A » existait avant que B ne soit créée. Si
vous aviez écrit, par exemple, « Y » à la place de « A », vous auriez obtenu une erreur disant que la
variable Y n’existe pas.
Note importante : Il n’est pas possible de donner n’importe quel nom de variable : Le nom de votre
variable ne doit pas commencer par un chiffre (par exemple : « 1ereVariable »), ne doit pas
comporter d’espace (« Ma Variable »), et ne doit pas contenir d’accents (« numéro »). Les noms de
Etablissement : USTHB
Document : TP 1 : Introduction à la programmation sous Matlab
Module : Info 3
Enseignant : L. Demri
variables peuvent cependant comporter des chiffres tant qu’ils ne sont pas au début du nom
(« variable1 »). D’autre part, attention aux majuscules et minuscules : V1 et v1 seront 2 variables
différentes. Si vous créez V1 et que vous demandez v1, le compilateur vous dira que la variable v1
n’existe pas.
>> clear A
Dès que vous appuyez sur Entrée, la variable A disparaît du Workspace : elle n’est plus en mémoire. Afin
de supprimer toutes les variables d’un coup, il suffit d’écrire « clear » sans spécifier de variable.
La commande « clc » (clear command) permet d’effacer le contenu de la fenêtre de commandes (mais ne
supprime pas les variables en mémoire.
Afin d’utiliser l’éditeur, il faut commencer par créer un nouveau fichier. Allez dans FileNew et
choisissez « Blank M-File ». Un nouveau fichier s’ouvre dans l’éditeur. Alternativement, vous pouvez
cliquer sur l’icône ou utiliser le raccourci clavier CTRL+N (vous devez avoir cliqué sur l’éditeur afin
que le raccourci fonctionne). Dès que le nouveau fichier apparaît, vous pouvez commencer à écrire un
programme.
Remarque importante : Il est fortement recommandé de commencer tous vos programmes par un
clear afin de supprimer les variables qui existaient avant l’exécution de votre programme, afin qu’elles
n’interfèrent pas avec celles déclarées dans votre programme. Vous n’en voyez peut-être pas l’utilité
maintenant, mais ce simple réflexe vous évitera pas mal de problèmes pour de plus grands projets.
D’autre part, il est très utile de supprimer le contenu de la fenêtre de commandes au début de vos
programmes afin de facilement localiser vos derniers résultats. Prenez donc l’habitude de toujours
commencer vos programmes par les instructions clear et clc.
Comme premier exemple d’utilisation de l’éditeur, nous allons créer des vecteurs et des matrices. Pour un
vecteur ligne, tapez (dans l’éditeur) :
Etablissement : USTHB
Document : TP 1 : Introduction à la programmation sous Matlab
Module : Info 3
Enseignant : L. Demri
v1=[3,1,2]
Lorsque vous appuyez sur entrée, rien ne se passe, le programme ne s’exécutera que lorsque vous le
demanderez. Pour le moment, le curseur se place uniquement à la ligne suivante et attend la suite. Il existe
3 manières de lancer un programme :
1. CTRL + Entrée : Evaluation de la cellule actuelle. Ce raccourci ne fonctionne que si le mode cellule
est activé. Pour l’activer, cliquer sur le programme dans l’éditeur et aller dans CellEnable Cell
Mode.
2. F5 : Lance le programme affiché dans l’éditeur. MATLAB sauvegardera automatiquement toute
modification avant de lancer le programme. Si le programme n’a pas été enregistré au préalable sur le
disque dur, une boîte de dialogue demandera à l’utilisateur le nom du programme ainsi que
l’emplacement où il/elle souhaite l’enregistrer.
3. F9 : Il est possible d’évaluer un morceau de code sélectionné en appuyant sur F9. Pour cela,
sélectionner une portion d’un programme et appuyer sur la touche F9. (Pour lancer tout le programme,
il faut le sélectionner entièrement).
Il n’y a pas vraiment de « meilleure manière » de lancer le programme, tout dépend de votre situation. La
première méthode est utile quand vous voulez rédiger un petit programme et l’exécuter sans vouloir le
garder sur votre disque dur. La seconde méthode est la plus rapide car il suffit d’appuyer sur une seule
touche ; cependant, à la toute première exécution vous DEVEZ sauvegarder votre programme afin qu’il
s’exécute. Enfin, la troisième méthode est pratique si vous voulez rapidement tester une ou deux lignes de
code (sans les écrire dans la fenêtre de commandes).
Dans votre situation, la touche F5 est appropriée car vous allez sauvegarder votre programme. Appuyez
donc sur F5. Vu que vous n’avez pas encore sauvegardé votre programme, une boîte de dialogue s’ouvre
afin que vous spécifiiez un nom de programme et un emplacement.
Remarque importante : Les noms de vos programmes ne doivent contenir ni accent, ni espace, et ils ne
doivent pas commencer par un chiffre ! Si vous n’observez pas cette règle, MATLAB refusera d’exécuter
votre programme. Ainsi, ne nommez pas votre fichier « Lilia Tarek.m », « Boumediène.m » ou
« 1erTP.m ».
Dès que vous avez enregistré votre premier programme, il s’exécute et le résultat s’affiche dans la fenêtre
de commande :
v1 =
3 1 2
Comme précédemment, la variable ainsi que son contenu s’affichent dans le workspace. Il s’agit bien
d’un vecteur ligne
v2=[4;3;2]
A l’exécution, vous obtenez :
Etablissement : USTHB
Document : TP 1 : Introduction à la programmation sous Matlab
Module : Info 3
Enseignant : L. Demri
v2 =
4
3
2
Bien qu’on ait écrit le vecteur sur une seule ligne, le symbole « ; » est interprété comme un « retour à la
ligne ». Ainsi, pour créer une matrice, de 3 lignes et de 2 colonnes, on écrira :
M=[4,2;
3,9;
2,1]
Après exécution :
M =
4 2
3 9
2 1
Jusqu’à présent, le résultat de l’opération effectuée a toujours été affiché dans la fenêtre de commandes.
Généralement, on ne cherche à afficher que le dernier résultat de l’opération et pas la déclaration des
variables, vecteurs ou matrices, ou les résultats intermédiaires. Ceci est possible en ajoutant un point
virgule « ; » après les lignes dont le résultat ne nous intéresse pas. Par exemple :
x=1;
y=2;
z=x+y
A l’exécution, vous constaterez que les variables x et y ont bien été créées (elles existent dans le
workspace), mais le résultat des lignes correspondantes n’ont pas été affichées dans la fenêtre de
commandes. Le résultat de la somme, cependant, est affiché dans la fenêtre de commandes car la ligne ne
contient pas de point virgule.
Le point virgule sert également à effectuer plusieurs opérations sur une même ligne :
x=1;y=2;z=x+y
A l’exécution, vous obtiendrez le même résultat que précédemment : la création de x et y n’est pas
affichée dans la fenêtre de commandes, mais le résultat de la somme est affiché car il n’y a pas de point
virgule après la troisième instruction. Attention : si vous décidez de ne pas mettre de point virgule sur une
ligne pour que son résultat s’affiche, vous ne devez pas ajouter d’instructions à la fin de cette ligne. Le
compilateur refusera de compiler votre programme si vous faites cette erreur.
Expliquer ce que font certaines lignes de code à d’autres programmeurs ou au programmeur lui-même
Etablissement : USTHB
Document : TP 1 : Introduction à la programmation sous Matlab
Module : Info 3
Enseignant : L. Demri
Inscrire des informations relatives au programme, son but, son auteur, sa date de création, et les dates
où il a été modifié
C’est une méthode très rapide pour annuler l’exécution de certaines lignes de code sans les supprimer
complètement du programme (cela s’avère souvent utile).
Sous Matlab, on écrit des commentaires en commençant la ligne par le symbole « % ». Tout ce qui est
écrit après ce symbole et sur la ligne concernée sera affiché en vert (par défaut) et ignoré par le
compilateur :
>> v1
v1 =
3 1 2
Pour récupérer une seule valeur d’un vecteur ou d’une matrice, il faut utiliser des parenthèses afin de
spécifier quel élément on souhaite récupérer :
>> v1(2)
ans =
1
Matlab a consulté le vecteur v1, a cherché son deuxième élément, et l’a renvoyé comme réponse.
Si on souhaite récupérer plusieurs valeurs, on utilisera l’opérateur « : », qui peut être lu comme
« jusqu’à ». Si on veut récupérer les 2 premières valeurs, on écrira :
>> v1(1:2)
ans =
3 1
En langage Matlab l’instruction ci-dessus veut dire : « donne moi les valeurs de v1, de la première jusqu’à
la deuxième ».
Dans le cas d’une matrice avec plusieurs lignes et plusieurs colonnes, il faut séparer les lignes et les
colonnes avec une virgule « , ». Matlab considère toujours que vous commencez par spécifier la ligne
Etablissement : USTHB
Document : TP 1 : Introduction à la programmation sous Matlab
Module : Info 3
Enseignant : L. Demri
avant la colonne. Si l’on veut récupérer la valeur à la 2ème ligne et 1ère colonne de la matrice M ci-dessus,
on écrira donc:
>> M(2,1)
ans =
3
Si l’on veut récupérer les 4 éléments du bas de la matrice M, on écrira :
>> M(2:3,1:2)
ans =
3 9
2 1
Traduction : « donne moi les éléments de la matrice M qui sont sur la ligne 2 jusqu’à la ligne 3, et sur la
colonne 1 jusqu’à la colonne 2 ». N’oubliez pas de toujours commencer par spécifier les lignes !
En pratique :
Un fichier audio est en réalité un vecteur dont chaque valeur représente un échantillon à envoyer à un
haut-parleur à travers une conversion numérique-analogique. Si on veut découper un morceau du fichier
audio, on l’isolera dans une variable en utilisant une instruction comme « morceau =
signal(200:300) », et on sauvegardera morceau dans un nouveau fichier audio.
x=[3;2;1];
y=[1;2;3];
M = [x,y];
Résultat :
M =
3 1
2 2
1 3
Matlab a traité chacun des vecteurs x et y comme s’il s’agissait d’un seul nombre et les a assemblés un
après l’autre. Comme chacun est en réalité constitué de 3 éléments, la matrice résultante est une matrice à
3 lignes et à 2 colonnes. Si par contre on avait fait :
M = [x;y]
On aurait obtenu :
Etablissement : USTHB
Document : TP 1 : Introduction à la programmation sous Matlab
Module : Info 3
Enseignant : L. Demri
M =
3
2
1
1
2
3
Vu qu’on a mis un point-virgule « ; » entre x et y, Matlab a placé x dans une matrice, est revenu à la
ligne, et a placé y. Comme les deux vecteurs sont des vecteurs colonne, le résultat est un vecteur colonne
contenant les valeurs de x puis de y. Cette opération s’appelle la concaténation.
Ces opérations fonctionnent aussi avec des matrices : Si on a deux matrices A et B contenant chacune 2
lignes et 2 colonnes, on peut les assembler horizontalement :
A=[2,2;1,3];
B=[3,6;4,6];
C=[A,B]
%Résultat:
C =
2 2 3 6
1 3 4 6
ou verticalement :
D=[A;B]
%Résultat :
D =
2 2
1 3
3 6
4 6
Il faut cependant faire attention ! on ne peut pas concaténer n’importe quelle matrice avec n’importe
quelle autre : le résultat doit toujours être rectangulaire. Si vous essayez de concaténer un vecteur colonne
avec un vecteur ligne, Matlab vous reverra une erreur. Ceci est aussi valable si vous essayez d’assembler
une matrice 3x3 avec une matrice 2x2.
1.11. L’OPERATEUR « : » :
Comme mentionné plus haut, l’opérateur « : », dans le langage Matlab, peut être interprété comme
« jusqu’à ». Nous l’avons utilisé pour récupérer les valeurs de vecteurs ou de matrices, mais il peut être
utilisé pour créer des vecteurs ou des matrices.
Supposons que vous vouliez créer un vecteur contenant les valeurs 1, 2, 3, … et ainsi de suite jusqu’à
1000. Avec vos connaissances actuelles, la déclaration d’un tel vecteur serait très fastidieuse et elle
prendrait énormément de place dans votre programme. L’opérateur « : » permet de simplifier cette
syntaxe en ne spécifiant que les valeurs de début et de fin :
Etablissement : USTHB
Document : TP 1 : Introduction à la programmation sous Matlab
Module : Info 3
Enseignant : L. Demri
>> x=1:5
x =
1 2 3 4 5
Dans cet exemple, nous n’avons spécifié que 5 valeurs afin de vous montrer le résultat. Cependant, la
valeur 1000 aurait aussi bien fonctionné, tout comme la valeur 10000, 100000, 1000000, … et ainsi de
suite. Ceci dit, il y a une limite à partir de laquelle vous obtiendrez une erreur :
>> x=1:1000000000;
??? Maximum variable size allowed by the program is exceeded.
En clair, vous avez demandé la création d’une variable beaucoup trop grande, et la mémoire attribuée par
votre ordinateur à Matlab ne suffit pas. Le nombre maximal dépend de votre ordinateur, plus
spécifiquement de la taille de votre RAM (mémoire-vive).
Il est également possible de spécifier un « pas » d’avancement entre les valeurs du vecteur. Par exemple,
si on veut avoir tous les nombres pairs entre 0 et 10 on écrira :
>> x=0:2:10
x =
0 2 4 6 8 10
Comme vous le voyez, le pas est spécifié entre la valeur de départ et la valeur initiale. La syntaxe est donc
« valeur_initiale : pas : valeur finale ».
Cette manière de créer les vecteurs est particulièrement utile lorsqu’on veut générer une suite de nombres
compris entre deux entiers. Si l’on voulait créer un vecteur contenant toutes les valeurs comprises entre 0
et 1 avec un pas de 0.1, on écrirait :
>> x=0:0.1:1
x =
Columns 1 through 7
Columns 8 through 11
Vous remarquerez aussi qu’il y a 11 colonnes au lieu de 10, ce qui est tout a fait logique vu que le premier
élément est 0. Cela peut sembler trivial mais il est bon de se souvenir de ce détail.
Une dernière remarque : vous constaterez que pour les nombres décimaux on sépare la partie entière et la
partie décimale par un point. Le nombre pi s’écrira donc 3.14 et non 3,14. Ceci est très important car
Etablissement : USTHB
Document : TP 1 : Introduction à la programmation sous Matlab
Module : Info 3
Enseignant : L. Demri
l’écriture [3,4] donnera un vecteur à deux éléments tandis que l’écriture [3.4] donnera un vecteur à un
seul élément. D’autre part, si vous écrivez « x=3,14 », Matlab créera une variable x contenant la valeur
3, et une variable ans contenant la valeur 14.
Les fonctions permettent d’effectuer des calculs plus complexes. Par exemple, la fonction « cos »
renverra le cosinus d’un nombre entré, la fonction « sqrt » renverra sa racine carrée, et ainsi de suite.
Pour utiliser une fonction, la syntaxe est : « nomDeLaFonction(variable) ». Par exemple, pour la fonction
cosinus :
>> cos(2)
ans =
-0.4161
Certaines fonctions peuvent nécessiter plusieurs variables. Par exemple, la fonction « zeros » permet de
créer une matrice vide de n lignes et de m colonnes (n et m étant choisis par l’utilisateur). Dans ce cas, il
faut séparer les variables avec des virgules :
>> zeros(2,3)
ans =
0 0 0
0 0 0
D’autre part, les fonctions (sous Matlab) peuvent renvoyer plus d’un résultat à la fois. Par exemple, la
fonction « max » permet de renvoyer la valeur maximale d’un vecteur.
>> max([1,2,4,3])
ans =
4
Cependant, il est aussi possible de récupérer l’indice du plus grand élément. Pour cela, la syntaxe
devient : « [réponse1,réponse2]=nomDeLaFonction(variable) ». Dans notre cas :
Etablissement : USTHB
Document : TP 1 : Introduction à la programmation sous Matlab
Module : Info 3
Enseignant : L. Demri
valeur_max =
indice =
3
Le plus grand élément du vecteur est bel et bien le 3ème.
1.13. LA DOCUMENTATION:
La documentation peut être accédée en utilisant la commande doc dans la fenêtre de commandes. Afin
d’appeler la documentation d’une fonction particulière, tapez « doc nomDeLaFonction ». Par
exemple, pour consulter la documentation de la fonction cosinus, vous utiliserez « doc cos ».
Aucun cours ne peut vous apprendre toutes les fonctionnalités et tous les détails de Matlab. La
documentation est là pour vous apprendre à utiliser Matlab de manière experte, vous rafraichir la mémoire
en cas d’oubli, et pour vous expliquer certains aspects qui vous semblent complexes. La documentation
est rédigée en anglais (tout programmeur/ingénieur/scientifique se doit de maîtriser l’anglais !), et le texte
est un peu lourd à digérer car elle n’est pas rédigée dans un style pédagogique mais plutôt académique.
Mais vous pouvez être sûr(e) que toutes les informations s’y trouvent, y compris des explications
rigoureuses de certaines notions mathématiques !
La documentation est divisée en « Toolbox » (en anglais boîte à outils). Les fonctions de Matlab sont
effectivement organisées en « Toolbox » dont chacune est spécialisée dans un domaine mathématique ou
scientifique. Il existe par exemple le Toolbox « Aérospatial », le Toolbox « Bioinformatique », le
Toolbox « Economie », le Toolbox « Traitement d’images » et ainsi de suite. La documentation des
Toolbox est souvent rédigée sous forme de cours pour les étudiants cherchant à s’approfondir dans
certains domaines.
Afin de trouver une fonction spécifique, vous pouvez la chercher dans le navigateur d’aide. La
présentation de la documentation est assez différente selon les versions de Matlab et vous devriez
idéalement vous familiariser avec celle de votre version.
Etablissement : USTHB
Document : TP 1 : Introduction à la programmation sous Matlab
Module : Info 3
Enseignant : L. Demri
A retenir :
Renvoie les éléments situés sur les lignes 1 à 3 et sur les colonnes
M(1:3,2:3) 2 à 3 de la matrice M. (Il s’agit ici d’une matrice à 3 lignes et 2
colonnes).
Renvoie les éléments situés sur toutes les lignes de M et sur sa 2ème
M(:,2)
colonne.
Etablissement : USTHB
Document : TP 1 : Introduction à la programmation sous Matlab
Module : Info 3
Enseignant : L. Demri
Quelques opérateurs
Autres
2
Consultez le document « Comprendre la différence entre produit matriciel et produit simple » pour plus de
détails.