















Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
dans ce cour tu peux programmer avec matlab
Typology: Study notes
1 / 23
This page cannot be seen from the preview
Don't miss anything!
















Dans le premier chapitre, nous avons vu comment utiliser la Command Window pour exécuter
des commandes ou pour Ă©valuer des expressions. Les commandes utilisĂ©es sâĂ©crivent
gĂ©nĂ©ralement sous forme dâune seule instructions (voir plusieurs dans une mĂȘme ligne).
Cependant, lorsque la tùche à réaliser devient plus complexe (plusieurs dizaines de ligne de
code) ou que lâon souhaite pouvoir la transmettre Ă quelquâun dâautre simplement, on utilise
la fenĂȘtre Editor. On a recours Ă lâutilisation des structures de programmation. Ces structures
se résument en deux outils incontournables de MATLAB : les scripts et les fonctions. Pour
faire des scripts complexes il est souvent nécessaire de faire appel aux structures de
programmation qui font lâobjectif de notre deuxiĂšme chapitre.
Pour visualiser et interprĂ©ter des rĂ©sultats, il est souvent recommandĂ© dâutiliser les
graphiques et les outils de visualisation 2D et 3D de MATLAB. On détaillera à la fin de ce
chapitre certains de ces outils de visualisation.
Les interfaces graphiques sont des outils efficaces qui vous permettent une interaction
conviviale avec les applications développées, que ce soit sur le plan introduction des entrées
ou affichage des résultats. Dans la derniÚre partie de ce chapitre, on apprend à comment
réaliser des interfaces graphiques avec MATLAB.
Lâinstruction dâaffectation đđđ â đŁđđđđąđ se code : đđđ = đŁđđđđąđ. Sâil nâexiste pas de variable
nommĂ©e đđđ, cette instruction crĂ©e une variable appelĂ© đđđ et lui affecteđŁđđđđąđ. Sinon, sa
valeur sera modifiĂ©e (remplacĂ©e) par la nouvelle đŁđđđđąđ. Lorsquâune variable est créée, son
nom apparait dans le Workspace avec un icone qui indique la nature de son contenu, et la
description de son encombrement mémoire.
Les noms de variables valides commencent par une lettre et sont en un seul mot. MATLAB
distingue les majuscules et les minuscules.
Il existe cinq types de variables sous MATLAB : les entiers, les réels, les complexes, les chaines
de caractĂšres et le type logique.
y=3+
y =
8
sa valeur :
x=3+9;
x
x =
12
reçoit en argument.
disp(2*15)
30
Lâinstruction đđđ đ(đĄđđ„đĄđ) provoque lâaffichage du texte quâelle reçoit en argument.
disp('hello world!!');
hello world!!
Lâinstruction đđđ đ(đđđ đđ đŁđđđđđđđ) provoque lâaffichage du contenu de la variable
quâelle reçoit en argument.
x=(6+4)*15;
disp(x);
150
đđđ đ đđđ et arrĂȘte lâexĂ©cution en indiquant lâendroit de lâerreur.
error('message')
??? message
quâune rĂ©ponse soit saisie (tapĂ©e) au clavier et validĂ©e par un đđđĄđĂ©đ. La rĂ©ponse sera
affectée à x aprÚs la validation.
x=input('saisir une valeur'); % saisir une valeur au clavier
saisir une valeur 5 % lâutilisateur tape 5
x % 5 est affecté a x x
=
5
Cette fonctionnalitĂ© sert Ă Ă©crire des commentaires (explications) Ă lâusage des
utilisateurs.
x=input('saisir une valeur'); %la commande input permet de saisir une valeur au clavier saisir
une valeur 6
valeurs logiques : 0 représente Faux/ False et 1 qui représente Vrai/ True.
Un test ou expression logique est une expression qui retourne une valeur logique. Le
Tableau 2.1 montre les opĂ©rateurs de comparaison qui sâappliquent sur des variables
numériques réelles et entre caractÚres.
Opérateur Objectif
x=15;
y=30;
x<y %x=15 est inférieur à y=30 affiche 1 vrai ans
=
1
x<=y %x=15 est inférieur à y=30 affiche 1 vrai ans
=
1
x==y %x est différent de y donc affiche 0 faux ans
=
0
(0<x)&(y<50) %30 affiche 1 vrai
ans =
1
(x>15)|(y>55) %affiche 0 faux
ans =
0
~(x>15) % affiche 1 vrai- la négation de x>15 qui est faux (0)
ans =
1
10&1 % 10 est considéré comme vrai 1. 1&1=1 vrai
ans =
1
10&0 %1&0=0 faux
ans =
0
ï Si đ„ et đŠ sont de type caractĂšre (lâaffectation est un caractĂšre), alors, les
commandes :
affectĂ©e Ă đŠ et 0 sinon ;
alphabĂ©tique conventionnel utilisĂ© par MATLAB, 0 sinon. Lâordre
utilisĂ© par MATLAB utilise les conventions suivantes : âČ âČ < ⯠<
âČ
âČ
âČ
âČ
âČ
âČ
âČ
âČ
âČ
âČ
âČ
. Les caractÚres accentués
sont plus loin dans la table.
ï On peut combiner les expressions logiques Ă lâaide des trois opĂ©rateurs
logiques (&, |, ~). Par exemple lâexpression (đ > 0)&(đ == đđđąđđ(đ))
retourne 1 (vrai) si la variable rĂ©elle đ contient un entier strictement positif
et 0 (faux) sinon.
>> A=[1 2 3;4 5 6] %définition de A
A =
1 2 3
4 5 6
>> B=[1 2 3;4 5 6] %définition de A
B =
1 2 3
4 5 6
>> A==B % tester si A et B sont égaux (leurs éléments sont-ils égaux ou non ?)
ans =
1 1 1
1 1 1
>> isequal(A,B) % tester si A et B sont égaux aussi (équivalente a A==B) ans
=
1
>> M=[]; % dĂ©finition dâune matrice M vide
>> isequal(M,A)
ans =
0
>> isempty(M) % tester si la matrice M est vide?
ans =
1
2) Les fonctions sous MATLAB
Une fonction câest un script qui commence par le mot đđđđđđđđ. Une fonction permet
dâĂ©tendre les possibilitĂ©s au-delĂ des fonctions prĂ©programmĂ©es par les dĂ©veloppeurs de
MATLAB. Elle reçoit en entrĂ©e variables dâentrĂ©es appelĂ©es aussi
. Elle donne en sortie variable appelĂ©e aussi . Les variables dâentrĂ©e et de sortie peuvent ĂȘtre des matrices. Attention,
lors de lâappel dâune fonction, câest lâordre des variables dâentrĂ©e et non pas leur nom qui
détermine leur utilisation.
On utilise la syntaxe suivante pour créer une fonction dont :
ï le nom est ;
ï qui prend en variables dâentrĂ©e ; ï qui a comme rĂ©sultat
Exemples de fonctions :
function [str]=fonc1(prenom)
str=['hello ', prenom];
end
pour son exécution, mais cette fois avec un paramÚtre en entré de
type chaine de caractĂšre:
1
2
đ
đđđ đđđđđĄđđđ đđą đđđđĂ©đ Ă© đđ đđđđđąđ đđ đ đđą đđđŠđđ đđ đ„
1
2
đ
ï Le Tableau 2.3 montre une comparaison entre une fonction et un script MATLAB.
Cette comparaison concerne la structure du programme et la façon de lâexĂ©cuter ou
de lâinvoquer dans la đ¶đđđđđđ đđđđđđ€.
Un programme (script) Une fonction
Structure
x=input('donner un nombre positif: ');
y=input('donner un nombre positif:
'); z=x+y; disp('la somme = '); disp(z);
function z=
somme(x,y) z=x+y; end
Exécution
pgm2 %le nom du programme suffit
donner un nombre positif: 5
donner un nombre positif: 15
la somme =
20
somme(3,7) % il faut les paramĂštres dâentrĂ©es ans
=
10
Utilisation
2*pgm2+4 %utilisation interdite
??? Attempt to execute SCRIPT pgm2 as a
function.
2* somme(5,4) +5 %utilisation permise
ans =
23
Tableau 2.3: Comparaison entre un programme et une fonction MATLAB
3) Création de programmes (scripts MATLAB)
Un programme MATLAB est un fichier stocké avec le suffixe. ou.. Un fichier programme
est appelĂ© le script de ce programme. Les noms de fichiers doivent ĂȘtre en un seul mot (pas
dâespace) et sans accent, ni tiret ni point (sauf le .M). On peut utiliser le caractĂšre de
soulignement â _â. On utilise la fenĂȘtre pour crĂ©er un script. Un script est une suite de
commande que lâon aurait tout aussi bien pu taper dans la Command Window.
Pour créer un nouveau script, suivez les étapes suivantes :
ou ;
Figure 2.1 : créer un nouveau script MATLAB (méthode 1)
AprĂšs lâutilisation de lâune des deux mĂ©thodes prĂ©cĂ©dentes, vous aurez une fenĂȘtre de
lâeditor MATLAB similaire Ă celle dans la Figure 2.3. Câest lĂ oĂč vous devez Ă©crire vos
scripts et fonctions MATLAB.
Câest possible dâexĂ©cuter un script MATLAB de deux façons diffĂ©rentes :
đ¶đđđđđđ đđđđđđ€ (voir Figure 2.5 oĂč tp11 câest le nom du script Ă exĂ©cuter).
Figure 2. 2 : créer un nouveau script MATLAB (méthode 2)
Figure 2. 3 : Editor MATLAB
Figure 2. 4 : enregistrer un script MATLAB
pour exĂ©cuter aller sur le bouton đđąđ, ou invoquer le nom du programme (nom de
sauvegarde)
pgm
str =
Hello World !!
quotient
On peut dĂ©duire lâalgorithme Ă©quivalent :{ đ
Le code MATLAB (Ă taper dans đžđđđĄđđ â đ·đđđąđđđđ â đđđđđđ€) est :
disp('donner deux nombres pour calculer le quotient a/b');
A=input('tapez a= ');
B=input(' b= ');
C=A/B;
disp('le quotient = ');
disp(C);
On exĂ©cute dans la đ¶đđđđđđ đđđđđđ€ de la mĂȘme façon que lâexemple 1 :
pgm2 donner deux nombres pour calculer le quotient a/b tapez a= 9 b= 3
le quotient =
3
Un script fait souvent appelle Ă des fonctions dĂ©finies par le programmeur (voir mĂȘme des
fonctions prédéfinies). La forme générale d'un programme simple, consistant en un script qui
appelle une fonction pour calculer et renvoyer une valeur, ressemble au diagramme illustrĂ© Ă
la Figure 2.7.
Exemple :
function f=factoriel(x)
f=1;
for i=2:x
f=f*i;
end
script doit faire appel Ă la fonction factoriel.m).
x=input('donner une valeur');
disp('le factoriel de x est: ');
factoriel(x) %%appel de la fonction factoriel
Figure 2.7. Forme gĂ©nĂ©rale dâun script appelant une fonction
4) Les structures de contrĂŽle
Les instructions se traduit comme suit sous MATLAB, mais
aucun mot ne traduit. Il y a trois versions qui traduit cette instruction :
1) Version courte (conditionnelle simple): Si test est une expression logique, le code de la
structure :
Devient
Exemple : La fonction suivante affiche! si le nom passé en argument
=âNawelâ, ne fait rien autrement.
function nom(x) if
x=='nawel'
disp('Bonjour!!');
end
LâexĂ©cution dans la donne:
pgm2('nawel') %si le nom = nawel le programme affiche Bonjour Bonjour!!
pgm2('laval') %si le nom est different de nawel, le programme nâaffiche rien
2) Version normale (conditionnelle alternative): Si test est une expression logique, le code
de la structure :
Devient
Exemple : le programme suivant permet dâafficher si un nombre est positif ou nĂ©gatif
x=input('donner nombre');
if x<0 disp('nombre
négatif'); else
disp('nombre positif'); end
En exécutant dans la , on aura :
donner nombre- 5
nombre négatif >>donner
nombre6 nombre positif
donner nombre
nombre positif
3) Version compliqué (conditionnelle imbriquée): quand on dispose de trois conditions
(cases) ou plus, on a recours Ă lâutilisation des si dans les rubriques sinon pour achever
tous les conditions. La structure est la suivante :
donner nombre
x = 0
donner nombre1000 x
= 1000
donner nombre2000 x
= 2000
donner nombre
x n'est pas 0 ni 1000 ni 2000
Une boucle permet de rĂ©pĂ©ter la mĂȘme commande un grand nombre de fois en faisant varier
un paramĂštre. On verra deux types de boucles : boucles while (tantque) et for (pour).
RĂ©pĂšte lâexĂ©cution dâun ensemble dâinstructions un nombre indĂ©terminĂ© de fois, selon
lâĂ©valuation dâune condition logique. Elle sâĂ©crit syntaxiquement comme suit :
| đđđđđđđđđđđđ Devient en MATLAB : | đđđđđđđđđđđđ
Tant que la condition du while (expression) est correcte (évaluée par un true ) la partie
instructions sera exécutée encore.
Exemple : écrire une fonction somme qui prend en entrée un réel , donne un
message dâerreur si , sinon calcule et donne en sortie le plus petit tel que la
somme est supérieure à .
Analyse :
La structure algorithmique de la fonction est :
LâarrĂȘt de la rĂ©pĂ©tition a lieu pour la premiĂšre valeur telle que.
Le code MATLAB équivalent est :
function N=somme(x)
if(x<=0)|(x>=20)
error('x non conforme');
else
N=0; S=0; %initialisation de N et S
while S<=x
N=N+1; %N est incrémenté (augmente) de 1
S=S+1/N; % $S_n$ est remplacée par $S_n+1$
end %end while end %end if
La boucle for rĂ©pĂšte lâexĂ©cution dâun groupe dâinstructions un nombre dĂ©fini de fois (le
nombre de rĂ©pĂ©titions voir itĂ©ration est connu Ă lâavance). Une boucle for se dĂ©finie
syntaxiquement comme suit :
Devient en MATLAB :
ï La boucle effectue instructions pour les valeurs comprises entre et
suivantes : et ainsi de suite. Par contre si
alors instructions nâest pas effectuĂ©e ; de mĂȘme si.
ï Si h=1, on ne peut pas lâĂ©crire, donc les Ă©critures et
sont équivalentes.
Exemple : écrire une fonction qui prend comme entrée un entier , et
donne en sortie!
Analyse : La structure algorithmique de la fonction est :
Le code MATLAB équivalent est :
function f=factorielle(n)
f=1;
for i=1:n
f=f*i; end
Dans les structures de boucles, un bloc d'instructions est exécuté un certain nombre de fois, et ce
nombre de fois peut mĂȘme ĂȘtre infini dans le cas de boucles while.
Deux instructions permettent d'interrompre l'exécution d'un bloc d'instructions d'une boucle.
l'itération suivante de la boucle for ou while.
totalement de la boucle for ou while, en ignorant les itérations suivantes
Exemple 1 (continue): le programme MATLAB qui permet dâafficher les nombres divisibles par 7 compris
entre 7 et 50. Lâinstruction continue permet si un nombre non divisible par 7 dâignorer son affichage avec
lâinstruction disp et passe au nombre suivant.
for n = 1:
if mod(n,7)
continue
end
disp(['Divisible by 7: ' num2str(n)]) end
LâexĂ©cution sur CW donne :
Divisible by 7: 7
Divisible by 7: 14
Divisible by 7: 21
Divisible by 7: 28
Divisible by 7: 35
Divisible by 7: 42
Divisible by 7: 49
Exemple 2 (break):
A=[3 4 5; 7 - 2 8; 2 1 0]
A =
3 4 5
7 - 2 8
2 1 0
plot(A)
ï Sâil y a un seul vecteur comme paramĂštre, alors elle considĂšre les valeurs du vecteur
comme les Ă©lĂ©ments de lâaxe Y (les ordonnĂ©es), et leurs positions relatives dĂ©finissons
lâaxe X (les abscisses).
Exemple :
v=[2 3 4 - 3 7 8]
v =
2 3 4 - 3 7 8
plot(v)
ï Si đ„ et đŠ sont des vecteurs, alors elle considĂšre les valeurs du premier vecteur comme
les Ă©lĂ©ments de lâaxe des abscisses et les Ă©lĂ©ments du deuxiĂšme comme ceux des
ordonnées.
v=[2 3 4 - 3 7 8]
v =
2 3 4 - 3 7 8
z=[7 1 4 - 2 5 9]
z =
7 1 4 - 2 5 9
plot(v,z)
ï Un troisiĂšme paramĂštre de type chaine peut ĂȘtre prĂ©sent. Il autorise des couleurs et des
formes variées pour les points de la courbe et le style du tracé. Cette chaine de caractÚres
peut contenir Ă la fois une couleur, un style de ligne et un marqueur de point. Si le style
de ligne est absent, seuls les marqueurs sont tracés (voir Tableau 2.4 ). La commande
devient alors : plot (x,y,âmarqueurâ).
Symbol signification Symbol signification Symbol signification
y Jaune (yellow) : Pointillé s Carré (square)
m Magenta -. Tirets-points d Diamant (diamond)
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3
0
1
2
3
4
5
6
7
8
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6
0
2
4
6
8
0
2
4
6
8
10
c Cyan _ Tirets ^ Triangle supérieur
r Rouge (red)
Point
v Triangle inférieur
g Vert (green) âŠ
Cercle > Triangle droit
b Bleu (blue) + Plus < Triangle gauche
w Blanc (white) - Trait p Pentagramme
k Noir (black) ***** étoile h hexagramme
Ă Croix
Tableau 2.4: chaines permettant la modification de la couleur, style de courbe et
la représentation des points
Exemple : tracer la fonction đŠ = đ đđ(đ„) avec đ„ â [0 ⊠2đ] avec un đ = đâ 6. En changeant le
marqueur on obtient différentes résultats (voir Tableau 2.5 )
x=0:pi/6:2*pi;
y=sin(x);
Tableau 2.5: résultats de graphs avec des marqueurs différents
MATLAB a des fonctions qui afficheront des courbes 3D (sur 3 axes). Pour tracer des courbes
3D on utilise la fonction prĂ©dĂ©finie de MATLAB plot3(X,Y,Z) oĂč X, Y et Z sont soit des vecteurs
soit des matrices. Ces fonctions affichent les points dans l'espace 3D. Cliquer sur l'icĂŽne de
rotation 3D puis dans la courbe permet Ă l'utilisateur de faire pivoter pour voir la courbe sous
différents angles. De plus, l'utilisation de la fonction de grid facilite la visualisation, comme le
montre la Figure 2.8.
Le code MATLAB permettant de tracer la courbe 3D de la Figure 2.8 est le suivant ; oĂč la
fonction zlabel est utilisée pour étiqueter l'axe z.
MATLAB dispose de plusieurs routines permettant de tracer des graphes spécifiques (voir
Tableau 2.6 ) :
Fonction signification
bar barres
errorbar Barre dâerreur
hist Histogramme
polar Coordonnées polaires
rose Histogramme angulaire
stairs Marche dâescalier
Tableau 2.6: fonctions de graphes spécifiques sous MATLAB
Exemple : voici un exemple de tracé avec les différentes fonctions dans le Tableau 2.6.
x=linspace(0,1,1000);
>> polar(sin(8.x.pi), cos(12.x.pi),'oy')**
>> x=linspace(0,8pi,1000);*
>> rose(x.x,20)*
>> x=linspace(0,4pi,20);*
>> errorbar(x,sin(x),0.1sin(x))*
>> x=linspace(0,4pi,20);*
>> bar(x,sin(x))
4 6 8 10 12 14
>> x=linspace(0,4pi,20);*
>> hist(sin(x))
>> x=linspace(0,4pi,20);*
>> stairs(x,sin(x))
Tableau 2.7: exemples de tracé avec fonctions spécifiques MATLAB
Les trois outils de haut niveau pour organiser les graphes sont :
ï : conservation/effacement des tracĂ©s prĂ©cĂ©dents ;
ï : nouvelle fenĂȘtre ;
ï : axes multiples dans une mĂȘme fenĂȘtre.
Si lâon dĂ©sire tracer plusieurs graphes, trois possibilitĂ©s existent :
ï Les tracer tous dans les mĂȘmes axes ;
ï Les tracer tous la mĂȘme fenĂȘtre, dans des axes distincts ; ï Les tracer dans des fenĂȘtres
différentes.
Et on peut évidemment mélanger ces options.
1) Graphes dans les mĂȘmes axes : Pour pouvoir tracer plusieurs graphes successivement
et en les superposant, il faut, aprÚs avoir effectué un premier tracé, exécuter au moins
une fois la commande : âđđđ đđ. Pour annuler son effet, il suffit de taper la commande
âđđđ đđđ. Exemple :
20
40
60
80
30
210
60
240
90
270
120
300
150
330
180 0
0
1
0
1
2
3
4
0 2 4 6 8 10 12 14
0
1