MATLAB Diapos Partie1
MATLAB Diapos Partie1
MATLAB Diapos Partie1
Pr M.N. KABBAJ
2021-2022
P LAN
Introduction
• MATrix LABoratory: Un standard pour le calcul scientifique aussi bien
dans le milieu universitaire qu’industriel
• Logiciel qui permet, de manière interactive:
– de faire des calculs matriciels;
– d’analyser des données;
– de visualiser les résultats en 2D et 3D…
• Langage de programmation adapté pour les problèmes spécifiques
• Toolboxes: ensemble de fonctions (fichiers .m) développées pour des
domaines d’applications spécifiques;
• SIMULINK: extension graphique interactive de MATLAB. Le plus
répandu des outils de conception de systèmes.
Prise en main de MATLAB
Introduction
Prise en main de MATLAB
Installation et démarrage
• MATLAB doit être installé comme indiqué dans le manuel utilisateur (MATLAB
User’s Guide)
• Pour lancer l’exécution de MATLAB :
- Sous Windows, il faut effectuer un double clic sur l’icône de MATLAB
- Sous d’autres systèmes, se référer au manuel d’installation.
L’invite >> de MATLAB doit alors apparaître, à la suite duquel vous entrez les
commandes.
• Au démarrage, le logiciel ouvre une fenêtre principale divisée en quatre sous-
fenêtres :
• Current Folder : gère l’emplacement des fichiers. Celui-ci sera utile pour le
travail avec les m-files.
• Command Window : fenêtre d’interaction avec Matlab.
• Workspace : fenêtre qui permet de gérer les variables utilisées.
• Command History.
Prise en main de MATLAB
Prise en main de MATLAB
Fonctionnement
Mode Interactif : Les instructions sont exécutées au fur et à mesure qu’elles
sont entrées par l’utilisateur.
Mode programme : Matlab exécute, ligne par ligne, les instructions d’un
fichier .m
Type de variables : unique c’est la matrice, pas de déclaration de types, de
même, l’utilisateur ne s’occupe pas de l’allocation
mémoire
Prise en main de MATLAB
L’espace de travail
Gérer les accès fichiers
>> pathtool
Prise en main de MATLAB
pi : 3.14159265358979
eps : 2.2204e-16 (distance entre 1.0 et le flottant le plus proche)
Inf : (Infinite) nombre infini
NaN : (Not a Number) n’est pas un nombre, exprime parfois une
indétermination
ans : variable contenant la dernière réponse
Prise en main de MATLAB
>> cos(pi/3)
ans =
0.5000
>> log(1.5)
ans =
0.4055
>> j^2
ans =
-1
Prise en main de MATLAB
Sauvegarde
Le Workspace : On peut sauver l’état de la session en cours dans un
fichier .mat. Pour cela, dans la barre d’outils, dans l’onglet Variable cliquer sur
Save Workspace, et vous choisissez l’emplacement et le nom de votre fichier.
Matlab sauvegarde ainsi le nom et la valeur de chacune des variables. La
prochaine fois que vous utilisez Matlab, au moyen de l’onglet File /Open vous
retrouvez le Workspace dans l’état dans lequel vous l’avez laissé.
Les m-files : Il s’agit d’un fichier dans lequel on regroupe des commandes.
C’est très utile pour aborder des problèmes plus complexes et éviter de
retaper les mêmes commandes plusieurs fois.
Prise en main de MATLAB
>> doc
>> help nom de commande: fournit de
l’aide sur l’utilisation de la commande
• On définit un vecteur colonne en donnant la liste de ses éléments séparés au choix par des points
>> x = 1.1:0.2:2
x=
1.1000 1.3000 1.5000 1.7000 1.9000
>> x = linspace(1.1,1.9,9)
x=
Columns 1 through 7
1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000
Columns 8 through 9
1.8000 1.9000
Les vecteurs et matrices
rand(1,n): vecteur ligne de longueur n dont les éléments sont générés de manière aléatoire entre
0 et 1
rand(m,1): vecteur colonne de longueur m dont les éléments sont générés de manière aléatoire
entre 0 et 1
Les vecteurs et matrices
D'une façon générale, on définit une matrice en donnant la liste de ses éléments entre crochets.
Signalons que MATLAB admet d'autres façons d'écrire les matrices. Les éléments d'une ligne de la
matrice peuvent être séparés au choix par un blanc ou bien par une virgule (,). Les lignes quant à
elles peuvent être séparées au choix par le point-virgule (;) ou par un retour chariot.
>> A = [1,3;4,2]
A=
1 3 Sous MATLAB le premier
4 2 indice d’un tableau est 1
>> A = [1 3
4 2]
A=
1 3
4 2
Les vecteurs et matrices
ième élément de la i-ième ligne de la matrice A. Ainsi A(2,1) désigne le premier élément de la
• Le nombre m de lignes et le nombre n de colonnes est obtenu par l'instruction [m,n] = size(A).
• On peut construire une matrice << par blocs >> . Si A, B, C, D désignent 4 matrices (aux
par l'instruction K = [A B ; C D]
Les vecteurs et matrices
>> A = magic(5)
Si l'on souhaite échanger les colonnes 2 et 3 de la matrice A une
A=
17 24 1 8 15
première possibilité consiste à exécuter:
23 5 7 14 16
> v = A(:,2); A(:,2) = A(:,3); A(:,3) = v;
4 6 13 20 22
10 12 19 21 3 >> A
11 18 25 2 9 A=
>> A(1,:)
17 1 24 8 15
ans =
17 24 1 8 15 23 7 5 14 16
>> A(:,2) 4 13 6 20 22
ans = 10 19 12 21 3
24
5 11 25 18 2 9
6
12
18
Les vecteurs et matrices
Les matrices (6): Manipuler des matrices
Possibilité de n'extraire qu'une partie des éléments des lignes et colonnes d'une matrice. Si L et C
sont deux vecteurs d'indices, A(L,C)désigne la matrice issue de la matrice A dont les éléments sont
les A(i,j) tels que i soit dans L et j soit dans C.
>> A = magic(5)
A=
Seconde possibilité pour échanger les colonnes 2 et 3 de la matrice A
17 24 1 8 15 consiste à exécuter:
23 5 7 14 16
4 6 13 20 22 J = [1 3 2 4 5]; A = A(:,J)
10 12 19 21 3
A=
11 18 25 2 9
>> L=[1 3 5]; C=[3 4]; 17 1 24 8 15
>> A(L,C)
ans = 23 7 5 14 16
1 8 4 13 6 20 22
13 20
25 2 10 19 12 21 3
>> A(1:2:5,3:4) 11 25 18 2 9
ans =
1 8
13 20
25 2
Les vecteurs et matrices
Les matrices (7): Manipuler des matrices
Il existe des commandes MATLAB permettant de manipuler globalement des matrices.
v=diag(A) : vecteur composé des éléments diagonaux de A.
A=diag(v) : matrice diagonale dont la diagonale est v.
>> A=eye(3); diag(A) La commande diag admet un second paramètre k pour désigner la k
ans = sur-diagonale (si k>0) ou la k sous-diagonale (si k<0).
1
1 >> A = [4 5 6 7 ; 3 4 5 6 >> diag(A,1)
1 2 3 4 5; 1 2 3 4] ans =
>> v=[1:3] A= 5
v= 4 5 6 7 5
1 2 3 3 4 5 6 5
>> diag(v) 2 3 4 5 >> diag(A,-2)
ans = 1 2 3 4 ans =
1 0 0
2
0 2 0
2
0 0 3
Les vecteurs et matrices
On fera attention, si l'on utilise le type complex, à ne pas écrire de boucles ayant i ou j comme indices.
Pour que l'identificateur fasse à nouveau référence à la constante MATLAB, il suffit de supprimer la
variable de même nom de la mémoire par la commande clear.
Calculer avec MATLAB
>> x=[0:0.01:4*pi];
>> y=sin(x);
>> plot(x,y)
Graphisme
Courbes dans le plan
Pour tracer deux graphes, Matlab propose plusieurs méthodes suivant si l’on
désire que les courbes apparaissent dans une ou plusieurs fenêtres. Pour voir
les graphiques sur deux fenêtres, il suffit de dire à Matlab de construire une
nouvelle fenêtre avec la commande figure.
>> z=cos(x);
>> plot(x,y)
>> figure
>> plot(x,z)
Pour avoir les deux courbes dans la même fenêtre, il existe deux méthodes
équivalentes :
soit avec les commandes hold on et hold off,
>> hold on, plot(x,y), plot(x,z), hold off
soit en donnant plus de paramètres à la commande plot.
>> plot(x,y,x,z)
Graphisme
Courbes dans le plan
▪ Options de la commande plot
On peut commencer par régler les axes. Deux options intéressantes sont axis
equal et axis off. La première met la même échelle sur les deux axes et la
deuxième supprime les axes. On peut également combiner les deux.
Les couleurs et le style du tracé peuvent également être modifiés. Pour cela,
il suffit d’ajouter à plot une chaîne de caractères spécifiant le style ; voir help
plot pour toutes les possibilités.
>> x=[0:0.1:4*pi];
>> y=sin(x);
>> z=cos(x);
>> plot(x,y,'ro',x,z,'b*')
Graphisme
Courbes dans le plan
▪Graphes multiples dans une même figure (subplot)
1 2
20 4.5
>> x=1:1:20; 15
4
3
>> z=x.^2; 10
2.5
>> w=x.^1.5; 5
2
>> subplot(2,2,2);plot(x,y);title('2')
0 1
0 5 10 15 20 0 5 10 15 20
>> subplot(2,2,3);plot(x,z);title('3') 3 4
>> subplot(2,2,4);plot(x,w);title('4') 400 100
80
300
60
200
40
100
20
0 0
0 5 10 15 20 0 5 10 15 20
10 3
5 2
0 1
Graphisme
0 5 10 15 20 0 5 10 15 20
courbe 3 courbe 4
400 100
200 50
0 0
MATALB fourni d’autres fonctions 0
de
5
graphisme
10 15 20
2D0
adaptées
5 10 15
à 20des cas de tracés spécifiques.
On reporte ici quelques unesd autres
MATALB fourni d’elles : de graphisme D adaptées à des cas de tracés spécifiques.
fonctions
On reporte ici quelques unes d elles
Tracé de fonctions
fplot permet de tracer la courbe d'une fonction y = f(x) dont on spécifie l'expression sous
forme d'une chaîne de caractères 'f(x)'. Cette expression peut être remplacée par le nom
d'un fichier M (fichier de fonction) dans lequel est programmée la fonction f.
Graphisme
Courbes dans le plan
▪Tracé de fonctions : fplot
fplot permet de tracer la courbe d'une fonction y = f(x) dont on spécifie l'expression
sous forme d'une chaîne de caractères 'f(x)'.
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-3 -2 -1 0 1 2 3
da l i e alle [- ]
Graphisme
Graphiques 3D
▪Les Courbes 3D
Pour la représentation des courbes tridimensionnelles, la fonction plot3 constitue
l’extension de plot.
Le tracé de la fonction z = (2 - x2 ) (2 - y2 ) sur la diagonale du carré [-2, 2]
s’obtient par :
>>x = [-2:0.1:2]; y = x; % définie la diagonale
>>z = (2-x.^2).*(2-y.^2); % évalue la fonction
>>plot3(x, y, zeros(1,length(x)), x, y, z, 'LineWidth',1.5)
>>grid on 4
>> xlabel('x')
3
>> ylabel('y')
>> zlabel('z') 2
z
1
0
2
1 -2
0 -1
0
-1 1
-2 2
y
x
2
1 -2
0 -1
0
-1 1
x
-2 2
Graphisme
y
Graphiques 3D
Les surfaces 3D
ans la▪Les surfaces
représentation 3D
tridimensionnelle des surfaces, les fonctions mesh et surf sont les
alogues de la fonction plot. Les surfaces sont définies dans MATLAB par trois matrices x,y,z
- Les
nt les fonctions
composantes sontmesh et surf sont
des coordonnées dans les analogues
l’espace deappartenant
des points la fonctionà laplot.
rface.- Les surfaces sont définies dans MATLAB par trois matrices x,y,z dont
les composantes
sont des coordonnées dans l’espace des points appartenant à la surface.
it l'exemple suivant d'une fonction à deux variables :
cos 𝑥 + 𝑦
▪Exemple : 𝑧 Pour x et y variant de -π à π avec un pas de π /10.
𝑥 +𝑦
- On
n génère deuxgénère
matrices deux
carrées matrices carréesle X
X et Y qui définissent et Y qui
domaine définissent
de calcul le domaine de calcul de z, on
de z, on utilisera
utilisera
ur ceci pour
la fonction ceci laLafonction
meshgrid. fonction z meshgrid.
est ensuite évaluée et les données sont
ockées dans Z. On utilise ensuite la fonction mesh pour dessiner la surface représentative
la fonction.
- La fonction z est ensuite évaluée et les données sont stockées dans Z. On utilise
ensuite la fonction mesh pour dessiner la surface représentative de la fonction.
x = -pi:pi/10:pi;
y= x;
[X,Y]= meshgrid(x, y);
Z = cos(X.^2+Y.^2)./(X.^2+Y.^2);
mesh(X,Y,Z)
xlabel('angle x= -\pi : \pi')
Graphisme
Graphiques 3D
▪Les surfaces 3D (Exemple) cos(x2 +y 2 )/(x 2 +y 2 )
>> x = -pi:pi/10:pi;
>> y= x;
>> [X,Y]= meshgrid(x, y); 12
>> Z = cos(X.^2+Y.^2)./(X.^2+Y.^2);
10
>> mesh(X,Y,Z)
>> xlabel('angle x= -\pi : \pi')
8
-2
4
2 4
0 2
0
-2
-2
angle y= - : -4 angle x= - :
-4
Les Polynômes
▪ Saisie d’un Polynôme
MATLAB représente un polynôme sous forme d'un tableau de ses coefficients classés dans
l'ordre des puissances décroissantes.
Le polynôme P(x) = x2−2x + 5, est représenté par le tableau à une dimension suivant :
>> P=[1 -2 5]
0.5
-0.5
0 0.5 1 1.5 2 2.5 3
x
Les Polynômes
▪ Représentation graphique
La commande fplot :
Utilisée avec la commande polyval, la commande fplot permet de tracer le graphe
de la fonction polynômiale P sur un intervalle [xmin , xmax] donné.
La syntaxe de l'instruction est :
>>x = 0:0.1:3*pi ;
>>y = sin(x) ; 1
>>p = polyfit(x, y, 5)
>>plot(x,y)
>>hold on 0.5
>>xx = 0:0.001:3*pi ;
>>plot(xx, polyval(p,xx), ’r-’)
0
-0.5
-1
0 1 2 3 4 5 6 7 8 9 10
Les Polynômes
▪ Décomposition en éléments simples
La commande residue permet de faire une décomposition en éléments simples
d’une fraction polynomiale.
[r,p,k] = residue(b,a)
[b,a] = residue(r,p,k)
Exemple :
r = 2×1
-12
>>b = [-4 8];
8
>>a = [1 6 8];
>>[r,p,k] = residue(b,a)
p = 2×1
-4
-2
Ce qui représente la décomposition en éléments simples suivante :
k=
[]
Les entrées-sorties
Lecture
La commande input permet de demander à l'utilisateur d'un programme de fournir des données. La
syntaxe est var = input(' une phrase '). MATLAB attend que l'utilisateur saisisse une donnée au
clavier. Cette donnée peut être une valeur numérique ou une instruction MATLAB. Un retour chariot
provoque la fin de la saisie. Une valeur numérique est directement affectée à la variable var. Il est
possible de provoquer des sauts de ligne pour aérer le présentation en utilisant le symbole \n de la
manière suivante: var = input('\n une phrase : \n '). Pensez à mettre un point virgule (;) à la fin de
l'instruction si vous ne souhaitez pas voir s'afficher var = . Sous cette forme il est impossible d'avoir
une donnée de type chaîne de caractères dans la mesure où MATLAB essaie d'interpréter cette
chaîne de caractères comme une instruction. Si l'on souhaite saisir une réponse de type chaîne de
caractères on utilise la syntaxe var = input(' une phrase ','s'). Signalons qu'un retour chariot (sans
autre chose) initialise la variable var au tableau vide [].
> rep = input(' Affichage du resultat ? o/n [o] ','s');
if isempty(rep), rep = 'o'; end
if rep == 'o' | rep == 'y'
disp(['Le resultat vaut ', num2str(res)])
end
Affichage du resultat ? o/n [o] 0
>>
Les entrées-sorties
se présente sous la forme du symbole pourcent (%) suivi d'indications permettant de composer le
d'édition utilisé par MATLAB est le modèle d'édition du langage C. La syntaxe de la commande
•variables est le nom des variables à imprimer suivant le modèle d'édition spécifié dans format;
•format est le format d'édition. Il s'agit d'une chaîne de caractères contenant les modèles d'éditions
Exemple :
On définit une variable t
switch (expression)
case expression1, % est vraie
% exécute ces commandes
case expression2, % est vraie
% exécute ces commandes
otherwise, % par defaut
% exécute ces commandes
end
Les fichiers et la
programmation avec Matlab
Structures de contrôle
▪ Boucle for
for x = 1: 0.5 : 10
% exécute ces commandes
end
▪ Boucle while
while x <= 10
% exécute ces commandes
end