Présentation de Matlab
Logiciel développé en Fortran et C++ pour le calcul numérique
(Unix/Linux, Windows).
Calcul matriciel rapide.
Fonctions de haut niveau prédéfinies : résolution de systèmes
linéaires, EDO, ...
Librairie graphique intégrée.
Langage de programmation, graphisme évolué
Boites à outils : traitement du signal, traitement d’image, stats.
2
Matlab– Mise en pratique
Premiers pas
Il existe deux modes de fonctionnement :
! Mode interactif : MATLAB exécute les instructions au fur et à mesure
qu'elles sont données par l'usager.
! Mode exécutif : MATLAB exécute ligne par ligne un "fichier M" (programme
en langage MATLAB).
Fenêtre Commande: Dans cette fenêtre, l'usager donne les instructions et
MATLAB retourne les résultats.
Fenêtres Graphiques: MATLAB trace les graphiques dans ces fenêtres.
Fichiers M: Ce sont des programmes en langage MATLAB (écrits par l'usager).
3
Matlab– Mise en pratique
Mode interactif
4
Mode exécutif
5
Syntaxe
% ceci est un commentaire
variable = expression
expression est évaluée, affectée à variable et affichée.
expression
expression est évaluée, affectée à ans et affichée.
variable = expression;
expression est évaluée, affectée à variable et n’est pas affichée.
Les majuscules sont distinctes des minuscules.
6
Matlab– Mise en pratique
Manipulation de matrices
A = [1 2 3; 4 5 6] donne
A=
! 1. 2. 3. !
! 4. 5. 6. !
b = [1 2 3]
b=
! 1. 2. 3. !
b = [1 2 3]'
b=
! 1. !
! 2. !
! 3. !
7
Matlab– Mise en pratique
Matrices particulières
zeros(m,n) matrice nulle de taille m, n
ones(m,n) matrice de taille m, n dont les coefficients valent
1
eye(m,n) Matrice identité de taille min(m,n) complétée par
des zéros
8
Matlab– Mise en pratique
La fonction size
size(A) nombre de lignes et de colonnes
size(A,’1’) nombre de lignes
size(A,’2’) nombre de colonnes
9
Matlab– Mise en pratique
Opérations matricielles
+ - addition soustraction
* ^ multiplication puissance (matricielles)
.* .^ multiplication puissance terme à terme
A\b solution de A*x =b
./ division terme à terme
10
Matlab– Mise en pratique
Types de données
Certaines constantes sont prédéfinies
pi 3,1415927
i
−1
11
Matlab– Mise en pratique
Constructions des matrices
vecteurs Matrices
x:y nombres de x à y par pas de 1 A(i,j) coefficient d’ordre i, j de A
A(i1:i2, :) lignes i1 à i2 de A
x:p:y nombres de x à y par pas de p
A(i1:i2, :) = [ ] supprimer les lignes i1 à i2 de A
linspace(x,y,n) n nbres entre x et y
A(:, j1:j2) = [ ] supprimer les colonnes j1 à j2 de
V(i) i-ème coordonnée de V A
V(i1:i2) coordonnées i1 à i2 de V diag(A) coefficients diagonaux de A
V(i1:i2)=[ ] supprimer les coordonnées i1 à i2 de
V
12
Matlab – Mise en pratique
i=0:2:12 (vecteur prenant des valeurs de 0 a 12 avec un pas de 2)
i=
! 0. 2. 4. 6. 8. 10. 12. !
Si l'incrément vaut 1 on peut l'omettre : i=0:8
i=
! 0. 1. 2. 3. 4. 5. 6. 7. 8. !
linspace(0,1,6)
ans =
! 0. 0.2 0.4 0.6 0.8 1. !
13
Matlab – Mise en pratique
Extraction de termes
! A(2,3)
! A(3,:) la troisième ligne
! A(2:4,3:4) sous-matrice allant de la 2ème la 4ème ligne et de la
3ème la 4ème colonne
! A(v,w) ou v et w sont deux vecteurs, extrait les termes
correspondants
14
Matlab– Mise en pratique
Commandes principales
Pour for x= vecteur
instruction;
end
Tant que while booleen, instruction; end
Si if booleen
instruction;
end
Sinon else instruction; end
Sinon si else if booleen
instruction;
end
Selon select x case………… then end
15
Matlab– Mise en pratique
Les boucles
La boucle for (itère sur les éléments d'un vecteur ligne)
for i=1:4
x = 2^i
end
La boucle while
x=3
while (x > 1)
x=x/2
end
16
Matlab– Mise en pratique
Boucles et instructions conditionnelles
28/09/2016
x=16;
if (x>0)
y=-x
Matlab en pratique
else
y=x
end
Résultat : y = -16
17
17
Matlab– Mise en pratique
Instructions conditionnelles
Les opérateurs de comparaison
==
<
<=
>=
~= (différen t de)
Les opérateurs logiques
& et
| ou
~ non
18
Matlab– Mise en pratique
Définition de fonctions avec Matlab
• function [arguments_sortie]=nom_de_la_fonction(arguments_entrée)
<instructions>
end
Matlab en pratique
• function [y1,y2,y3] = nomfonction(x1,x2,x3,x4)
y1 = x1+x2
y2 = x1*x3
y3 = x1+x2+x3+x4
end
%les xi sont les arguments d'entrée et les yj les arguments de sortie
• Appel : [a,b,c] = nomfonction(1,-1,1.5,4)
19
Matlab– Mise en pratique
Les graphiques
o Les courbes dans le plan
28/09/2016
x=-pi:.1:pi; ( ou x=linspace(-%pi,%pi,100) )
plot(x,sin(x))
Matlab en pratique
plot peut également prendre un certain nombre d'options de
style
o Les surfaces
x=linspace(0,2*%pi,31);
z=cos(x)'*cos(x);
plot3(x,x,z)
20
20
Matlab– Mise en pratique
Les graphiques multiples
On peut tracer plusieurs graphiques dans la même fenêtre en utilisant
l’instruction subplot pour diviser la fenêtre en plusieurs parties.
- Diviser la fenêtre en deux parties (2 x 1)
subplot(2,1,1)
subplot(2,1, 2)
- Diviser la fenêtre en deux parties (1 x 2)
subplot(1,2,1) subplot(1,2,2)
21
Matlab– Mise en pratique
Les graphiques multiples
On peut tracer plusieurs graphiques dans la même fenêtre en utilisant
l’instruction subplot pour diviser la fenêtre en plusieurs parties.
- Diviser la fenêtre en quatre parties (2 x 2)
subplot(2,2,1) subplot (2,2,2)
subplot(2,2, 3) subplot (2,2,4)
- Diviser la fenêtre en quatre parties (4 x 1)
subplot (4,1,1)
subplot (4,1,2)
subplot (4,1,3)
subplot (4,1,4)
22
Matlab– Mise en pratique
’usager
Communication avec l’
On peut afficher un message, une valeur à l'écran avec
l’instruction disp :
disp('Ceci est un test') Afficher "Ceci est un test" sur l'écran
On peut entrer une valeur avec l’instruction input :
x = input('Valeur de x = ') Afficher sur l'écran "Valeur de x = "
et attendre qu'un nombre soit tapé sur le clavier
23
Matlab– Mise en pratique
Quelques solveurs de Matlab
! Racines d’un polynôme.
! Racines d’une équation algébrique non linéaire.
! Système linéaire algébrique.
! Système non linéaire algébrique.
! Maximum ou Minimum d
d’une
une fonction.
! Optimisation d’une fonction de plusieurs variables.
! Probabilités et statistiques
! Résolution des équations différentielles
! Résolution des équations aux dérivées partielles
!………………
24
Matlab– Mise en pratique
Racines de polynôme
Exemple : 5x^3+2x^2-4x+9=0
roots([5 2 -4 9])
25
Matlab– Mise en pratique
’une équation algébrique non linéaire
Racines d’
Exemple : f(x)= exp(-x/2) (2-x) -1
Trouver la racine de cette équation au voisinage de x=1
solution = fzero(@f,1)
function y=f(x)
y= exp(-x/2) (2-x) -1
end
26
Matlab– Mise en pratique
Système linéaire algébrique
Exemple :
12.2 x + 9.6 y – 0.1 z = 18
-22 x + 1.4 y + 16 z = 8
-0.43 x + 3.5 y + 9.9 z = -47
AX = b
Solution : x=inv(A)*b ou x=A\b
27
Matlab– Mise en pratique
Système non linéaire algébrique
Exemple :
x^2 + y^2 -4 = 0
xy – 1 =0
function z = eqns(x)
z(1) = x(1).^2 + x(2).^2 -4;
z(2) = x(1).*x(2) – 1;
end
Solution = fsolve(@eqns,[0.6,0.5])
28
Matlab– Mise en pratique
’une fonction
Maximum ou Minimum d’
Exemple :
Trouver les minimums de la fonction suivante : f(x)=cos(x)cosh(x) -
1 ; 0≤x≤5
function y = fm(x)
y= cos(x)*cosh(x) -1;
end
xmin = fminbnd(@fm,0,5)
29
Matlab– Mise en pratique
TP1 : Environnement et bases de programmation
• Définir le vecteur ligne age de 1 à 25 par pas de 1.
• Calculer la somme des éléments du vecteur age par une boucle for et
faire la moyenne.
• Faire le produit A par la matrice B.
• Ajouter 1 aux éléments de la matrice A. Calculer la matrice B + I (I est
la matrice identité).
• Évaluer eye(B)/B et comparer avec inv(B).
• Résoudre le système linéaire Bx=(1 1)’
• Dessiner la courbe de la fonction y(x) = x sin(x) sur l’intervalle [0, 10]
avec un pas de 0.05.
• Superposer les courbes y(x) = x et y(x) = x sin(x) en utilisant un ou
deux appels successifs à plot.
• Calculer le minimum de la fonction suivante : 1/2 *x2 +x +1 en utilisant
le solveur fminbnd avec -3 <x < 5 et fminunc avec x0=0;
30
Optimisation
• demo toolbox optimzation
• Minimiser la fonction : f(x,y) = 3x2+2xy + y2
function f = myfun(x)
f= 3*x(1)^2 + 2*x(1)*x(2) + x(2)^2 ; % fonction coût)
x0 = [1,1];
[x , fval] = fminunc(@myfun , x0);
31
Optimisation sous contraintes linéaires et non linéaires
32
Lois de probabilités discrètes
mk
• Loi de poisson P(X = k) = e -m
k!
p = poisspdf(0,2)
• Loi binomiale : binornd; binofit
33
Résolution des équations différentielles
• Solution analytique :
dsolve(equation,initiales,’x’)
x=linspace(a,b,n)
yy=eval(vectorize(y))
plot(x,yy)
• Solution numérique : y’(x) = f(x,y) = expression
f = inline(‘expression’);
[x , y] = ode45(f, [a , b], conditions initiales)
plot(x,y)
valeurs_x=a:p:b;
[x, y] =ode45(f, valeurs_x,1);
34
Solveur EDO
• function yprime = eqDiff(x,y)
%cette fonction calcule dy/dx = f(x,y)
yprime = expression
end
• xx=[0 , 1];
y0=1;
[x , y] = ode45(@eqDiff, xx,y0);
plot(x,y)
35
Equations aux dérivées partielles
Elliptique
Parabolique
Hyperbolique
Toolbox : pdetool
36
TP 2 : EDO et EDP
• Résolution de l’équation différentielle
y’(t)= dy/dt=y2(t) – y(t) sin(t) + cos(t),
y(0)=0
• Résolution d’EDP
-div (3*gradU(X))=3 dans (0,1)x(0,1)
Conditions aux limites mixtes (Dirichlet et Neumann)
37
38
38
Matlab et les images
28/09/2016
• Pour Matlab, une image de taille (m,n) est une matrice X de
taille (m,n), et la valeur de X(i,j) correspond à la valeur du
niveau de gris de l’image au pixel (i,j)
Matlab en pratique
• Matlab est capable de lire environ tous les formats standards
d’images
39
39
Matlab et les images
28/09/2016
• Pour charger une image :
Matlab en pratique
" Si l’image se trouve dans le toolbox de matlab on utilise la
commande : load nom_image
" Sinon on utilise la commande :
imread(‘emplacement_image.nom_image’)
40
40
Exemple
% chargement d’une image
load gatlin2
%l’image est chargée dans la variable X
%visualisation
imagesc(X)
%affichage au niveau de gris
colormap gray
41
42
’une image
Bruitage d’
function out=bruitage(I,s);
[m,n]=size(I);
J=zeros(m,n);
J=s*randn(m,n);
out=I+J;
figure(2)
imagesc(out)
colormap gray;
43
44
Débruitage
• Le débruitage peut se faire entre autres
grâce à des filtres d’EDP.
• En particulier l’équation de la chaleur peut
être utilisée pour cette fin (En utilisant la
transformée de fourier).
45