Introduction à Matlab
Ecole Sup Galilée - Cursus Ingénieur - 1ère année
2016-2017
John Chaussard
LAGA – Université Paris 13
[email protected]
La programmation
La programmation
Qu’est ce que la programmation
3
La programmation
Différents langages de programmation
4
La programmation
Différents langages de programmation
5
La programmation
Différents langages de programmation
6
La programmation
Différents langages de programmation
7
La programmation
Différents langages de programmation
8
La programmation
Différents langages de programmation
9
La programmation
Quelques définitions supplémentaires
10
La programmation
Quelques définitions supplémentaires
11
La programmation
Quelques définitions supplémentaires
12
Présentation de Matlab
Présentation de Matlab
Qu’est-ce que Matlab ?
14
Présentation de Matlab
Présentation de l’interface
15
Présentation de Matlab
Présentation de l’interface
16
Présentation de Matlab
Présentation de l’interface
17
Présentation de Matlab
Matlab à la maison
18
Les commandes de base
en Matlab
Les commandes de base en Matlab
Les opérations de base
>> 3+6
ans =
20
Les commandes de base en Matlab
Les opérations de base
Symbole Description Exemple
+-*/ Les opérations de base en mathématiques (addition, 7+9
soustraction, multiplication et division) 3/4
pi La constante Pi pi/3
cos sin tan Les fonctions trigonométriques usuelles cos(3*pi/2)
log exp Le logarithme népérien et l’exponentielle exp(3)
sqrt La racine carrée sqrt(5)
^ La puissance 4^7
>> sqrt((3+4)*cos(5*pi/7))*exp(2^4)
21
Les commandes de base en Matlab
Les nombres réels
>> 2.7 * 3.9
ans =
10.5300
22
Les commandes de base en Matlab
Les variables (simples) en Matlab
>> x = 4
23
Les commandes de base en Matlab
Les variables (simples) en Matlab
>> y = x+2
24
Les commandes de base en Matlab
Les variables (simples) en Matlab
>> disp(y)
6
>> y
y =
6
25
Les commandes de base en Matlab
Les variables (simples) en Matlab
>> x = input('Entrez une valeur : ');
Entrez une valeur : 9
26
Les matrices dans Matlab
Les matrices dans Matlab
Matlab et les matrices
28
Les matrices dans Matlab
Déclarer des matrices dans Matlab
>> A = [1 2 3; 4 5 6; 7 8.5 9; 10 11.5 12]
29
Les matrices dans Matlab
Déclarer des matrices dans Matlab
>> B = [4.2 7.6 8.2; 4.1 0.5 0]
4.2 7.6 8.2
4.1 0.5 0
>> C = [5.7 0.2 6.2 5.1; 7.1 2.4 8.4; 1.2 0.4 8.4 6.4]
30
Les matrices dans Matlab
Déclarer des matrices dans Matlab
.
>> D = [4 2 9 4 2]
4 2 9 4 2
. 3,5
>> E = [3.5 ; 7; 9; 8; 0] 7
9
8
0 31
Les matrices dans Matlab
Déclarer des matrices dans Matlab
>> A = [1 2 3; 4 5 6; 7 8.5 9; 10 11.5 12]
>> A = [4.2 7.6 8.2; 4.1 0.5 0]
>> A = 3
32
Les matrices dans Matlab
Accéder aux éléments des matrices
>> A(3,2)
>> A = [5.7 0.2 6.2 5.1; 8.7 7.1 2.4 8.4; 1.2 0.4 8.2 6.4]
>> y = A(2,4)
33
Les matrices dans Matlab
Accéder aux éléments des matrices
>> A = [5.7 0.2 6.2 5.1; 8.7 7.1 2.4 8.4; 1.2 0.4 8.2 6.4]
1 4 7 10
5.7 0.2 6.2 5.1
2 5 8 11
8.7 7.1 2.4 8.4
3 6 9 12
1.2 0.4 8.2 6.4
>> A(5)
ans =
7.1000 34
Les matrices dans Matlab
Accéder aux éléments des matrices
>> B = A(2:4,4:5)
5.7 0.2 6.2 5.1 3
8.7 7.1 2.4 8.4 6.1 8.4 6.1
1.2 0.4 8.2 6.4 2.7 6.4 2.7
2.3 6.7 6.5 5.2 10 5.2 10
2.1 1.8 0.6 7.2 8.2
35
Les matrices dans Matlab
Accéder aux éléments des matrices
>> B = A(2:4,:)
5.7 0.2 6.2 5.1 3
8.7 7.1 2.4 8.4 6.1 8.7 7.1 2.4 8.4 6.1
1.2 0.4 8.2 6.4 2.7 1.2 0.4 8.2 6.4 2.7
2.3 6.7 6.5 5.2 10 2.3 6.7 6.5 5.2 10
2.1 1.8 0.6 7.2 8.2
36
Les matrices dans Matlab
Taille d’une matrice
5.7 0.2 6.2 5.1
8.7 7.1 2.4 8.4
1.2 0.4 8.2 6.4
2.3 6.7 6.5 5.2
2.1 1.8 0.6 7.2
>> s = size(A)
5 4
37
Les matrices dans Matlab
Taille d’une matrice
5.7 0.2 6.2 5.1
8.7 7.1 2.4 8.4
1.2 0.4 8.2 6.4
2.3 6.7 6.5 5.2
2.1 1.8 0.6 7.2
>> numel(A)
ans =
20
38
Les matrices dans Matlab
Opérations de base sur les matrices
Symbole Description Exemple
+-* Les opérations de base (addition, soustraction, produit matriciel). A+B
Les tailles des matrices doivent être compatibles A*B
^ La puissance matricielle (itération du produit matriciel) A^3
’ Transposée d’une matrice A’
inv L’inversion d’une matrice (si son inverse existe) inv(A)
Symbole Description Exemple
+-*/ Réalise l’opération entre un scalaire et chaque élément de la matrice. 5.4*A
.* Réalise la multiplication terme à terme de deux matrices de même A.*B
taille.
.^ Met à une certaine puissance chaque élément de la matrice A.^3
39
Les matrices dans Matlab
Opérations de base sur les matrices
4 25 36
2 9 49
2 5 6
1.4 3 7
40
Les matrices dans Matlab
Opérations avancées sur les matrices
2.6 3.9 10
1.0 -3 3.2
16.5
3.6 0.9 13.2 1.2
41
Les matrices dans Matlab
Opérations avancées sur les matrices
>> b = sum(A,2) 3 2 1 8
4 1 3 6
2 2 0 5
14
14
42
Les matrices dans Matlab
Opérations avancées sur les matrices
>> b = sum(A,1) 3 2 1 8
3 2 1 8
43
Les matrices dans Matlab
Opérations avancées sur les matrices
>> b = sum(A,1)
>> c = sum(b,2)
>> c = sum(sum(A,2),1)
44
Les matrices dans Matlab
Opérations avancées sur les matrices
2.6 3.9 10
1.0 -3 3.2
10
2.6 3.9 10 3.2
45
Les matrices dans Matlab
Filtrage de matrices
8.7 7.1 2.4 8.4 6.1
1.2 0.4 8.2 6.4 2.7
2.3 6.7 6.5 5.2 10
1
8
10
15
46
Les matrices dans Matlab
Filtrage de matrices
8.7 7.1 2.4 8.4 6.1
1.2 0.4 8.2 6.4 2.7
2.3 6.7 6.5 5.2 10
>> l = find(A>8)
>> A(l) = 0
0 7.1 2.4 0 6.1
1.2 0.4 0 6.4 2.7
2.3 6.7 6.5 5.2 0
>> A(find(A>8))=0
47
Les matrices dans Matlab
Filtrage de matrices
>> k = find(A<1)
>> A(k) = A(k)+1
48
Les matrices dans Matlab
Filtrage de matrices
Symbole Description Exemple
> < Les comparaisons de base (supérieur, inférieur, supérieur ou égal, A >= 3
>= <= inférieur ou égal) A<5
== L’égalité A == 7.2
~= L’inégalité A ~= 8
Symbole Description Exemple
& Combine deux critères avec un et logique. (A > 3) & (A<8)
| Combine deux critères avec un ou logique. (A > 6) | (A < 3)
~ Inverse un critère ~((A > 3) & (A < 4))
49
Les matrices dans Matlab
Filtrage de matrices
>> k = find(A<0)
>> A(k) = -A(k)
50
Les matrices dans Matlab
Filtrage de matrices
8.7 7.1 2.4 8.4 6.1
1.2 0.4 8.2 6.4 2.7
2.3 6.7 6.5 5.2 10
>> B = (A < 3)
0 0 1 0 0
1 1 0 0 1
1 0 0 0 0
51
Les matrices dans Matlab
Filtrage de matrices
>> k = (A<0)
>> k = -2*k + 1
>> A = A.*k
52
Les matrices dans Matlab
Générer de nouvelles matrices
Fonction Description Exemple
rand(n,m) Génère une matrice remplie de nombre aléatoires entre 0 et A = rand(3,5)
1, de n lignes et m colonnes.
ones(n,m) Génère une matrice remplie de 1, de n lignes et m colonnes A = ones(4,4)
zeros(n,m) Génère une matrice remplie de 0, de n lignes et m colonnes A = zeros(1,3)
53
Les matrices dans Matlab
Concaténation de matrices
4 5 6 4 3
7 1 1 1 2
2 8 7 5 8 5 4 4
>> D = [A B]
>> E = [A ; C]
4 5 6 4 3 4 5 6
7 1 1
7 1 1 1 2
2 8 7
2 8 7 5 8
5 4 4
54
Le mot clef if – exécuter
du code sous condition
Le mot clef if
Le mot clef if
56
Le mot clef if
Un premier programme avec if
x=input(‘Entrez une valeur svp’);
y=2;
if x<4
y=0;
end
.
.
57
Le mot clef if
Syntaxe du if
//Bloc de code 0
if <condition 1>
//Bloc de Code 1
end
//Bloc de Code 2
58
Le mot clef if
Un exemple
x = input(‘Entrez une valeur : ‘);
if x<0
x = -x;
end
disp(x)
59
Le mot clef if
L’écriture de conditions
Symbole Description Exemple
&& Combine deux conditions avec un et logique. (A > 3) & (A<8)
|| Combine deux conditions avec un ou logique. (A > 6) | (A < 3)
~ Inverse une condition ~((A > 3) & (A < 4))
x = input(‘Entrez une valeur : ‘);
y = input(‘Entrez une autre valeur : ‘);
if x>0 && y>0
disp(‘Les deux valeur entrées sont positives’)
end
60
Le mot clef if
Le mot clef elseif
61
Le mot clef if
Un premier programme avec elseif
x=input(‘Entrez une valeur svp’);
y=2;
if x<4
y=0;
elseif x>9
y=1;
end
.
.
.
62
Le mot clef if
Un second programme avec elseif
a=input(‘Entrez votre age’);
if a>=100
disp(‘Vous êtes assez âgé’);
elseif a>=18
disp(‘Vous êtes majeur’);
elseif a>=16
disp(‘Vous pouvez conduire (accompagné)’);
end
.
.
.
63
Le mot clef if
Un second programme avec elseif
a=input(‘Entrez votre age’); a=input(‘Entrez votre age’);
if a>=100 if a>=100
disp(‘Vous êtes assez âgé’); disp(‘Vous êtes assez âgé’);
elseif a>=18 endif
disp(‘Vous êtes majeur’);
elseif a>=16 if a>=18
disp(‘Vous pouvez conduire’); disp(‘Vous êtes majeur’);
end endif
if a>=16
disp(‘Vous pouvez conduire’);
end
64
Le mot clef if
Syntaxe du if/elseif
//Bloc de code 0
if <condition 1>
//Bloc de Code 1
elseif <condition 2>
//Bloc de Code 2
elseif <condition 3>
//Bloc de Code 3
elseif ...
//...
end
//Bloc de Code n
65
Le mot clef if
Syntaxe du if/elseif
//Bloc de code 0
if <condition 1>
//Bloc de Code 1
elseif <condition 2>
//Bloc de Code 2
elseif <condition 3>
//Bloc de Code 3
elseif ...
//...
end
//Bloc de Code n
66
Le mot clef if
Syntaxe du if/elseif
a=input(‘Entrez votre note de contrôle
Matlab’);
if a<14
disp(‘Vous n’êtes pas très bon’);
elseif a>=15
disp(‘Pas mal’);
elseif a>18
disp(‘Vous pourrez passer en
deuxième année’);
elseif a<4
disp(‘Il y a des places de libres
en MACS...’);
67
Le mot clef if
Se passer du elseif
a = input(‘Entrez votre age : ‘);
a = input(‘Entrez votre age : ‘); if a>=100
disp(‘Vous êtes assez âgé’);
if a>=100 end
disp(‘Vous êtes assez âgé’);
elseif a>=18 if a>=18
disp(‘Vous êtes majeur’); disp(‘Vous êtes majeur’);
elseif a>=16 end
disp(‘Vous pouvez conduire’);
end if a>=16
disp(‘Vous pouvez conduire’);
end
68
Le mot clef if
Se passer du elseif
a = input(‘Entrez votre age : ‘);
a = input(‘Entrez votre age : ‘); if a>=100
disp(‘Vous êtes assez âgé’);
if a>=100 end
disp(‘Vous êtes assez âgé’);
elseif a>=18 if ~(a>=100) && a>=18
disp(‘Vous êtes majeur’); disp(‘Vous êtes majeur’);
elseif a>=16 end
disp(‘Vous pouvez conduire’);
end if ~(a>=100) && ~(a>=18) && a>=16
disp(‘Vous pouvez conduire’);
end
69
Le mot clef if
Le mot clef else
70
Le mot clef if
Un exemple
x = input('Entrez une valeur : ');
y = input('Entrez une valeur : ');
z = input('Entrez votre choix d operation : ');
if z==1
disp(x+y);
elseif z==2
disp(x*y);
elseif z==3
disp(x-y);
elseif z==4
disp(x/y);
end
71
Le mot clef if
Un exemple
x = input('Entrez une valeur : ');
y = input('Entrez une valeur : ');
z = input('Entrez votre choix d operation : ');
if z==1
disp(x+y);
elseif z==2
disp(x*y);
elseif z==3
disp(x-y);
elseif z==4
disp(x/y);
else
disp(‘Mauvais choix’);
end
72
Le mot clef if
Un second exemple avec else
a=input(‘Entrez votre age’);
if a>=100
disp(‘Vous êtes assez âgé’);
elseif a>=18
disp(‘Vous êtes majeur’);
elseif a>=16
disp(‘Vous pouvez conduire (accompagné)’);
else
disp(‘Vous êtes jeune’);
end
.
.
.
. 73
Le mot clef if
Syntaxe du if/elseif/else
//Bloc de code 0
if <condition 1>
//Bloc de Code 1
elseif <condition 2>
//Bloc de Code 2
elseif <condition 3>
//Bloc de Code 3
elseif ...
//...
else ...
//Bloc de code n
end
//Bloc de Code n+1
74
Le mot clef if
Syntaxe du if/elseif/else
//Bloc de code 0
if <condition 1>
//Bloc de Code 1
elseif <condition 2>
//Bloc de Code 2
elseif <condition 3>
//Bloc de Code 3
elseif ...
//...
else ...
//Bloc de code n
end
//Bloc de Code n+1
75
Le mot clef if
Exercice
x = input(‘Entrez une valeur ‘);
if x==0
disp(‘x est nul’);
elseif x>0
disp(‘x est positif’);
else x<0
disp(‘x est négatif’);
end
76
Le mot clef if
Exercice
x = input(‘Entrez une valeur ‘);
if x==0
disp(‘x est nul’);
else
disp(‘x est négatif’);
elseif x>0
disp(‘x est positif’);
end
77
Le mot clef if
Exercice
x = input(‘Entrez une valeur ‘);
if x==0
disp(‘x est nul’);
else
disp(‘x est négatif’);
else
disp(‘x est positif’);
end
78
Le mot clef if
Exercice
x = input(‘Entrez une valeur ‘);
if x==0
disp(‘x est nul’);
elseif x<0
disp(‘x est négatif’);
elseif
disp(‘x est positif’);
end
79
Le mot clef if
Exercice
x = input(‘Entrez une valeur ‘);
if x==0
disp(‘x est nul’);
if x<0
disp(‘x est négatif’);
if x>0
disp(‘x est positif’);
end
80
Le mot clef if
Exercice
x = input(‘Entrez une valeur ‘);
y = input(‘Entrez une valeur ‘);
if x>=0
if y >=0
disp(‘x et y sont positifs’);
else
disp(‘x est positif et y est négatif’);
end
else
if y >=0
disp(‘x est négatif et y est positif’);
else
disp(‘x et y sont négatifs’);
end
end
81
Le mot clef if
Diagramme d’évaluation d’un bloc if
Y a-t-il un elseif Y a-t-il un
ensuite ? else ensuite ?
La condition La condition
du if est du elseif est
vraie ? vraie ?
Exécuter le bloc de Sauter au mot clef
code situé à la suite end
82
Le mot clef if
La fonction modulo
>> a = mod(23,7);
>> disp(a)
2
83
Le mot clef if
La fonction modulo
a = input('Entrez une valeur : ');
if mod(a,7) == 0
disp('a est divisible par 7');
else
disp('a n est pas divisible par 7');
end
if (a%7 == 0)
{ ... }
84
Le mot clef if
La fonction modulo
a = input('Entrez une valeur : ');
if mod(a,2) == 0
disp('a est un nombre pair’);
else
disp('a est un nombre impair’);
end
85
Le bloc if
Conclusion
86
Les boucles
Les boucles
Les boucles
88
Les boucles
Première utilisation de la boucle for
>> v = rand(1,5);
>> disp(v);
0.8003 0.1419 0.4218 0.9157 0.7922
>> for k = v
>> disp('La valeur de k est ‘)
>> disp(k)
>> end
La valeur de k est 0.8003
La valeur de k est 0.1419
La valeur de k est 0.4218
La valeur de k est 0.9157
La valeur de k est 0.7922 89
Les boucles
Un autre exemple de boucle for
>> for i = 1:8
>> disp(i);
>> end
1
2
3
4
5
6
7
8
90
Les boucles
Un autre exemple avec une matrice
>> A = rand(3,2);
>> disp(A);
0.8147 0.9134
0.9058 0.6324
0.1270 0.0975
>> for i = A
>> disp(‘La valeur de i est ‘)
>> disp(i);
>> end
La valeur de i est
0.8147
0.9058
0.1270
La valeur de i est
0.9134
0.6324
0.0975
91
Les boucles
Un autre exemple avec un vecteur colonne
>> v = rand(4,1);
>> disp(v);
0.9572
0.4854
0.8003
0.1419
>> for i = v
>> disp(‘La valeur de i est ‘)
>> disp(i);
>> end
La valeur de i est
0.9572
0.4854
0.8003
0.1419
92
Les boucles
Syntaxe du for
//Bloc de code 0
for <variable> = <matrice>
//Bloc de Code 1
end
//Bloc de Code 2
93
Les boucles
Un exemple
v = rand(1,100000);
s = 0;
for i = v
s = s+i;
end
disp(s);
s = sum(v);
94
Les boucles
Temps d’exécution
Taille du vecteur Temps d’exécution avec for Temps d’exécution sans for
1*106 0,92s 1,1ms
2*106 1,65s 1,6ms
3*106 2,48s 3,6ms
4*106 3,20s 3,0ms
5*106 3,96s 3,7ms
6*106 4,90s 6,7ms
7*106 5,63s 5,0ms
8*106 6,46s 5,8ms
9*106 7,33s 6,7ms
95
Les boucles
Temps d’exécution
96
Les boucles
Temps d’exécution
97
Les boucles
Syntaxe du while
//Bloc de code 0
while <condition 1>
//Bloc de Code 1
end
//Bloc de Code 2
98
Les boucles
Syntaxe du while
//Bloc de code 0
while <condition 1>
//Bloc de Code 1
end
//Bloc de Code 2
99
Les boucles
Première utilisation de la boucle while
a = input('Entrez une valeur entiere : ');
s=1;
while a>1
s = s*a;
a = a-1;
end
disp(s);
100
Les boucles
Seconde utilisation de la boucle while
a = input('Entrez une valeur positive : ');
while a<0
a = input('Entrez une valeur positive : ');
end
disp(a);
101
Les boucles
Troisième utilisation de la boucle while
a = input('Entrez une valeur : ');
b = input('Entrez une valeur : ');
n = min(a,b);
while ~(mod(a,n)==0 && mod(b,n)==0)
n=n-1;
end
disp(n)
102
Les boucles
Quelle boucle utiliser ?
Programme for ou while ? Explications
factorielle(a) for/vectorisé La boucle se répétera (a-1) fois
nombre positif while On ne sait pas combien de fois l’utilisateur va saisir
un nombre négatif
pgcd(a,b) Les deux Soit on teste tous les entiers entre 1 et min(a,b), soit
on teste ceux entre a et 1 jusqu’à en trouver un qui
divise.
103
Les boucles
Factorielle avec for
a = input('Entrez une valeur entiere : ');
s=1;
for i = 1:a
s = s*i;
end
disp(s);
a = input('Entrez une valeur : ');
s = prod(1:a);
disp(s);
104
Les boucles
Le mot clef break
105
Les boucles
Conclusion
106