2. MATLAB
C’est un système interactif de programmation scientifique, pour le
calcul numérique et la visualisation graphique.
Il est basé sur la représentation matricielle des données.
Le nom est dérivée de cette représentation MATLAB =
MAT rix LAB oratory
3. Plan du cours
Introduction et notions de base du MATLAB
Les fichiers et la programmation avec MATLAB
Instructions de contrôles sous MATLAB
Graphisme sur MATLAB
Fonctions d’entrée/sortie sous MATLAB
Prof. Abdellah ADIB FI-GPE 2011-2012 3
14. Types de données
Dans Matlab il y a un seul type de données: le type de matrice
(matrix).
Tout est matrice → un nombre est une matrice carrée d’ordre
1.
Pas de déclaration de type.
L’utilisation ne s’occupe pas de l’allocation mémoire.
Les matrices et vecteurs peuvent être redimensionnées.
Prof. Abdellah ADIB FI-GPE 2011-2012 14
15. Variables MATLAB
Variable :
- Matrice m x n, m, n >1,
- Vecteur 1 x n, n >1,
- Scalaire 1x1
Nombres ou chaînes de caractères :
- Nom_de_variable : aBz23k...
- 1er caractère = lettre
- 19 premiers caractères reconnus
-Aa
Prof. Abdellah ADIB FI-GPE 2011-2012 15
16. Variables MATLAB
Les noms des variables et de fonctions sont composés de
lettres et chiffres.
Matlab fait la distinction entre les majuscules et
minuscules, ainsi mavar, MAVAR et MAvar sont des
variables différentes.
Si la variable existe déjà, le contenu est écrasé par une
nouvelle valeur affectée à cette variable.
Prof. Abdellah ADIB FI-GPE 2011-2012 16
17. Caractères et variables réservés
Caractères spéciaux
= assignment statement
[ used to form vectors and matrices
] see [
( arithmetic expression precedence
) see (
. decimal point
... continue statement to the next line
, separate subscripts and function arguments
; end rows, suppress printing
% comments
: subscripting, vector generation
! execute operating system command
Prof. Abdellah ADIB FI-GPE 2011-2012 17
18. Fonctions d’usage général
help help facility
demo demo
who list variables in memory
what list M-files on disk
size row and column dimensions
length vector length
clear clear workspace
computer type of computer
quit quit
exit exit
Prof. Abdellah ADIB FI-GPE 2011-2012 18
19. Caractères et variables réservés
Valeurs spéciales
ans answer when expression is not assigned
eps floating point precision
pi
i,j -1
Inf
NaN not-a-Number
clock wall clock
date date
flops floating point operation count
nargin number of function input arguments
nargout number of function output arguments
Prof. Abdellah ADIB FI-GPE 2011-2012 19
23. Vecteurs ou tableaux à 1 dimension
Le moyen le plus simple de saisir un vecteur est d’entrer ses
éléments en les séparant par des blancs ou par des virgules
» x=[ 6 4 7]
x=
6 4 7
Autre façon de saisir un vecteur ligne
» x=[6, 4, 7]
x=
6 4 7
Prof. Abdellah ADIB FI-GPE 2011-2012 23
24. Vecteurs ou tableaux à 1 dimension
Ce vecteur est considéré comme une matrice à une ligne et
trois colonnes
» size(x) Ou bien » [m n]=size(x)
ans = m=1
1 3 n=3
La longueur d’un tableau, ou bien sa dimension
» longeur=length(x)
longeur= 3
Prof. Abdellah ADIB FI-GPE 2011-2012 24
25. Opérateurs arithmétiques
“Matrix” et “Array”
Opérateurs “Matrix” Opérateurs “Array”
+ addition + addition
- subtraction - subtraction
* multiplication .* multiplication
/ right division ./ right division
left division . left division
^ power .^ power
‘ conjugate transpose .‘ transpose
Arithmétique élément-par-élément
Prof. Abdellah ADIB FI-GPE 2011-2012 25
26. Vecteurs ou tableaux à 1 dimension
Si on veut créer le vecteur v=[6 4 7 1 2 8], on peut utiliser le
vecteur x précédent
» v=[x 1 2 8] %Concaténation
v=
6 4 7 1 2 8
Dans Matlab, les indices d’un tableau commencent à 1. Pour
récupérer une composante d’un vecteur, il faut spécifier son
indice entre parenthèses:
» v(2)
ans=
4
Prof. Abdellah ADIB FI-GPE 2011-2012 26
27. Vecteurs ou tableaux à 1 dimension
L’addition et la soustraction de vecteur de mêmes dimensions se font
élément par élément
» x=[4 3]; y=[5 7]; x-y
ans=
-1 -4
» x+y
ans=
9 10
Transposé conjugué < ’> et transposé d’un vecteur < .’>
» tx = x ’
tx=
4
3
Prof. Abdellah ADIB FI-GPE 2011-2012 27
28. Vecteurs ou tableaux à 1 dimension
Combinaison linéaire de deux vecteurs de mêmes dimensions se font
élément par élément
» x=[4 3]; y=[5 7]; 2*x - 4*y
ans=
-12 -22
» 4*x + 3*y.^2
ans=
91 159
Division de deux vecteurs
» x/y
tx=
4
3
Prof. Abdellah ADIB FI-GPE 2011-2012 28
29. Vecteurs ou tableaux à 1 dimension
» q = 4 : 10
q=
4 5 6 7 8 9 10
» q(end)
ans =
10
» q(end-4 : end)
ans =
6 7 8 9 10
» q(endq(end-2 : end)
ans =
8 9 10
Prof. Abdellah ADIB FI-GPE 2011-2012 29
30. Fonctions opérant sur des vecteurs
sum : somme des composants d’un vecteur
» sum(x) % x=[4 3];
ans=
7
prod : produit des composants d’un vecteur
» prod(y)=
ans=
70
Prof. Abdellah ADIB FI-GPE 2011-2012 30
31. Fonctions opérant sur des vecteurs
sqrt : racines carrées des composants d’un vecteur
» sqrt(x)
ans=
2.000 1.7321
mean : moyenne des composantes d’un vecteur
» mean(x)
ans=
2.3333
Prof. Abdellah ADIB FI-GPE 2011-2012 31
32. Fonctions opérant sur des vecteurs
find : recherche les indices et les valeurs des éléments
non nuls
» X = [1 0 4 -3 0 0 0 8 6]; indices = find(X)
indices =
1 3 4 8 9
» find(X > 2)
ans=
3 8 9
Prof. Abdellah ADIB FI-GPE 2011-2012 32
33. Fonctions opérant sur des vecteurs
sort : ordonne les éléments du vecteur x par ordre
croissant
» sort(x) % x=[3 5 1 9 2 -2 51 -8]
ans=
-8 -2 1 2 3 5 9 51
linspace : génère un vecteur de N points équiespacés
entre deux points donnés
» y = linspace(0,1,6)
y=
Columns 1 through 6
0 0.2000 0.4000 0.6000 0.8000 1.0000
Prof. Abdellah ADIB FI-GPE 2011-2012 33
34. Fonctions opérant sur des vecteurs
fliplr : fait tourner le vecteur de droite à gauche
» fliplr(x) % x=[3 5 1 9 2 -2 51 -8]
ans=
-8 51 -2 2 9 1 5 3
flipud : fait tourner le vecteur du bas vers le haut
» y = flipud([1; 2; 9])
y=
9
2
1
Prof. Abdellah ADIB FI-GPE 2011-2012 34
36. Matrices ou tableaux à 2 dimensions
Pour saisir une matrice, les lignes sont séparées par un
point virgule
» x= [0 1 2; 3 4 5]
x=
0 1 2
3 4 5
Ou bien en séparant les lignes par des retours à la ligne
» x= [0 1 2;
345]
Prof. Abdellah ADIB FI-GPE 2011-2012 36
37. Matrices ou tableaux à 2 dimensions
Dimensions d’une matrice x:
» [ m n ]=size(x)
m=
2
n=
3
Accès à un élément d’une matrice
» x(2,1)
ans=
3
Prof. Abdellah ADIB FI-GPE 2011-2012 37
43. Exemple 1
Donner les valeurs de la fonction suivante
y = (x+2)2(x3+1)
pour des valeurs de x entre -1 et 3 avec un pas de 0.1
Solution :
» x=[-1:0.1:3];
» y = ((x+2).^ 2) .* ((x.^3)+1);
Prof. Abdellah ADIB FI-GPE 2011-2012 43
44. Exemple 2
Construire la fonction
z = s2/(s3 + 1)
pour 200 valeurs de x entre -3 et 40.
Solution :
» s=linspace(-3,40,200);
» y = s.^2./(s.^3 + 1);
Prof. Abdellah ADIB FI-GPE 2011-2012 44
45. Exemple 3
Donner 50 valeurs du polynôme
y = x4 + x2 - 3
Entre x = -2 et x = 2.
Solution :
» x=linspace(-2,2,50);
» c = [1 0 1 0 -3];
» y = polyval(c,x);
Prof. Abdellah ADIB FI-GPE 2011-2012 45
46. Exemple 4
Soit la matrice F=[1 2 3; 4 5 6; 7 8 9], éliminer la deuxième
colonne puis la première ligne
Solution :
» F(:,2) = [] » F(1,:) = []
F= F=
1 2 3 4 5 6
4 5 6 7 8 9
7 8 9
Prof. Abdellah ADIB FI-GPE 2011-2012 46
48. Fonctions d'arrondis
round(x) : entier le plus proche de x,
» round(1.8356) » round(3.4356)
ans= ans=
2 3
floor(x) : arrondi par défaut,
» floor(3.9)
ans=
3
Prof. Abdellah ADIB FI-GPE 2011-2012 48
49. Fonctions d'arrondis
ceil(x) : arrondi par excès,
» ceil(1.8356) » ceil(3.4356)
ans= ans=
2 4
fix(x) : arrondi par défaut un réel positif et par excès un réel
négatif.
» fix(3.9) » fix(-2,1)
ans= ans=
3 -2
Prof. Abdellah ADIB FI-GPE 2011-2012 49
50. Format : La manière d’apparition des nombres
» s = [1/2 1/3 pi];
» format short; s
s=
0.5000 0.3333 3.1416
» format long; s
s=
0.50000000000000 0.33333333333333 3.14159265358979
» format rat; s
s=
1/2 1/3 355/113
» format bank; s
s=
0.50 0.33 3.14
Prof. Abdellah ADIB FI-GPE 2011-2012 50
52. Exemple
Créer une matrice 4x2 tous zéros et la stocker dans une
variable. Puis, remplacer la deuxième rangée dans la matrice par
un vecteur se composant des 3 et des 6.
Trouver une manière efficace de reproduire la matrice suivante :
mat =
7 8 9 10
12 10 8 6
Puis, donner les expressions qui, pour la matrice mat de,
1. se rapporter à la deuxième rangée entière
2. se rapporter aux deux premières colonnes
Prof. Abdellah ADIB FI-GPE 2011-2012 52
53. Exemple
Créer un vecteur de variable vect ; il peut avoir n'importe quelle
longueur. Puis, écrire les instructions qui permettent de stocker
la première moitié du vecteur dans une variable et la deuxième
moitié dans une autre variable. S'assurer que vos instructions
d'affectation sont générales, et opèrent correctement même si
le vect a un nombre pair ou impair d'éléments. (Conseil :
Employer une fonction d'arrondis telle que la difficulté.).
Prof. Abdellah ADIB FI-GPE 2011-2012 53
56. Fonctions “usager” de type “script”
Fonction sans argument
Variables globales
%*****************************%
%* pivot_x.m *%
%*****************************%
echo off
x=[1 2 3 4]
x=fliplr(x)
» pivot_x
x=
1234
x=
4321
Prof. Abdellah ADIB FI-GPE 2011-2012 56
57. Fonctions “usager” de type “function”
Les fonctions m-files sont des vrais sous programmes; puisque
elles utilisent des arguments I et/ou O.
Variables autres que les I/O sont locales à la fonction
Syntaxe générale :
function [arguments de sortie] = Nom_fonction (arguments d’entrée)
Prof. Abdellah ADIB FI-GPE 2011-2012 57
58. Exemple de “function”
Nom de
Un seul argument de la fonction Arguments
sortie, pas de [ ] d’entrée
function y = plptnb(n1,n2) 1- Commentaire,
1er ligne, doit contenir % Retourne le plus petit de n1 ou n2 qui apparaîtra en
la définition de la %Notes : Un exemple de fonction utilisant help
fonction y = n2; 2- Les informations
if n1 < n2 dans Notes
Le corps de y=n1; n’apparaîtrons
la fonction end; jamais
Return;
Utilisation de » a=-2; b=3; » plptnb(-2, 3)
la fonction » plptnb(a,b) » ans =
» ans = -2
-2
Prof. Abdellah ADIB FI-GPE 2011-2012 58
59. Organisation d'un programme
Toute bonne programmation repose sur l'écriture d'un script
principal qui fait appel à des fonctions autonomes. Cela permet :
• d'améliorer la lisibilité
• de tester indépendamment des parties de programmation
• d'augmenter le degré de généralité (utilisation d'une même
fonction à divers endroits du programme, voire réutilisation
des fonctions dans d'autres applications)
Prof. Abdellah ADIB FI-GPE 2011-2012 59
60. Structure d’un Bon programme
Comme dans l'exemple ci-dessus, le nom du script attaché à une fonction
doit obligatoirement porter le nom de la fonction avec l'extension.m.
Prof. Abdellah ADIB FI-GPE 2011-2012 60
62. Exemples
Écrire une fonction qui calculera le volume d'une sphère creuse, on adoptera la
formule suivante :
4
3
où est le rayon intérieur et est le rayon extérieur.
Écrire une fonction qui permet de construire la matrice suivante :
2 2 2 2 2 2 2
3 3 3 3 3 3 3
7 7 7 7 7 7 7
9 9 9 9 9 9 9
4 4 4 4 4 4 4
Prof. Abdellah ADIB FI-GPE 2011-2012 62
64. Opérateurs logiques
Les opérateurs logiques combinent des expressions
booléennes :
En terme numérique, tout nombre non nul est considéré
comme vrai
Prof. Abdellah ADIB FI-GPE 2011-2012 64
65. Liste des opérateurs
& : ET logique élément par élément
| : OU logique élément par élément
~ : NON (négation logique de l’opérande)
Prof. Abdellah ADIB FI-GPE 2011-2012 65
66. ET logique
Cas de deux expressions logiques
x = 1; y = 3;
w = -1; z = 10;
(x>y) & (w>z) 0 (FAUX)
(x>y) & (w<z) 0 (FAUX)
(x<y) & (w<z) 1 (VRAI)
x & y est équivalent à (x ~ =0)&(y ~= 0) 1 (VRAI)
Cas de deux vecteurs
u = [1 0 2 3 0 5]; v = [5 6 1 0 0 7];
u&v
1 0 1 0 0 1
(VRAI FAUX VRAI FAUX FAUX VRAI)
Prof. Abdellah ADIB FI-GPE 2011-2012 66
67. Opérateur OU
Cas de deux expressions logiques
x = 1; y = 3;
w = -1; z = 10;
(x>y) | (w>z) 0 (FAUX)
(x>y) | (w<z) 1 (VRAI)
(x<y) | (w<z) 1 (VRAI)
x | y (est équivalent à (x ~ =0) | (y ~= 0)) 1 (VRAI)
Cas de deux vecteurs
u = [1 0 2 3 0 5]; v = [5 6 1 0 0 7];
u|v
1 1 1 1 0 1
(VRAI VRAI VRAI VRAI FAUX VRAI)
Prof. Abdellah ADIB FI-GPE 2011-2012 67
68. Opérateur NON (négation)
Négation d’une expression logique
x = 1; y = 3;
~(x>y) 1 (VRAI)
~(x<y) 0 (FAUX)
~(x==y) 1 (VRAI)
Négation d’un scalaire
~y équivalent a y == 0 1 (VRAI)
Négation d’un vecteur
~u (u = [1 0 2 3 0 5])
équivalent a u == 0
0 1 0 0 1 0
(FAUX VRAI FAUX FAUX VRAI FAUX)
Prof. Abdellah ADIB FI-GPE 2011-2012 68
70. Les instructions de contrôle
Les principales instructions de contrôle sous Matlab sont :
Instructions IF … ELSEIF … ELSE …
Instructions sélectives
Instructions SWITCH … CASE … OTHERWISE…
Chois ventilés
Instructions WHILE … FOR … (Boucles)
Instructions répétitives
Instructions CONTINUE …
Passage à l’itération suivante dans une boucle
Instructions BREAK …
Arrêt de l’exécution d’une boucle
Prof. Abdellah ADIB FI-GPE 2011-2012 70
72. Instruction sélective IF
La sélection if
Syntaxe :
Expression logique dont le résultat est soit 1 (vrai) ou 0 si (faux),
if condition
Mots clé
séquence d’instructions Corps de la sélection
Fin de la
sélection
end
Prof. Abdellah ADIB FI-GPE 2011-2012 72
73. Instruction sélective IF … ELSE
La sélection if … else … end
Syntaxe :
Expression logique dont le résultat est soit 1 (vrai) ou 0 si (faux),
if condition
Mots clé
séquence d’instructions 1 Action
Fin de la
sélection
else
séquence d’instructions 2 Alternative
end
Prof. Abdellah ADIB FI-GPE 2011-2012 73
74. Instruction sélective IF … ELSEIF … ELSE
La sélection if … elseif … else … end
Syntaxe :
if condition
séquence d’instructions 1 Action
elseif
séquence d’instructions 2 Alternative 1
Else
séquence d’instructions 3 Alternative 2
end
Prof. Abdellah ADIB FI-GPE 2011-2012 74
75. Exemple
Ecrire une fonction qui cherche la mention en fonction de la moyenne obtenue
function m = mention(moy)
% Mention en fonction de la moyenne
if moy>=16
m=’très bien’;
elseIf moy>=14
m=’bien’;
elseIf moy>=12
m=’assez bien’;
elseIf moy>=10
m=’passable’;
else
m=’Ajourné’;
end
Prof. Abdellah ADIB FI-GPE 2011-2012 75
77. Instruction répétitive FOR
La sélection for … end
Syntaxe :
i variable appelée indice de la boucle
for i = ind_debut : ind_fin
Mots clé
séquence d’instructions Corps de la boucle
Fin de la
boucle
end
Prof. Abdellah ADIB FI-GPE 2011-2012 77
78. Instruction répétitive SWITCH
La sélection switch … case c1 … case cn … otherwise … end
Syntaxe :
switch var
case c1
séquence d’instructions 1
... n choix ventilés
case cn
séquence d’instructions n
otherwise
séquence d’instructions par défaut
end
var expression ou variable à évaluer, c1 … cn constantes représentant les possibilités
d’évaluation de var.
Prof. Abdellah ADIB FI-GPE 2011-2012 78
81. Graphe plus lisible
» axis([0 (2*pi) -0.1 0.4]);
» title ('Exemple de graphique');
» xlabel(‘Abscisse'); Exemple de graphique
» ylabel(‘Ordonnee');
» grid;
Ordonnee
Abscisse
Prof. Abdellah ADIB FI-GPE 2011-2012 81
82. Graphe avec plusieurs courbes superposées
» y1=exp(-2*x).*sin(x);
» y2=exp(-3*x).*sin(x);
» y3=exp(-4*x).*sin(x);
» plot(x,y,'-',x,y1,'-.',x,y2,'*',x,y3,'o‘ );
Prof. Abdellah ADIB FI-GPE 2011-2012 82
83. Graphe avec plusieurs courbes séparées
» subplot(2,2,1), plot(x,y), title('y');
» subplot(2,2,2), plot(x,y1), title('y1');
» subplot(2,2,3), plot(x,y2), title('y2');
» subplot(2,2,4), plot(x,y3), title('y3');
Prof. Abdellah ADIB FI-GPE 2011-2012 83
84. Graphe 3-D
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)
Prof. Abdellah ADIB FI-GPE 2011-2012 84
85. À retenir
>> Variable MATLAB matrice
>> Opérateurs “matrix” et “array”
>> Fichiers exécutables “.m” type “script” et “function”;
>> Fichiers binaires “.mat” pour échange de données
>> Extensions (toolboxes)
Prof. Abdellah ADIB FI-GPE 2011-2012 85
86. RESTE MAINTENANT A APPRENDRE
LA VRAI PROGRAMMATION
SOUS MATLAB
!!!!!!!!!
Prof. Abdellah ADIB FI-GPE 2011-2012 86