Support Initiation À La Programmation MATLAB Partie 01-P
Support Initiation À La Programmation MATLAB Partie 01-P
Support Initiation À La Programmation MATLAB Partie 01-P
Polycopie du Cours
Abdallah BOUZITOUNA
P a g e 1 | 57
Partie 01
Introduction
Le logiciel commercial MATLAB développé par la société « MathWorks »,
MathWorks est un éditeur de logiciels américain, spécialisé dans les logiciels de calcul
mathématiques en particulier, scientifique et technique en général pour les ingénieurs et les
scientifiques.
Matlab représente un langage de programmation de quatrième génération et un
environnement de développement.
La nomination MAT-LAB (Matrix Laboratory : Laboratoire des Matrices), est dûe au
fait que ce logiciel permet de manipuler des matrices, d'afficher des courbes et des données,
de mettre en œuvre des algorithmes, de créer des interfaces utilisateurs, et peut s’interfacer
avec d’autres langages tel que le C, C++, Java, et Fortran.
Matlab permet de réaliser des simulations numériques basées sur des algorithmes
d'analyse numérique, et donc la résolution approchée d’équations différentielles, des
équations aux dérivées partielles ou de systèmes linéaires, et autres.
Ce langage n'inclut pas seulement des fonctions prédéfinies pour le calcul matriciel. Les
domaines d'application sont extrêmement variés, et on peut citer par exemple : le calcul
numérique dans le corps des réels et des complexes, le calcul de probabilités et des
statistiques, le calcul intégral et la dérivation, le traitement du signal, l'optimisation, le
traitement d'images, l'automatisme, …
Ce support de TPs rassemble les outils importants de MATLAB. Il couvre un champ
défini de fonctionnalités estimées utiles à la mise-en-œuvre pour résoudre certains
problèmes scientifiques : théoriques ou numériques (Mathématiques, Electronique,
Mécanique…) ou pratiques en temps réel dans les domaines : industriels, Médicaux,
Aéronautique et autres.
En utilisant MATLAB on peut résoudre ces problèmes en appliquant des méthodes
numériques qui sont performantes (convergence) et rapides (temps de calcul) et précisent.
Par ce document, nous souhaitons faciliter la prise en main de MATLAB, et présenter
les outils essentiels pour résoudre des problèmes numériques qu'un technicien, un ingénieur
ou un scientifique, peut rencontrer dans le cadre de son activité professionnelle.
Nous présenterons aussi les facilités qu'offre ce type d'outils pour le traitement,
l'exploitation et la présentation de données numériques, issues de calculs ou de mesures
expérimentales. Dans ce contexte, les courbes 2D ou 3D seront abordées, mais aussi tous les
problèmes liés à l'écriture et à la lecture des fichiers de données.
P a g e 3 | 57
Interface MATLAB
Le visuel de MATLAB est passé par plusieurs étapes de développement. On cite les deux
plus importantes :
Workspace
Command
History
P a g e 4 | 57
GUI : Graphical user interface
(interface d’utilisation graphique)
Simulink
P a g e 5 | 57
Mode de fonctionnement
1. Mode interactif : Matlab exécute les instructions au fur et à mesure qu'elles sont
données par l’utilisateur ; on peut le considérer comme un mode calculette.
2. Mode exécutif : Matlab exécute ligne par ligne un programme Matlab «M-file» qui est
une suite d'instructions Matlab écrites dans un éditeur de texte et sauvegardées dans un
fichier avec une extension « .m »
P a g e 6 | 57
Prise en main
La fenêtre principale de l’IDE « Command Window » permet d’exécuter les
commandes et les instructions MATLAB
» pi ;
Aide – Help :
MATLAB dispose d'une aide fonctionnelle fournie par l’éditeur et fonctionnelle. Elle
est accessible de différentes manières :
» lookfor {mot-clé}
Affiche tous les résultats possibles pour le mot clé désiré.
D’autre part la société MathWorks donne une documentation en ligne sur le site :
https://fr.mathworks.com/help/, avec les dernières mises à jour et possibilités permettait
l’exécution en ligne : https://fr.mathworks.com/products/matlab/live-editor.html#
P a g e 7 | 57
Type de données
Les variables sous MATLAB ne nécessite pas une déclaration de type ou de
dimension, car chaque variable prend le type et la taille de son contenu.
Lorsque Matlab rencontre un nouveau nom de variable, il crée la variable
correspondante et y associe l'espace de stockage approprié dans le « workspace », et si la
variable existe déjà, Matlab change son contenu, et lui alloue un nouvel espace de stockage
en cas de redimensionnement (le cas du tableau).
P a g e 8 | 57
Workspace
Recommandations :
• Le nom de variable peut contenir des chiffres, des lettres en minuscule ou en
majuscule, sans accent.
• Il doit commencer par une lettre.
• Il ne peut pas contenir de caractères spéciaux (espace ou ponctuation).
Pour une bonne pratique, choisir des noms "parlants", ni trop longs, ni trop courts ; Pour cela
la commande :
» namelengthmax
affiche la taille maximale du nom de variable
Remarque : une lettre majuscule est différente de la même lettre minuscule, donc il se peut
que deux variables prennent le même caractère minuscule/majuscule.
Le nom de toutes les constantes et fonctions prédéfinies en Matlab est en minuscules.
Nom d’identification
Zone
mémoire
Valeur Manipulations
P a g e 9 | 57
Pour connaître le type, la taille ou le contenu d’une variable s’il est numérique, logique ou
de type caractère on utilise les commandes suivantes :
» whos
Affiche les variables avec leurs tailles, le nombre de bytes et leurs types de données.
» who
N’affiche que les noms des variables.
» clear
Nettoyer le workspace et efface toutes les variables.
» clear mat*
Détruit toutes les variables dont le nom commence par « mat ».
» isnumeric nom_var
Renvois un résultat booléen : 1 = vrai et 0 = faux, si la variable est de type
numérique ou non (de même : ischar : pour les caractères, islogical : pour le type
booléen).
» class nom_var
En quelle classe la variable évolue :
logical : booléen, double : numérique, char : caractères…
» size ( nom_var )
Renvois la taille d’une variable avec le nombre de lignes et de colonnes (à chaque
variable est réservé un espace sous forme d’un tableau).
» size ( nom_var , 1 )
» size ( nom_var , 2 )
▪ Type Cell :
On peut créer des tableaux de chaînes de caractères où chaque cellule peut avoir une taille
spécifique. Ce n’est pas le cas avec la déclaration reconnue par d’autres langages :
P a g e 10 | 57
Pour cela on propose la déclaration suivante :
» Module = { 'Analyse' , 'Informatique' , 'Physique' , 'Chimie' }
Module =
'Analyse' 'Informatique' 'Physique' 'Chimie'
» Module = { 'Analyse' ; 'Informatique' ; 'Physique' ; 'Chimie' }
Module =
'Analyse'
'Informatique'
'Physique'
'Chimie'
Qui nous donne
» Module (3) 'Physique' Type caractère
» Module {3} Physique Type cellule
En utilisant les parenthèses ( ) on récupère la cellule alors que les accolades { } récupère la
valeur contenue dans la cellule.
Pas seulement les chaînes de caractères, mais aussi des tableaux avec des contenus
différents ; Un tableau de type cellules (cell array) permet de stocker différents types de
variables dans une seule.
» T {1,1} = 10 ; Numérique
» T {2,1} = rand (2,3) ; Matrice de 2 lignes et 3 colonnes
» T {1,2} = 'MATLAB' ; Chaîne de caractères
» T {2,2} = { 'Début' ; 'Fin' } ; Deux cellules de type caractère
» T
T= T : tableau de 4 cellules (2x2)
[ 10] 'MATLAB'
[ 2x3 double ] { 2x1 cell }
Dans certains cas quand on travaille avec des tableaux de types cellules, il pourrait être utile
d’appliquer des opérations ou des fonctions sur chaque cellule. Pour faire cela, on cite la
fonction cellfun dans laquelle il suffit d’utiliser le handle de la fonction (le nom en général),
le résultat est aussi sous forme de tableau de cellules.
» Noms = { 'Bouzitouna' , 'Dekhane' , 'Talai' } ;
» Prenoms = { 'Abdallah' , 'Azzeddine' , 'Zoubir' } ;
Par exemple on peut vérifier les noms qui commencent par ' Bo ' :
» strncmp ( Noms , 'Bo' , 2 )
ans =
1 0 0
ou concaténer les cellules une par une :
» strcat ( Noms , { ' ' } , Prenoms )
ans =
'Bouzitouna Abdallah' 'Dekhane Azzeddine' 'Talai Zoubir'
P a g e 11 | 57
Un autre exemple avec une cellule C définie par :
» C{1,1} = [1 2; 4 5];
» C{1,2} = 'Matlab';
» C{2,1} = pi;
» C{2,2} = 2 + 4i;
on applique quelques fonctions simples :
» D=cellfun('isreal',C) » len=cellfun('length',C)
D= 1 1 len = 2 6
1 0 1 1
» isdbl=cellfun('isclass',C,'double')
isdbl = 1 0
1 1
▪ Type Structure :
Il existe un autre type qui ressemble au type Cellule c’est les types Structures, qui sont
des types de données complexes, reconnues sous le nom (Enregistrement) dans d’autres
langages.
» Module.nom = 'Analyse' ;
» Module.coefficient = 4 ;
» Module.note = 14
Module =
nom : 'Analyse'
coefficient : 4
note : 14
Une structure est un tableau multidimensionnel dont l'accès aux éléments s'effectue par
l'utilisation des noms des champs de la structure. Sa nature convient parfaitement aux
données référencées (base de données, carnet d'adresses…, Tables).
Comme les tableaux de type cellules, les structures peuvent contenir tous les types de
variables (matrice, chaîne de caractère, tableau de cellules, structures ...).
Avec le code précédent on a créé une structure « Module » dont les trois champs sont
«nom», « coefficient » et « note ».
» Module(1,1).nom = 'Analyse' ;
» Module(1,1).coefficient = 4 ;
» Module(1,1).note = 14 ;
» Module(2,1).nom = 'Physique';
» Module(2,1).coefficient = 5;
» Module(2,1).note = 11;
P a g e 12 | 57
» Module(3,1).nom = 'Chimie';
» Module(3,1).coefficient = 4;
» Module(3,1).note = 13;
» Module(4,1).nom = 'Informatique';
» Module(4,1).coefficient = 3;
» Module(4,1).note = 17;
» Module(5,1).nom = 'Français';
» Module(5,1).coefficient = 2;
» Module(5,1).note = 16;
Module =
5x1 struct array with fields:
nom
coefficient
note
coefficient
Avec le code précédent on a créé un tableau de structures Module de dimension 5×1.
Utilisant l'initialisation d'une structure à l'aide de la fonction « struct » on peut directement
obtenir le même résultat :
» Module = struct ('nom' , {'Analyse' ; 'Physique' ; 'Chimie' ; 'Informatique' ; 'Français' } , ...
'coefficient' , { 4 ; 5 ; 4 ; 3 ; 2 } , ...
'note' , { 14 ; 11 ; 13 ; 17 ; 16 } )
Module =
5x1 struct array with fields:
nom
coefficient
note
« Chaque type de variables avec ses caractéristiques, est un outil, que l’utilisateur
exploite pour structurer et enrichir la résolution de ses problèmes via MATLAB. »
P a g e 13 | 57
Opérations Numérique et Logiques
On peut considérer MATLAB comme super calculatrice scientifique. Pour cela on peut
effectuer des :
o Opérations numériques : + , − , ∗ , / et ^ pour la puissance.
» 2+4*1.6-3/0.7+2^3
ans =
12.1143
Tenant compte des priorités de la puissance, la multiplication et la division, l’addition et la
soustraction.
o Opérations relationnelles et logiques :
Exemple
Indexation logique : soient X et L deux vecteurs tel que :
X : un vecteur quelconque
L : le vecteur logique de même taille que X
X(L) : les éléments de X où la condition L est vraie
» X = [1 5 3 9 4 7];
» L = X<=5
L=
1 1 1 0 1 0
» X(L)
ans =
1 5 3 4
Remarque : Si un calcul effectué n’est pas sauvegardé dans une variable, le résultat sera
automatiquement enregistré dans la variable par défaut ans (answer) et elle peut être utilisée
dans un autre calcul.
Le résultat calculé est affiché par défaut avec 5 chiffres significatifs, qui ne signifie pas
qu’on a une faible précision. La précision utilisée par MATLAB pour manipuler des
nombres réels est bien plus importante (nous le verrons sur des exemples pratiques). Si on
veut afficher les nombres avec plus de précision, on utilise la commande format long.
L'affichage par défaut est le format court : format short.
P a g e 14 | 57
Comme exemple, on calcule la variable 𝐗 = 𝟐/𝟕 et on affiche sa valeur dans chaque cas :
Remarque : Ces commandes ont un effet sur l'affichage des résultats, et non pas sur la
précision des résultats, qui reste toujours la même.
o Variables prédéfinies :
On peut citer quelques variables qu’on utilise souvent dans la pratique
ans La réponse la plus récente
pi Le nombre 3.141592653589793
i et j Les nombres complexes 𝑖 2 = 𝑗 2 = −1
Inf L’infini 1/0
NaN Not-a-Number Les formes
indéterminées : 0 / 0 …
realmax Le plus grand (petit) réel positif 1.797693134862316e+308
realmin 2.225073858507201e-308
eps L’epsilon machine ou la 2.220446049250313e-016
précision en virgule flottante
Remarque : Les noms des constantes ne sont pas réservés, c'est-à-dire qu'il est possible de
définir des variables de même nom. Dans ce cas, l'identificateur fera référence à la variable
définie par l'utilisateur et non plus à la constante MATLAB. On fera attention par exemple :
» pi = 0 ; cos(pi)
1
Pour que l'identificateur fasse à nouveau référence à la constante MATLAB, il suffit de
supprimer la variable de même nom sauvegardé en mémoire par la commande clear.
» clear pi
» cos(pi)
-1
P a g e 15 | 57
o Fonctions prédéfinies :
▪ Fonctions trigonométriques et leurs inverses :
P a g e 16 | 57
▪ Opérations sur les nombres complexes :
conj Le conjugué d’un complexe conj( 1 + i ) = 1 - i
abs Le module abs( 1 + i ) = √2
𝜋
angle L’angle associé au complexe sym(angle(1+i)) =
4
real La partie réel real(2+i) = 2
imag La partie imaginaire imag(2+i) = 1
▪ Opérations sur les nombres entiers :
gcd(var1,var2): Le plus grand diviseur commun gcd(2019,1440) = 3
des entiers var1 et var2
lcm(var1,var2) Le plus petit multiple commun lcm(2019,1440) = 969120
des entiers var1 et var2
factorial (var) Le Factoriel d’un entier factorial(3) = 6
On peut calculer le factoriel d’un nombre entier autrement :
P a g e 17 | 57