Chapitre II: Introduction à la programmation avec MATLAB
Chapitre II : Introduction à la programmation avec MATLAB
1. Introduction
Nous avons vu jusqu’à présent comment utiliser MATLAB pour effectuer des
commandes ou pour évaluer des expressions en les écrivant dans la ligne de commande, par
conséquent les commandes utilisées s’écrivent généralement sous forme d’une seule
instruction (éventuellement sur une seule ligne).
Cependant, il existe des problèmes dont la description de leurs solutions nécessite plusieurs
instructions, ce qui réclame l’utilisation de plusieurs lignes. Comme par exemple la recherche
des racines d’une équation de second degré (avec prise en compte de tous les cas possibles).
Une collection d’instructions bien structurées visant à résoudre un problème donné s’appelle
un programme. Dans cette partie, on va présenter les mécanismes d’écriture et d’exécution
des programmes en MATLAB.
2. Opérateurs de comparaison et opérateurs logiques
2.1 Les opérateurs de comparaison sont:
= = : égale à (X= = Y)
> : Strictement supérieur à (X > Y)
< : Strictement inférieur à (X< Y)
>= : supérieur ou égale à (X>= Y)
<= : inférieur ou égale à (X<= Y)
~= : différent de (X~=Y)
2.2 Les opérateurs logiques sont:
& : et (and) (X &Y)
│ : ou (or) (X │ Y)
- : Non (not) X (-X)
24
Chapitre II: Introduction à la programmation avec MATLAB
3. Les entrées/sorties
3.1 Entrée au clavier
L’utilisateur peut saisir des informations au clavier grâce à la commande x = input(...).
x=input ('Saisir une valeur de x : ');
Saisir une valeur de x : 5
x
x =
5
3.2 Sortie à l’écran
Pour afficher quelque chose à l’écran, l’utilisateur peut utiliser la commande disp, qui affiche
le contenu d’une variable (chaîne de caractères, vecteur, matrice...).
» A=[1 2 3];
» disp(A);
1 2 3
4. Instructions de contrôle
Les instructions de contrôle sous Matlab sont tr`es proches de celles existant dans d’autres
langages de programmation.
4.1 L’instruction while :
L’instruction while répète l’exécution d’un groupe d’instructions un nombre indéterminé de
fois selon la valeur d’une condition logique. Elle a la forme générale suivante :
while (condition)
Ensemble d’instructions
end
Tant que l’expression de while est évaluée à vrai (true), l’ensemble d’instructions s’exécutera
en boucle.
25
Chapitre II: Introduction à la programmation avec MATLAB
Exemple :
Faire un programme sous Matlab qui calcule la somme suivante:
S=1+2/2! +3/3!+… on arrête le calcul quand S>2.5
» s=1;i=1;f=1;
» while s<=2.5
i=i+1
f=f*i;
s=s+i/f
end
i=
2
s=
2
i=
3
s=
2.5000
i=
4
s=
2.6667
4.2 L’instruction if :
L’instruction if est la plus simple et la plus utilisée des structures de contrôle de flux.
Elle permet d’orienter l’exécution du programme en fonction de la valeur logique d’une
condition. Sa syntaxe générale est la suivante :
if (condition) if (condition)
instruction_1 ensemble d’instructions 1
instruction_2 ou bien else
. . . ensemble d’instructions 2
Instruction_N end
end
26
Chapitre II: Introduction à la programmation avec MATLAB
Si la condition est évaluée à vrai (true), les instructions entre le if et le end seront exécutées,
sinon elles ne seront pas (ou si un else existe les instructions entre le else et le end seront
exécutées). S’il est nécessaire de vérifier plusieurs conditions au lieu d’une seule, on peut
utiliser des clauses elseif pour chaque nouvelle condition, et à la fin on peut mettre un else
dans le cas ou aucune condition n’a été évaluée à vrai.
Voici donc la syntaxe générale :
if (expression_1)
Ensemble d’instructions 1
elseif (expression_2)
Ensemble d’instructions 2
....
elseif (expression_n)
Ensemble d’instructions n
else
Ensemble d’instructions si toutes les expressions étaient fausses
end
Exemple :
Faire un programme sous MATLAB qui résout le problème suivant:
1. y = x si x<0
2. y=x² si x>0
3. y=10 si x=0
x=input('introduire la valeur de x ');
Introduire la valeur de x 6
if x<0
y=x;
end
if x>0
y=x^2;
end
if x==0
y=10;
end
disp('la valeur de y est: '),y
27
Chapitre II: Introduction à la programmation avec MATLAB
La valeur de y est:
y=
36
Exemple :
Faire un programme sous MATLAB qui résout le problème suivant:
1. y = x si x<0
2. y=x² si x≥0
x=input('introduire la valeur de x ');
introduire la valeur de x 6
if x<0
y=x;
else
y=x^2;
end
La valeur de y est:
y=
36
Exemple :
Créons un programme qui trouve les racines d’une équation de second degré désigné par :
ax2+bx+c=0. Voici le M-File qui contient le programme (il est enregistré avec le nom
‘Equation2deg.m’ )
% Programme de résolution de l'équation a*x^2+b*x+c=0
a = input ('Entrez la valeur de a : '); % lire a
b = input ('Entrez la valeur de b : '); % lire b
c = input ('Entrez la valeur de c : '); % lire c
delta = b^2-4*a*c ; % Calculer delta
if delta<0
disp('Pas de solution') % Pas de solution
elseif delta==0
disp('Solution double : ') % Solution double
x=-b/(2*a)
else
disp('Deux solutions distinctes: ') %
Deux solutions
x1=(-b+sqrt(delta))/(2*a)
x2=(-b-sqrt(delta))/(2*a)
end
28
Chapitre II: Introduction à la programmation avec MATLAB
Si nous voulons exécuter le programme, il suffit de taper le nom du programme :
>> Equation2deg
Entrez la valeur de a : -2
Entrez la valeur de b : 1
Entrez la valeur de c : 3
Deux solutions :
x1 =
-1
x2 =
1.5000
Ainsi, le programme va être exécuté en suivant les instructions écrites dans son M-File. Si une
instruction est terminée par un point virgule, alors la valeur de la variable concernée ne sera
pas affichée, par contre si elle se termine par une virgule ou un saut à la ligne, alors les
résultats seront affichés.
Remarque :
Il existe la fonction solve prédéfinie en MATLAB pour trouver les racines d’une équation (et
beaucoup plus). Si nous voulons l’appliquer sur notre exemple, il suffit d’écrire :
>> solve('-2*x^2+x+3=0','x')
ans =
-1
3/2
29
Chapitre II: Introduction à la programmation avec MATLAB
4.3 L’instruction switch :
L’instruction switch exécute des groupes d’instructions selon la valeur d’une variable ou
d’une expression. Chaque groupe est associé à une clause case qui définit si ce groupe doit
être exécuté ou pas selon l’égalité de la valeur de ce case avec le résultat d’évaluation de
l’expression de switch. Si tous les cases n’ont pas été acceptés, il est possible d’ajouter une
clause otherwise qui sera exécutée seulement si aucun case n’est exécuté.
Donc, la forme générale de cette instruction est :
switch (expression)
case valeur_1
Groupe d’instructions 1
case valeur_2
Groupe d’instructions 2
. . .
case valeur_n
Groupe d’instructions n
otherwise
Groupe d’instructions si tous les cases ont échoué
end
Exemple :
x = input ('Entrez un
nombre : ') ;
switch(x)
case 0
disp('x = 0 ')
case 10
disp('x = 10 ')
case 100
disp('x = 100 ')
otherwise
disp('x n''est pas 0 ou 10
ou 100 ')
end
30
Chapitre II: Introduction à la programmation avec MATLAB
L’exécution va donner :
Entrez un nombre : 50
x n'est pas 0 ou 10 ou 100
4.4 L’instruction for :
L’instruction for répète l’exécution d’un groupe d’instructions un nombre déterminé de fois.
Elle a la forme générale suivante :
for variable = expression_vecteur
Groupe d’instructions
end
L’expression_vecteur correspond à la définition d’un vecteur : début : pas : fin ou début : fin
La variable va parcourir tous les éléments du vecteur défini par l’expression, et pour chacune
il va exécuter le groupe d’instructions.
Exemple :
Dans le tableau suivant, nous avons trois formes de l’instruction for avec le résultat
MATLAB :
for i = 1 : 4 for i = 1 : 2 : 4 for i = [1,4,7]
j=i*2 ; j=i*2 ; j=i*2 ;
L’instruction for
disp(j) disp(j) disp(j)
end end end
2 2 2
Le résultat de 4 6 8
l’exécution 6 14
8
31
Chapitre II: Introduction à la programmation avec MATLAB
5. Les graphiques et la visualisation des données en MATLAB
Partant du principe qu’une image vaut mieux qu’un long discours, MATLAB offre un
puissant système de visualisation qui permet la présentation et l’affichage graphique des
données d’une manière à la fois efficace et facile.
Dans cette partie, nous allons présenter les principes de base indispensables pour dessiner des
courbes en MATLAB.
5. 1 La fonction plot :
La fonction plot est utilisable avec des vecteurs ou des matrices. Elle trace des lignes en
reliant des points de coordonnées définis dans ses arguments, et elle a plusieurs formes :
Si elle contient deux vecteurs de la même taille comme arguments : elle considère les
valeurs du premier vecteur comme les éléments de l’axe X (les abscisses), et les valeurs du
deuxième vecteur comme les éléments de l’axe Y (les ordonnées).
Exemple:
>> A = [2, 5, 3,-2,0]
A=
2 5 3 -2 0
>> B = [-4, 0, 3,1,4]
B=
-4 0 3 1 4
>> plot(A,B)
Si elle contient un seul vecteur comme argument : elle considère les valeurs du vecteur
comme les éléments de l’axe Y (les ordonnées), et leurs positions relatives définiront l’axe X
(les abscisses).
Exemple :
>> V = [2, 1, 6, 8,-3, 0,5]
V=
2 1 6 8 -3 0 5
>> plot(V)
32
Chapitre II: Introduction à la programmation avec MATLAB
Si elle contient une seule matrice comme argument : elle considère les valeurs de chaque
colonne comme les éléments de l’axe Y, et leurs positions relatives (le numéro de ligne)
comme les valeurs de l’axe X. Donc, elle donnera plusieurs courbes (une pour chaque
colonne).
Exemple :
>> M = [0 -2 1;2 0 3;-3 3 -2;1 1 4]
M=
0 -2 1
2 0 3
-3 3 -2
1 1 4
>> plot(M)
Si elle contient deux matrices comme arguments : elle considère les valeurs de chaque
colonne de la première matrice comme les éléments de l’axe X, et les valeurs de chaque
colonne de la deuxième matrice comme les valeurs de l’axe Y.
Exemple :
>> K = [1 1 1;2 2 2; 3 3 3;4 4 4]
K=
1 1 1
2 2 2
3 3 3
4 4 4
>> M = [0 -2 1; 2 0 3;-3 3 -2; 1 1 4]
M=
0 -2 1
2 0 3
-3 3 -2
1 1 4
>> plot(K,M)
33
Chapitre II: Introduction à la programmation avec MATLAB
5. 2 Modification de l’apparence d’une courbe :
Il est possible de manipuler l’apparence d’une courbe en modifiant la couleur de la courbe, la
forme des points de coordonnées et le type de ligne reliant les points.
Pour cela, on ajoute un nouvel argument (qu’on peut appeler un marqueur) de type chaîne de
caractères à la fonction plot comme ceci :
plot (x, y, ’marqueur’)
Le contenu du marqueur est une combinaison d’un ensemble de caractères spéciaux
rassemblés dans le tableau suivant :
Couleur de la courbe Représentation des points
le caractère son effet le caractère son effet
b ou blue courbe en bleu . un point .
g ou green courbe en vert o un cercle
r ou red courbe en rouge x le symbole x
c ou cyan entre le vert et le bleu + le symbole +
m ou magenta en rouge violacé vif * une étoile *
y ou yellow courbe en jaune s un carré
k ou black courbe en noir d un losange
Style de la courbe v triangle inferieur
le caractère son effet ^ triangle supérieur
- en ligne plein < triangle gauche
: en pointillé > triangle droit
-. en point tiret p pentagramme
-- en tiret h hexagramme
5. 3 Annotation d’une figure :
Dans une figure, il est préférable de mettre une description textuelle aidant l’utilisateur à
comprendre la signification des axes et de connaître le but ou l’intérêt de la visualisation
concernée.
Il est très intéressant également de pouvoir signaler des emplacements ou des points
significatifs dans une figure par un commentaire signalant leurs importances.
34
Chapitre II: Introduction à la programmation avec MATLAB
Pour donner un titre à une figure contenant une courbe nous utilisons la fonction title
comme ceci :
>> title('titre de la figure')
Pour donner un titre pour l’axe vertical des ordonnées y, nous utilisons la fonction
ylabel comme ceci :
>> ylabel('Ceci est l''axe des ordonnées Y')
Pour donner un titre pour l’axe horizontal des abscisses x, nous utilisons la fonction
xlabel comme ceci :
>> xlabel('Ceci est l'axe des abscisses X')
Pour écrire un texte (un message) sur la fenêtre graphique à une position indiquée par
les coordonnées x et y, nous utilisons la fonction text comme ceci :
>> text(x, y, 'Ce point est important')
Pour mettre un texte sur une position choisie manuellement par la souris, nous
utilisons la fonction gtext, qui a la syntaxe suivante :
>> gtext('Ce point est choisi manuellement')
Pour mettre un quadrillage (une grille), nous utilisons la commande grid (ou grid on).
Pour l’enlever nous réutilisons la même commande grid (ou grid off).
Exemple :
Dessinons la fonction : y = -2x3+x2-2x+4 pour x variant de -4 jusqu’à 4, avec un pas = 0.5.
>> x = -4:0.5:4;
>> y = -2*x^3+x^2-2*x+4;
>> plot(x,y)
>> grid
>> title('Dessiner une courbe')
>> xlabel('l'axe des abscisses')
>> ylabel('l'axe des ordonnées')
35
Chapitre II: Introduction à la programmation avec MATLAB
5. 4 Utiliser plot avec plusieurs arguments
On peut utiliser plot avec plusieurs couples (x,y) ou triplets (x ,y, ‘marqueur’) comme
arguments.
Exemple :
L’exemple qui suit:
>> x = [0:0.01:2*pi];
>> plot(x,cos(x),x ,sin(x))
produit la sortie graphique suivante :
4. 5 Représentation graphique 3D
5. 5 Représentation graphique 3D
Supposons, par exemple que l'on veuille représenter la surface définie par la fonction
z=sin(xy) sur le carré suivant [-p/2,p/2]x[-p/2,p/2] à l'aide d'une grille de points 31x31. On
utilise la séquence de commandes :
» [xi,yi]=meshgrid(-pi/2:pi/30:pi/2); %génération d'une grille régulière
» zi=sin(xi.*yi);
» surf(xi,yi,zi,zi); % affichage de la surface
36
Chapitre II: Introduction à la programmation avec MATLAB
On peut modifier l'angle de vue via la commande view en spécifiant soit un point
d'observation ou deux angles d'élévation. Noter que la commande view(2) déclenche
directement une vue de dessus. On peut également choisir l'angle de vue à la souris en
activant l'option rotate3d on et on annule ce mode par la commande rotate3d off. De même
la commande zoom in permet d'effectuer des zooms à la souris, seulement en vue plane!
Il existe par ailleurs de nombreuses commandes permettant de contrôler les palettes de
couleurs utilisées pour la représentation graphique, en particulier la commande colormap.
Signalons une option intéressante permettant de lisser les couleurs : shading interp. Pour une
description exhaustive de toutes ces possibilités faire help graph3d.
5. 6 D’autres types de graphiques:
Le langage MATLAB ne permet pas uniquement l’affichage des points pour tracer des
courbes, mais il offre aussi la possibilité de tracer des graphes à bâtons et des histogrammes.
Pour tracer un graphe à bâtons nous utilisons la fonction bar qui a le même principe de
fonctionnement que la fonction plot.
Exemple :
>> X=[2,3,5,4,6];
>> Y=[1,4,5,2,1];
>> bar(X,Y)
37
Chapitre II: Introduction à la programmation avec MATLAB
Il est possible de modifier l’apparence des bâtons, et il existe la fonction barh qui dessine les
bâtons horizontalement, et la fonction bar3 qui ajoute un effet 3D.
Parmi les fonctions de dessin très intéressantes non présentées ici, on peut trouver : hist,
stairs, stem, pie, pie3, ...etc..
Nous signalons aussi que Matlab permet l’utilisation d’un système de coordonnées autre que
le système cartésien comme le système de coordonnées polaires (pour plus de détail chercher
les fonctions compass, polar et rose).
6 .Applications
1. Ecrire le code en MATLAB qui calcule la somme de la suite géométrique suivante :
# 2$
$&'
2. Ecrire le code en MATLAB qui calcule les sommes
*
# j)
+&'
Pour N = 6 et p égal à un, deux et trois.
38