Académique Documents
Professionnel Documents
Culture Documents
MANUEL
DR GONPE
IUG-ISTA-ISA: INITIATION MATLAB 2022/2023
LICENCE LP GIM
Dr GONPE
DR GONPE
Chapitre II: Introduction à la programmation avec MATLAB
I. INTRODUCTION
Matlab est un logiciel de calcul numérique commercialisé par la société MathWorks1. Il a été
initialement développé à la fin des années 70 par Cleve Moler, professeur de mathématique à
l’université du Nouveau-Mexique puis à Stanford, pour permettre aux étudiants de travailler à
parti d’un outil de programmation de haut niveau et sans apprendre le Fortran ou le C.
Matlab signifie Matrix laboratory. Il est un langage pour le calcul scientifique, l’analyse de
données, leur visualisation, le développement d’algorithmes. Son interface propose, d’une
part, une fenêtre interactive type console pour l’exécution de commandes, et d’autre part, un
environnement de développement intégré (IDE) pour la programmation d’applications.
Matlab trouve ses applications dans de nombreuses disciplines. Il constitue un outil
numérique puissant pour la modélisation de systèmes physiques, la simulation de modèles
mathématiques, la conception et la validation (tests en simulation et expérimentation)
d’applications. Le logiciel de base peut être complété par de multiples toolboxes, c’est-à-dire
des boîtes à outils. Celles-ci sont des bibliothèques de fonctions dédiées à des domaines
particuliers. Nous pouvons citer par exemple : l’Automatique, le traitement du signal,
l’analyse statistique, l’optimisation…
MATLAB fait également partie d'un ensemble d'outils intégrés dédiés au Traitement du
Signal. En complément du noyau de calcul MATLAB, l'environnement comprend des
modules optionnels qui sont parfaitement intégrés à l'ensemble:
1- Voici une liste non exhaustive (loin de là) et en vrac de toolboxes, montrant la diversité des
3
Chapitre II: Introduction à la programmation avec MATLAB
fonctionnalités de Matlab :
Control System Toolbox Symbolic Math Toolbox Signal Processing Toolbox
Neural Network Toolbox Optimization Toolbox Parallel Computing Toolbox
Statistics Toolbox Fuzzy Logic Toolbox Image Processing Toolbox
Aerospace Toolbox Data Acquisition Toolbox Bioinformatics Toolbox
MATLAB Compiler Vehicle Network Toolbox Model-Based Calibration Toolbox
Financial Toolbox RF Toolbox System Identification Toolbox
4
Chapitre II: Introduction à la programmation avec MATLAB
analyses mathématiques très simples. En effet, l’utilisateur peut exécuter dans le mode
commande n’importe quelle fonction mathématique se trouvant dans la bibliothèque sans
avoir à recourir à la programmation. Pour l’interface graphique, des représentations
scientifiques et même artistiques des objets peuvent être créées sur l’écran en utilisant les
expressions mathématiques. Les graphiques sur MATLAB sont simples et attirent
l’attention des utilisateurs, vu les possibilités importantes offertes par ce logiciel.
MATLAB peut-il s’en passer de la nécessité de Fortran ou du C ?
La réponse est non. En effet, le Fortran ou le C sont des langages importants pour les
calculs de haute performance qui nécessitent une grande mémoire et un temps de calcul
très long. Sans compilateur, les calculs sur MATLAB sont relativement lents par rapport
au Fortran ou au C si les programmes comportent des boucles. Il est donc conseillé
d'éviter les boucles, surtout si celles-ci est grande.
2 – Objectifs
5
Chapitre II: Introduction à la programmation avec MATLAB
-…
Il existe également un espace d’échange de codes et applications Matlab :
File exchange : http://www.mathworks.com/matlabcentral/fileexchange/
L’objectif de ce document est double. L’étudiant doit acquérir une connaissance suffisante du
logiciel pour pouvoir travailler efficacement et comprendre les notions vues dans les travaux
pratiques d’Automatique, de Mécanique et d’Analyse Numérique. Le second objectif est de
proposer une initiation consistante à un logiciel puissant, très largement utilisé dans le monde
industriel et académique (laboratoires, universités/écoles).
II- GENERALITES
Pour lancer le programme, double-cliquez l'icône matlab sur le bureau. Une fenêtre logo fait
une brève apparition, puis dans la fenêtre de commande, le symbole ">>" apparaît : c'est
l'invite de MATLAB qui attend vos commandes. Vous pourrez quitter la session avec la
commande quit.
1 - Interface principale
L’environnement MATLAB se présente sous la forme d’un espace de travail (Workspace), où
un interpréteur de commandes exécute des opérations et des fonctions .
6
Chapitre II: Introduction à la programmation avec MATLAB
7
Chapitre II: Introduction à la programmation avec MATLAB
>> 3*5
ans =
15
>> 3*5;
>>
quit : Cette commande est utilisée pour quitter MATLAB, à la fin de notre travail.
clc :Pour effacer la fenêtre.
clear /clear all : Elle réinitialise l’environnement (le "workspace") en détruisant toutes les
variables actives en mémoire.
Autres commandes :
• what : liste les fichiers *.m et *.mat dans le directory utilisé
• who : liste les variables utilisées dans l’espace courant
• ans : réponse retournée après exécution d’une commande
Exemple :
>>x=[1:5,1]
x=
1 2 3 4 5 1 ou bien :
8
Chapitre II: Introduction à la programmation avec MATLAB
>>[1:5,1]
ans =
123451
4
Soit à calculer le volume suivant V = π R3: où R=4cm
3
+¿>¿ plus
- ¿>¿ moins
/¿>¿ division
* ¿>¿ multiplication
2
( ) 4 x −2 x+3
Exemple : P x = 3
x +1
x=2,
>>x=2
x=
2
>>P=(4*x^2-2*x+3)/(x^3+1)
P=
1.6667
Test ‘if’ Ce test s'emploie, souvent, dans la plupart des programmes. Un test ‘if’ est toujours suivi par
un ‘end’.
Exemple :
>>V=268.0826
V=
9
Chapitre II: Introduction à la programmation avec MATLAB
268.0826
>>if V>150, surface=pi*R^2, end
surface =
50.2655
L’opérateur ‘NON’ => Il est noté (ou symbolisé) par ‘~=’
Exemple :
>>R=4
R=
4
>>if R~=2, V=4/3*pi*R^3;end
L’opérateur ‘égal’ (==) dans ‘if’ Il est noté (ou symbolisé) par ‘==’.
Exemple :
>>R=4
R=
4
>>if R==4, V=4/3*pi*R^3;end
L’opérateur ‘ou’ => Il est noté (ou symbolisé) par ‘|’
Exemple : Si R=4 ou m=1, alors
>>if R==4 | m==1, V=4/3*pi*R^3;end
Autres opérateurs :
Exemples :
10
Chapitre II: Introduction à la programmation avec MATLAB
Les opérateurs ‘&’ et ‘|’ peuvent être utilisés dans la même chaîne :
>>if ((a==2 | b==3)&(c<5),g=1,end L’opérateur ‘if…….else…….elseif…….end’:
Exemples:
>>R=2, if R>3, b=1 ; elseif R==3, b=2, else b=0, end
Toutes les commandes que vous aurez tapé sous MATLAB peuvent être retrouvées et éditées grâce
aux
touches de direction. Appuyez sur ↑pour remonter dans les commandes précédentes, ↓pour
redescendre et
utilisez →et ←pour éditer une commande. Pour relancer une commande, inutile de remettre le
curseur à la
fin, vous appuyez directement sur la touche <Entrée>. Encore plus fort : vous pouvez retrouver
toutes les
commandes commençant par un groupe de lettres. Par exemple pour retrouver toutes les
commandes
commençant par <plot>, tapez plot, puis appuyez plusieurs fois sur ↑. Expérimenter cela dés
maintenant.
3- Variables et noms de variables :
3.1. Variables
Le calcul effectué plus haut n'a guère d'intérêt en soi. Il est bien sûr possible de conserver un résultat
de calcul et de le stocker dans des variables. Gros avantage sur les langages classiques : on ne déclare
pas les variables. Leur type (entier, réel, complexe) s'affectera automatiquement en fonction du
calcul effectué. Pour affecter une variable, on dit simplement à quoi elle est égale. Exemple :
>> a=1.2
a=
1.2000
11
Chapitre II: Introduction à la programmation avec MATLAB
On peut maintenant inclure cette variable dans de nouvelles expressions mathématiques, pour en
définir une
nouvelle :
>> b = 5*a^2+a
b=
8.4000
c=
297.7920
J'ai maintenant trois variables a, b et c. Ces variables ne sont pas affichées en permanence à l'écran.
Mais pour voir le contenu d'une variable, rien de plus simple, on tape son nom:
>> b
b=
8.4000
On peut aussi faire des calculs en complexe √−1 − s'écrit indifféremment iou j, donc pour définir un
complexe :
>> a+ b*i
ans =
1.2000 + 8.4000i
Le symbole * peut être omis si la partie imaginaire est une constante numérique. Tous les opérateurs
>> (a+b*i)^2
ans =
-69.1200 +20.1600i
12
Chapitre II: Introduction à la programmation avec MATLAB
13
Chapitre II: Introduction à la programmation avec MATLAB
Fonctions prédéfinies
Toutes les fonctions courantes et beaucoup parmi les moins courantes existent. La plupart d'entre elles
fonctionnent en complexe. On retiendra que pour appliquer une fonction à une valeur, il faut mettre
cette dernière entre parenthèses. Exemple :
>> sin(pi/12)
ans =
0.16589613269342
Voici une liste non exhaustive :
- fonctions trigonométriques et inverses : sin, cos, tan, asin, acos, atan
- fonctions hyperboliques (on rajoute "h") : sinh, cosh, tanh, asinh, acosh, atanh
- racine, logarithmes et exponentielles : sqrt, log, log10, exp
- fonctions erreur : erf, erfc
- fonctions de Bessel et Hankel : besselj, bessely, besseli, besselk, besselh
format :
>>format → affiche les résultats avec 4 chiffres après la virgule.
>>format long → affiche les résultats avec 16 chiffres après la virgule.
* break :
14
Chapitre II: Introduction à la programmation avec MATLAB
.
.
.
.
end
* clear : Efface toutes les variables existantes en mémoire
* clc :
Le second argument indique que la variable à introduire peut être un (ou des) caractère(s).
* fprintf(' ')
f → format de sortie
\n → retour à la ligne
L → variable.
2. fprintf(‘La longueur L= %e%f\n’,L)
écrit la valeur = variable V dans un fichier Nom_fichier. la variable V est avec 5 chiffres après la
virgule.
Pour l’ouverture et la fermeture des fichiers, on peut utiliser également ‘fopen’ et ‘fclose’. Ainsi, on
peut joindre à l’ouverture de fichier par exemple, la permission d’ouvrir uniquement, de lire
15
Chapitre II: Introduction à la programmation avec MATLAB
>>fich=fopen(‘Nom_fichier’,’ ?’)
? → représente la permission :
1.5 Vecteurs
Une matrice d’ordre 0 est un scalaire. Une matrice d’ordre 1 est un vecteur. Ce vecteur peut être
Exemples:
x =0 1 2 3
ou encore :
16
Chapitre II: Introduction à la programmation avec MATLAB
x=
Remarque:
Dans MATLAB, les numéros de lignes ou de colonnes commencent toujours par 1et non par Zéro
comme c’est le cas dans les autres langages de programmation. Exemple : x(0)n’existe pas.
Une matrice d’ordre supérieur à 1 est une matrices à deux dimensions. Exemple : x(i,j).
Exemples:
x=
012
456
y=
04
15
26
>>size(y)
ans =
17
Chapitre II: Introduction à la programmation avec MATLAB
32
y(:,2)=
y(2,:)=
Pour une matrice carrée A d’ordre n, on a sa matrice identité qui est donnée par la fonction ‘eye’.
>>A
A=
123
456
678
>>eye(size(A))
ans =
100
010
001
Dans MATLAB, il n’existe aucune distinction entre les nombres entiers, les nombres réels ou le
nombres complexes. Les nombres sont donc traités automatiquement. La précision des calculs est
18
Chapitre II: Introduction à la programmation avec MATLAB
affectée par le nombre de variables enregistrées et traitées. Les paramètres essentiels qui déterminent
cette précision dans un langage de programmation sont :
• le plus petit nombre positif : x_min
• le plus grand nombre positif : x_max
Autres fonctions :
sort(x) → donne une matrice ligne dont les éléments sont en ordre croissant :
>>sort(x)
ans =
0 2 15 sort(x’) → donne une matrice colonne dont les éléments sont en ordre croissant :
>>sort(x’)
ans =
0
2
15 sum(x) calcule la somme des éléments de la matrice x.
>>sum(x)
ans =
17
>>sum([4 2 1 0;8 9 3 12])
ans =
12 11 4 12
Pour trouver le maximum et le minimum du vecteur x, on utilise les fonctions max(x) et min(x) :
>>max(x)
ans =
15
>>min(x)
ans =
0 pour une matrice y quelconque, le max(y) et min(y) donnent :
>>y
y=
4210
8 9 3 12
>>max(y)
ans =
19
Chapitre II: Introduction à la programmation avec MATLAB
8 9 3 12
>>min(y)
ans =
4210
Les deux opérateurs sont les mêmes que pour les scalaires. A partir du moment où les deux tableaux
concernés ont la même taille, le tableau résultant est obtenu en ajoutant ou soustrayant les termes de
chaque tableau.
Ces opérateurs sont notés ".*", "./" et ".^" (attention à ne pas oublier le point). Ils sont prévus pour
effectuer
des opérations termes à terme sur deux tableaux de même taille. Ces symboles sont importants lorsque
l'on
Puisque l'on veut manipuler des matrices, il paraît intéressant de disposer d'un multiplication
matricielle.
Celle-ci se note simplement * et ne doit pas être confondue avec la multiplication terme à terme. Il va
de soi que si l'on écrit A*B le nombre de colonnes de A doit être égal au nombre de lignes de B pour
que la multiplication fonctionne.
La division a un sens vis- à-vis des inverses de matrices. Ainsi A/B représente A multiplié (au sens des
matrices) par la matrice inverse de B. Il existe aussi une division à gauche qui se note \. Ainsi A\B
signifie l'inverse de A multiplié par B. Ce symbole peut être aussi utilisé pour résoudre des systèmes
linéaires : si v est un vecteur, A\v représente mathématiquement A−1 v , c'est- à-dire la solution du
système linéaire Ax = v.
La puissance n-ièmed'une matrice représente cette matrice multipliée n fois au sens des matrices par
elle-même.
20
Chapitre II: Introduction à la programmation avec MATLAB
Pour bien montrer la différence entre les opérateurs ".*"et "*", un petit exemple faisant intervenir la
matrice
Cette notion est capitale pour la construction de courbes. Il s'agit de générer dans un vecteur une liste
de valeurs équidistantes entre deux valeurs extrêmes. La syntaxe générale est :
Ci-dessous, tableau tri-dimensionnel, pour accéder à l'élément situé sur la seconde ligne, troisième
colonne,
5. Nombres aléatoires :
Les nombres aléatoires peuvent être générés par la fonction ‘rand’. Son expression est ‘rand(n)’ où n
est le rang de la matrice.
21
Chapitre II: Introduction à la programmation avec MATLAB
Si n=3 par exemple, rand(3) va générer 3 lignes et 3 colonnes de la matrice dont les coefficients sont
aléatoires et compris entre 0 et 1.
Exemple :
>> rand(3)
ans =
0.4154 0.0150 0.9901
0.3050 0.7680 0.7889
0.8744 0.9708 0.4387
On peut donner à la variable z une initialisation dans un programme. Pour cela, on peut générer des
valeurs aléatoires grâce à la fonction ‘seed’ (c’est à dire ensemencer) → rand(‘seed’,z)
22
Chapitre II: Introduction à la programmation avec MATLAB
23
Chapitre II: Introduction à la programmation avec MATLAB
Les dimensions d’une matrice peuvent être acquises en utilisant la fonction size. Cependant, avec
une matrice A de dimension m × n le résultat de cette fonction est un vecteur de deux composants,
une pour m et l’autre pour n.
Ici, la variable d contient les dimensions de la matrice A sous forme d’un vecteur.
Pour obtenir les dimensions séparément on peut utiliser la syntaxe :
5.1 Génération automatique des matrices
24
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.
25
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 =
5
» A=[1 2 3];
» disp(A);
1 2 3
26
Chapitre II: Introduction à la programmation avec MATLAB
Exemple
Notre script peut ensuite être exécuté, soit en tapant son nom (sans l’extension) à l’invite de
commande, soit en cliquant sur le bouton « run » de l’éditeur (icône avec un triangle vert).
27
Chapitre II: Introduction à la programmation avec MATLAB
28
Chapitre II: Introduction à la programmation avec MATLAB
4. Instructions de contrôle
Les instructions de contrôle sous Matlab sont très 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
while (condition)
Ensemble d’instructions
end
générale suivante :
Tant que l’expression de while est évaluée à vrai (true), l’ensemble d’instructions
s’exécutera en boucle.
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
29
i=4
s=
Chapitre II: Introduction à la programmation avec MATLAB
1.1 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)
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
end
30
Chapitre II: Introduction à la programmation avec MATLAB
clear all ;
clc ;
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
Clear all ;
Clc ;
if x<0
y=x;
else
y=x^2;
end
dis(y)
31
Chapitre II: Introduction à la programmation avec MATLAB
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’ )
% lire a
a = input ('Entrez la valeur de a : '); % lire b
b = input ('Entrez la valeur de b : '); % lire c
c = input ('Entrez la valeur de c : '); % Calculer delta
delta = b^2-4*a*c ;
if delta<0
disp('Pas de solution') elseif delta==0
disp('Solution double : ') x=-b/(2*a)
% Pas de solution
else
disp('Deux solutions distinctes: ')
% Solution double
Deux solutions
x1=(-b+sqrt(delta))/(2*a) x2=(-b-
sqrt(delta))/(2*a)
%
end
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 :
32
Chapitre II: Introduction à la programmation avec MATLAB
Il existe la fonction solve prédéfinie en MATLAB pour trouver les racines d’une équation (et
beaucoup plus). Si nous voulons l’applique
>> solve('-2*x^2+x+3=0','x')
ans =
-1
3/2
switch (expression)
case valeur_1
Groupe d’instructions 1
case valeur_2
Groupe d’instructions 2
. . .
case valeur_n
Groupe d’instructions n
otherwise
end
Exemple :
x = input ('Entrez un
nombre : ') ; switch(x)
case 0
disp('x = 0 ')
33
case 10
disp('x = 10 ')
case 100
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
end
34
Chapitre II: Introduction à la programmation avec MATLAB
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).
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.
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')
36
Chapitre II: Introduction à la programmation avec MATLAB
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')
37
Chapitre II: Introduction à la programmation avec MATLAB
38
Chapitre II: Introduction à la programmation avec MATLAB
39