Académique Documents
Professionnel Documents
Culture Documents
ArGEnCo - MS2F
e
Hydrologie, Hydrodynamique Applique
Constructions Hydrauliques (HACH)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
1
2
2
2
3
3
3
4
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
6
7
7
8
9
9
10
12
3 R
esolution de syst`
emes
3.1 Decompositions de matrice . . . . . . . . .
3.2 Valeurs et vecteurs propres . . . . . . . . .
3.3 Determinant . . . . . . . . . . . . . . . . . .
3.4 Simplification dequations . . . . . . . . . .
3.5 Resolution symbolique . . . . . . . . . . . .
3.5.1 Derivees et integrales . . . . . . . .
3.5.2 Equations
et syst`emes . . . . . . . .
3.6 Resolution de syst`emes lineaires . . . . . . .
3.7 Resolution symbolique de syst`emes lineaires
3.8 Resolution dequations differentielles . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
13
13
13
13
14
14
14
16
16
16
17
4 Statistiques
4.1 Statistiques descriptives . . . . . .
4.1.1 Affichage simple de donnees
4.1.2 Affichage avance de donnees
4.1.3 Correlation entre variables .
4.2 Distribution de probabilites . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
18
18
18
19
22
22
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . .
. . .
. .
. . .
. . .
i
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.3
4.4
Interpolations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Regression lineaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
26
5 Temps
27
5.1 Connatre le temps dexecution . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.2 Programmation parall`ele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3 Comparatif Fortran, C++, Matlab . . . . . . . . . . . . . . . . . . . . . . . . . 28
6 Programmation
6.1 Les m-files . . . . . . . . . . . . . . . .
6.2 Hello world . . . . . . . . . . . . . . .
6.3 Les operateurs logiques . . . . . . . . .
6.4 Les mots gardes . . . . . . . . . . . . .
6.5 Entrees / sorties . . . . . . . . . . . .
6.5.1 Utilisateurs . . . . . . . . . . .
6.5.2 Disques . . . . . . . . . . . . .
6.6 Le contr
ole de lexecution . . . . . . .
6.6.1 Boucle FOR . . . . . . . . . . .
6.6.2 Boucle WHILE . . . . . . . . .
6.6.3 Instruction de choix IF . . . . .
6.6.4 Instruction de choix SWITCH
6.7 Les fonctions . . . . . . . . . . . . . .
6.7.1 Les fonctions simples . . . . . .
6.7.2 Les fonctions recursives . . . .
6.8 Exemple de programme . . . . . . . .
6.8.1 Exemple 1 . . . . . . . . . . . .
6.8.2 Exemple 2 . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7 Traitement dimages
7.1 Chargement / affichage dune image . . . . . .
7.2 Modifier une image . . . . . . . . . . . . . . . .
7.3 Decomposition dune image en ses composantes
7.4 Rotations dimages . . . . . . . . . . . . . . . .
7.5 Erosion, dilatation et combinaisons . . . . . . .
7.6 Detection de contours . . . . . . . . . . . . . .
7.7 Detection amelioree de contours . . . . . . . .
7.8 Affichage 3 dimensions . . . . . . . . . . . . . .
7.9 Histogramme des composantes . . . . . . . . .
7.10 Seuillage . . . . . . . . . . . . . . . . . . . . . .
7.11 Seuillage ameliore . . . . . . . . . . . . . . . . .
7.12 Transformee de Fourier . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
31
31
31
32
32
32
32
33
33
33
33
34
34
35
35
36
36
36
37
. . . . .
. . . . .
couleurs
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
38
38
39
40
44
45
47
47
49
50
51
53
54
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
p. ii
Chapitre 1
Pour d
ebuter
1.1
D
efinitions de scalaires
La definition delements est assez intuitive. Il est cependant toujours recommande dutiliser des conventions pour la nomenclature des variables. Par exemple, que tous les noms des
scalaires commencent par une minuscule et tous les noms des matrices par une majuscule, etc.
De plus, il est vivement conseille de choisir des noms de variables explicites sans pour autant
les rendre trop long (exemple : MatriceDeDilatation, nbr itaration, ...)
Remarques :
Matlab est sensible `
a la case des variables.
Un nom de variable doit commencer par une lettre. Il peut ensuite contenir des chiffres
et dautres symboles.
% Definitions de scalaires %
a = 1;
A = 2;
A = A * 2;
1.2
disp(a) ;
disp(A) ;
%a=1
%A=4
z = 3 + 4*i ;
% Nombre complexe
D
efinitions de vecteurs et de matrices
Pour definir un vecteur sous Matlab, il suffit de mettre ses valeurs entre crochets et de les
separer par un espace. Pour obtenir un vecteur vertical, il suffit de le transposer via lajout
dun apostrophe apr`es le crochet fermant.
p. 1
% Vecteurs - %
vecH = [ 1 2 3 4 5] ;
vecV = [ 1 2 3 4 5] ;
% Vecteur horizontal
% Vecteur vertical
% Matrices %
mat = [ 1 2 3 ;
4 5 6 ];
% Ligne 1
% Ligne 2
% Matrices Complexes %
Z = [1 2 ; 3 4] + i * [5 6 ; 7 8]
1.3
Cr
eation de matrices particuli`
eres
Matlab permet de creer de mani`ere simplifiee des matrices speciales comme, par exemple,
des matrices remplies de 1 ou de 0, etc. (m et n sont les dimensions de la matrice souhaitee
et A est une matrice)
% Definitions de matrices speciales %
eye(m,n)
ones(m,n)
zeros(m,n)
rand(m,n)
diag(m,n)
meshgrid(m :n,k :l)
1.4
%
%
%
%
%
%
Matrice unite
Matrice dont tous les elements sont egaux a
` un
Matrice dont tous les elements sont egaux a
` zero
Matrice delements aleatoires
Matrice diagonale
Renvoie deux matrices de grilles definissant un quadrillage
Op
erateurs de bases
Les operateurs ci-dessous sont valables pour les scalaires comme pour les matrices. Matlab
effectuera la bonne operation en fonction du type des termes de loperateur.
% Definitions de matrices speciales %
+
*
/
\
1.5
%
%
%
%
%
%
%
Transposition (matrice)
Addition
Soustraction
Multiplication
Division `
a droite
Division `
a gauche
Puissance
Voici une liste non-exhaustive des fonctions de bases sur les nombres scalaire.(dans lexemple :
z represente un nombre complexe).
p. 2
1.6
%
%
%
%
%
%
%
%
Voici une liste non-exhaustive des fonctions de bases sur les vecteurs et matrices. (Dans
lexemple : V et A representent des vecteurs ou des matrices).
% Fonctions sur les matrices - %
cumsum(V)
cumprod(V)
sum(V)
prod(V)
tril(A)
triu(A)
sort(A)
fliplr(A)
flipud(A)
rank(A)
trace(A)
1.7
%
%
%
%
%
%
%
%
%
%
%
Somme cumulee
Produit cumule
Soustraction
Multiplication
Extraction de la partie triangulaire inferieure dune matrice
Extraction de la partie triangulaire superieure dune matrice
Trie la matrice
Retourne la matrice horizontalement
Retourne la matrice verticalement
Rang de la matrice
Somme des elements diagonaux
Op
erations
el
ement par
el
ement
Ajouter un point devant un des operateurs classiques signifie que lon effectue loperation
element par element. ( Exemple A,B,C etant des matrice, C = A .+ B C(i,j) = A(i,j) +
B(i,j)).
% Operations element par element %
.+
..*
./
.
1.8
%
%
%
%
%
Addition
Soustraction
Multiplication
Division
Puissance
Constantes pr
ed
efinies
p. 3
eps
i
Inf
intmax
intmin
j
NaN
pi
realmax
realmin
1.9
%
%
%
%
%
%
%
%
%
%
Le typage de donn
ees
Matlab effectue ce que lon appel du typage dynamique, autrement dit il adapte le type
des operateurs de mani`ere `
a permettre aux operations de seffectuer. Cette pratique `a des
avantages comme des inconvenients dun cote cela evite au programmeur de devoir definir `
a
lavance le type de chaque variable et detre coince tout au long de lexecution par ce type.
Dun autre cote, lorsque le typage est dynamique, Matlab effectue des conversions de type
implicites sans le signaler, ce qui peut augmenter le temps dexecution et parfois mener `a des
resultats surprenant.
Il est cependant possible de forcer Matlab `a faire des conversions explicites.
Fonctions de conversions :
% Fonctions de conversion
cast
double
int8, int16, int32, int64
single
typecast
uint8, uint16, uint32, uint64
% Fonctions
base2dec
bin2dec
cast
hex2dec
hex2num
str2double
str2num
unicode2native
%
% Cast variable to different data type
% Convert to double precision
% Convert to signed integer
% Convert to single precision
% Convert data types without changing underlying data
% Convert to unsigned integer
p. 4
Chapitre 2. Graphiques
Chapitre 2
Graphiques
2.1
Graphique simple
Les quelques commandes suivantes montrent comment afficher un graphique simple. Matlab ne sachant travailler quen valeurs discr`etes, il faut dabord commencer par definir lintervalle de valeurs de labscisse. Une fois ceci fait, on calcul la valeur de la fonction (dans notre
cas un cosinus) pour chaque echantillon de temps et lon arrive au vecteur y.
% Graphique simple %
t = 0 :pi/30 :2*pi ;
y = cos(t) ;
% Abscisse de 0 a
` 2 par pas de /30
% Valeurs de la fonction dans le temps
figure ;
plot(t,y)
title(Cos dans lintervalle [0,pi]) ;
xlabel(Temps) ;
ylabel(Cos(temps)) ;
text(pi/4,cos(pi/4), Je suis en [pi/4])
%
%
%
%
%
%
Nouvelle fenetre
Tracer
Titre
Legende en abscisse
Legende en ordonnee
Chane de caract`eres `
a la position x,y
p. 5
Chapitre 2. Graphiques
2.2
Graphique avanc
e
Matlab permet de personnaliser les graphiques. Par exemple, il est possible de changer la
couleur du trait, de marque les points avec differents symbole tels que x,o,*, ... etc. Voici un
apercu simple de ce qui est possible de faire.
% Graphique avance %
figure ;
% Nouvelle fenetre
t = 0 :pi/30 :2*pi ;
y = cos(t) ;
% Definition de temps
% Fonction du temps
subplot(2,2,1)
plot(t,y) ;
title(Normal) ;
subplot(2,2,2)
plot(t,y,r) ;
title(En rouge) ;
subplot(2,2,3)
plot(t,y,or) ;
title(Cercles non relies) ;
subplot(2,2,4)
plot(t,y,*-g) ;
title(Etoiles reliees en verte) ;
p. 6
Chapitre 2. Graphiques
2.3
Graphiques multiples 1
Il est possible de tracer plusieurs courbes sur le meme graphique. Pour ce faire, une methode
consiste `a mettre lensemble des fonctions `a tracer dans les parenth`eses qui suivent la commande plot.
% Graphique multiple 1 %
2.4
figure ;
% Nouvelle fenetre
x = linspace(0,pi,30) ;
plot(x,cos(x),o-r,x,sin(x),x-b,x,exp(-x),*-g)
legend(cos(x),sin(x),exp(-x))
% Fonction du temps
% Tracer
% Legende sur graphique
Graphiques multiples 2
Une autre methode pour tracer plusieurs courbes sur un meme graphique consiste `a activer
la commande Hold On ce qui stipule `
a Matlab de dessiner les graphiques les uns sur les autres.
% Graphique multiple 2 %
figure ;
% Nouvelle fenetre
x = linspace(0,pi,30) ;
% Fonction du temps
hold on
plot(x,cos(x),o-r)
plot(x,sin(x),x-b)
plot(x,exp(-x),*-g)
legend(cos(x),sin(x),exp(-x))
%
%
%
%
%
Maintient du graphique
Tracer points ronds relies en rouge
Tracer points croix relies en vert
Tracer points etoiles relies en bleu
Legende sur graphique
p. 7
Chapitre 2. Graphiques
2.5
Graphiques polaires
% Nouvelle fenetre
t = 0 :.01 :2*pi ;
polar(t,sin(2*t).*cos(2*t),r)
% Echelle
du temps
% Graphique polaire en pointille rouge
p. 8
Chapitre 2. Graphiques
2.6
Graphiques `
a
echelles logarithmiques
Il est aussi possible de dessiner des graphiques avec un ou plusieurs axes sous forme logarithmique.
% Graphique `
a echelles logarithmiques %
2.7
figure ;
% Nouvelle fenetre
x = 0 :0.01 :1 ;
subplot(3,1,1) ;
loglog(x,exp(x)) ;
% Zone superieure
% Echelle logarithmique deux axes
subplot(3,1,2)
semilogx(x,exp(x))
% Zone centrale
% Echelle logarithmique sur laxe Ox
subplot(3,1,3)
semilogy(x,exp(x))
% Zone inferieure
% Echelle logarithmique sur laxe Oy
Graphiques `
a 3 dimensions
p. 9
Chapitre 2. Graphiques
2.8
%
%
%
%
Etalonnage
des axes
Il est aussi possible de realiser des contours. Ces fonctions relient les points de meme
hauteur (valeur) par des courbes. De plus, la couleur des courbes est liee `a la valeurs quelle
represente.
% Graphique de Contours 3 dimensions %
figure ;
% Nouvelle fenetre
subplot(3,1,1) ;
meshc(X,Y,Z) ;
% Zone superieure
% Affichage 3 dimensions
subplot(3,1,2)
contour(Z,15)
% Zone centrale
% Contour 15 niveaux
subplot(3,1,3)
contour3(Z,15)
% Zone inferieure
% Contour 3 dimensions 15 niveaux
p. 10
Chapitre 2. Graphiques
p. 11
Chapitre 2. Graphiques
2.9
Normales de surfaces
Enfin, il est possible sous Matlab de representer des surfaces `a trois dimensions ainsi que
leur normale.
% Normales de surfaces %
figure ;
% Nouvelle Fenetre
p. 12
Chapitre 3
R
esolution de syst`
emes
3.1
D
ecompositions de matrice
Matlab permet de separer des matrices selon plusieurs decompositions tels que LU, QR,
SVD, etc.
% Decomposition de matrice - %
3.2
A = [ 1 2 3;
4 5 6;
7 8 9] ;
% Definition de A
[L U] = lu(A)
% Decomposition LU
[Q R] = qr(A)
% Decomposition QR
[U S V] = svd(A)
% Decomposition USV
3.3
A = [ 1 2 3;
4 5 6;
7 8 9] ;
% Definition de A
D
eterminant
p. 13
3.4
A = [ 1 2 3;
4 5 6;
7 8 9] ;
% Definition de A
det(A)
% ans =
0
% Determinant de la matrice A
Simplification d
equations
3.5
3.5.1
syms x ;
f = cos(x)2 + sin(x)2 ;
f = simple(f)
%f=
%
1
syms x ;
g = cos(3*acos(x)) ;
g = simple(g)
%g=
%
4*x3-3*x
R
esolution symbolique
D
eriv
ees et int
egrales
Matlab est capable de deriver ou dintegrer des expressions symboliques. Pour ce faire,
il faut declarer les symboles via la commande sims.Il est aussi possible de forcer Matlab `
a
deriver par rapport `
a une variable precise en lajoutant en argument `a la fonction
p. 14
% Derivee symbolique %
syms x ;
% Declaration des symboles
diff(sin(x2))
% Derivation symbolique
% ans =
%
2*x*cos(x 2)
% Derivee symbolique six fois - %
syms t ;
diff(t6,6)
% ans =
%
720)
% Integrale de 0 a
` 1 - %
syms x ;
int(x*log(1 + x), 0, 1)
% ans =
%
1/4
p. 15
3.5.2
Equations
et syst`
emes
3.6
syms t m ;
solve(sin(t + m))
% ans =
%
-m
syms a b c x ;
solve(a*x2 + b*x + c,b)
% ans =
%
-(a*x2+c)/x
R
esolution de syst`
emes lin
eaires
Voici comment resoudre un syst`eme lineaire. Dans ce cas-ci, lintersection de deux droites.
% Resolution dun syst`eme %
syms x ;
S = solve(x + 2*y = 1,x - 1*y = 5) ; ;
S = [S.x S.y] ;
%S=
%
[ 11/3, -4/3]
3.7
R
esolution symbolique de syst`
emes lin
eaires
Matlab permet aussi de resoudre symboliquement des syst`emes lineaires. Il faut bien entendu commencer par preciser les symboles via la commande syms.
p. 16
3.8
R
esolution d
equations diff
erentielles
Matlab permet la resolution dequations differentielles que lon dispose de conditions initiales ou non.
%z=
% [ C1*sin(t)+C2*cos(t), C1*cos(t)-C2*sin(t)]
% Resolution de syst`emes dequations differentielles avec conditions initiales %
syms x y ;
Z = dsolve(Dx = y, Dy = -x,y(0) = 2,x(0) = 1) ;
Z = [Z.x Z.y]
%z=
%
[ cos(t)+2*sin(t), -sin(t)+2*cos(t)]
p. 17
Chapitre 4. Statistiques
Chapitre 4
Statistiques
4.1
Statistiques descriptives
Lensemble des fonctions suivantes prennent en arguments soit un vecteur, soit une matrice. Dans le cas dune matrice chaque colonne est traitee comme une variable differente et
le resultat des fonctions est donc un vecteur.
% Statistiques descriptives %
4.1.1
x = [1 5 74 ;
1 5 74 ;
3 6 10 ;
5 9 20 ;
7 8 99] ;
% Definition de la matrice
geomean(x),
harmmean(x),
mean(x),
median(x)
mode(x),
var(x),
std(x),
range(x),
%
%
%
%
%
%
%
%
max(x),
min(x),
% Valeur maximum
% Valeur minimum
prod(x)
sum(x)
sort(x)
Moyenne geometrique
Moyenne harmonique
Moyenne arithmetique
ement milieu du vecteur trie
El
Valeur la plus frequente
Variance (n-1)
Deviation standard (n-1)
Intervalle des valeurs
Matlab permet laffichage de nuages de points. Pour ce faire, il faut lui fournir les coordonnees des points en deux vecteurs x et y.
Il est de plus possible de classer les points en differents groupes via une troisi`eme matrice.
Les points ayant la meme etiquette dans cette matrice sont consideres comme faisant partie
p. 18
Chapitre 4. Statistiques
du meme groupe.
% Affichage simple de donnees %
x = [ 1 2 8 5 7 9 6 4 7 5] ;
y = [ 7 5 8 9 4 6 8 2 4 7] ;
group = [ 1 2 1 1 2 2 1 2 1 2] ;
gscatter(x,y,group) ;
4.1.2
%
%
%
%
Affichage avanc
e de donn
ees
Il est aussi possible dafficher les donnees de differentes mani`ere comme par exemple en
histogramme, en boxplots, en distribution cumulative, etc.
p. 19
Chapitre 4. Statistiques
figure ;
hist(x)
% Nouvelle fenetre
% Histogram (1 par colonne)
figure ;
boxplot(x)
% Nouvelle fenetre
% Boxplots (1 par colonne)
figure ;
cdfplot(y)
% Nouvelle fenetre
% Distribution cumulative
figure ;
normplot(x)
% Nouvelle fenetre
% Probabilite normale (un par colonne).
p. 20
Chapitre 4. Statistiques
p. 21
Chapitre 4. Statistiques
4.1.3
Corr
elation entre variables
%
%
%
%
Correlation %
R = corrcoef(X) returns a matrix R of correlation coefficients calculated
from an input matrix X whose rows are observations and whose
columns are variables.
x = [ 1 2;
2 4;
1 3;
48
2 5]
disp(Correlations :)
corrcoef(x),
4.2
% Affichage
% Calcul de correlation
Distribution de probabilit
es
La toolBox statistics de Matlab fournis 5 fonctions qui peuvent etre utilisees avec les
differentes loi de probabilite.
Fonction de densite de probabilite :
Ici, la fonction est appelee dans le cas dune loi normal :
p. 22
Chapitre 4. Statistiques
% densite de probabilite %
x = [-3 :0.1 :3] ;
f = normpdf(x,0,1) ;
Pour chaque pdf, le premier argument est lensemble des donnees, les arguments suivants
sont les param`etres necessaire pour les lois de probabilites. (dans lexemple nous avons
une loi normale de = 0 et de = 1 )
Fonction de distribution cumulative :
% Distributions cumulatives %
x = [-3 :0.1 :3] ;
p = normcdf(x,0,1) ;
La variable p contient les probabilites associees avec la distribution cumulative de probabilite de = 0 et de = 1.
Fonction de distribution cumulative inverse :
% Distributions cumulatives inverse %
x = [-3 :0.1 :3] ;
xnew = norminv(normcdf(x,0,1),0,1) ;
Generateur aleatoire :
Il est possible de generer des valeurs aleatoires pour chaque distribution. ( dans lexemple :
la commande suivante renvoie un nombre aleatoire pour la loi normale de = 0 et de
= 1)
% Generateur aleatoire %
x = normrnd(0,1)
En ajoutant les arguments M et N : normrnd(0,1,M,N), la fonction renvoie alors une
matrice de nombre aleatoire suivant la loi de probabilite.
Moyenne et variance
La commande suivante permet de recuperer la moyenne et la variance dune fonction de
probabilite.
% Moyenne et variance %
[m,v] = normstat(0,1)
p. 23
Chapitre 4. Statistiques
4.3
Beta distribution
Binomial distribution
Chi-Square distribution
Exponential distribution
F distribution
Gamma distribution
Geometric distribution
Hypergeometric distribution
Lognormal distribution
Multivariate normal distribution
Multivariate t distribution
Negative binomial
Poisson cumulative distribution
Uniform (discrete) distribution
Uniform (continuous) distribution
Weibull distribution
Interpolations
Matlab permet dinterpoler des points entre les donnees qui lui sont fournies. Il est possible
deffectuer des interpolations lineaire, cubic, etc.
% Interpolation lineaire %
figure ;
% Nouvelle fenetre
x = 0 :15 ;
y = sin(x) ;
plot(x,y,or) ;
hold on
%
%
%
%
Vecteur du temps
Sinus correspondant `
ax
Affichage
Maintient du graphique
p. 24
Chapitre 4. Statistiques
% Interpolation cubic %
figure ;
% Nouvelle fenetre
x = - 5 :5 ;
y = x.
3;
plot(x,y,or) ;
hold on
%
%
%
%
xInterp = -5 :.25 :5 ;
yInterp = interp1(x,y,xInterp, spline) ;
plot(xInterp,yInterp,x-b) ;
Vecteur du temps
evation au cube correspondant `
El
ax
Affichage
Maintient du graphique
p. 25
Chapitre 4. Statistiques
4.4
R
egression lin
eaire
Matlab permet aussi deffectuer des regressions lineaires. Pour ce faire, il faut disposer
de deux vecteurs, lun contenant les donnees en x et leur occurrence et lautre contenant les
donnees correspondantes en y.
% Regression lineaire %
X = [1 1 1 1 1 1 1 1 1 ;
1 0.5 3 5 3 6 7 9 8] ;
y = [0 1 2 3 6 8 7 4 5] ;
[B,BINT,R,RINT,STATS] = regress(y,X,0.05)
% Fonction de regression
figure ;
plot(y,X( :,2),b.)
refline(B(2),B(1))
% Nouvelle fenetre
% Affichage des points
% Affichage de la droite
p. 26
Chapitre 5. Temps
Chapitre 5
Temps
5.1
Pour connaitre le temps dexecution dun script, il suffit de le placer les commandes
dinterets entre les mot-cles tic et toc. tic declenche le chronom`etre tandis que toc arrete
le chronom`etre et affiche lintervalle de temps.
% Temps dexecution %
5.2
tic ;
% Lancement du chronom`etre
% Instructions dinterets
toc
% Arret du chronom`etre
Programmation parall`
ele
Matlab permet le travail en parall`ele. Cependant pour ce faire la librairie suivante est
requise : Parallel Computing Toolbox
Pour travailler en parall`ele, il fait tout dabord creer des pools dans la session Matlab et ensuite utiliser la commande parfor pour repartir le travail entre les differents pools. Lexemple
suivant montre comment effectuer simultanement sur 3 curs differents la recherche de valeurs
propres de grandes matrices.
% Executions parall`eles - %
matlabpool(3)
parfor i=1 :3,
c( :,i) = eig(rand(1000)) ;
end
p. 27
Chapitre 5. Temps
5.3
A = zeros(2000,2000) ;
B = zeros(2000,2000) ;
C = zeros(2000,2000) ;
tic
% Declenche le Chronom`etre
for i = 1 :2000
for j=1 :2000
A(i,j) = i ;
B(i,j) = i ;
C(i,j) = 0 ;
end
end
for i = 1 :2000
for j=1 :2000
for k=1 :2000
C(i,j) = C(i,j) + (A(i,k) * B(k,j)) ;
end
end
end
toc
% Arret du chronom`etre
p. 28
Chapitre 5. Temps
p. 29
Chapitre 5. Temps
p. 30
Chapitre 6. Programmation
Chapitre 6
Programmation
6.1
Les m-files
Un m-file est un fichier contenant une suite dinstructions que Matlab peut executer. Un
m-file peut aussi etre utilise comme fichier de librairie contenant des fonctions definies par
lutilisateur.
Pour creer un m-file, utilisez le menu File
6.2
new M-file.
Hello world
p. 31
Chapitre 6. Programmation
6.3
Les op
erateurs logiques
% Operateurs logiques %
<
>
<=
>=
==
=
&
|
&&
||
xor(x,y)
any(x)
all(x)
6.4
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Les mots ou caract`eres suivant ont une signification particuli`ere dans le langage de Matlab.
% Mots/symboles gardes %
:
()
[]
{}
.
.( )
..
...
,
;
%
%%
!
6.5
6.5.1
Entr
ees / sorties
Utilisateurs
Les commandes suivantes permettent linteraction avec lutilisateur lors de lexecution dun
script. Lutilisateur peut dans lexemple ci-dessous saisir un nombre que le script pourra alors
utiliser. Dans le sens inverse la commande disp permet dafficher des variables `a lutilisateur.
p. 32
Chapitre 6. Programmation
% Exemple 1 - %
n = input(Saisissez un nombre :) ; Saisie de lutilisateur
disp(n) ;
Sortie vers laffichage Matlab
6.5.2
Disques
Il est aussi possible dexporter ou dimporter des donnees sur le disque dur via les deux
commandes suivantes.
% Exemple 1 - %
save D : ...save.txt
load D : ... save.txt
6.6
6.6.1
Sauvegarde le workspace
Charge le workspace
Le contr
ole de lex
ecution
Boucle FOR
La boucle FOR permet deffectuer des operations pour un nombre diterations definis. (Par
exemple : pour n = 0 jusqu`
a 20 par pas de deux, effectuer les operations suivantes).
Lavantage de la boucle FOR sur la boucle WHILE est sa simplicite decriture dans le cas dun
nombre diterations definis et bien connu `a lavance (par exemple, le parcours dun tableau).
Autre remarque, lors de lexecution de la boucle FOR, la variable qui sert `a boucler est
accessible en lecture et en ecriture. Il est donc possible de reduire ou daugmenter le nombre
diterations au cours de lexecution de la boucle.
% Exemple 1 - %
for n = 1 :5
disp(n)
end
% Exemple 2 - %
for n = 8 :-2 :0
disp(n)
end
% Exemple 3 - %
for n = [ 1 9 3 5 6 7 ]
disp(n)
end
6.6.2
Boucle WHILE
Le boucle Permet deffectuer des operations de mani`ere repetee jusqu`a ce quune condition
soit falsifiee. (Par exemple : tant que la solution nest pas precise `
a 4 decimales, continuer `
a
p. 33
Chapitre 6. Programmation
%
%
%
%
%
%
%
n = n + 1;
m = m - 1;
disp(n) ;
disp(m) ;
end
6.6.3
Instruction de choix IF
Linstruction IF est une instruction de choix. Autrement dit, en fonction que son gardien
sera evalue vrai ou faux, la commande executera un groupe dinstructions ou lautre.
% Exemple 1 %
n = 5;
m = 8;
if (n > 0)
if ( n > 5 && m < 0)
disp (ici 1)
elseif (n == 5)
disp (ici 2)
else
disp(ici 3)
end
else
disp(ici 4)
end
6.6.4
% Gardien 1
%
%
%
%
%
%
%
Gardien 1 et gardien 2
Affichage
Si gardien1 et non gardien2 et gardien 3
Affichage
Si gardien1 et non gardien2 et non gardien 3
Affichage
Linstruction SWITCH est une instruction de choix comme le IF mais avec la particularite
de pouvoir effectuer plus de branchements que le IF.
La commande SWITCH doit etre utilisee dans le cas ou, par exemple, en fonction de la valeur
dune variable, on effectue differentes operations. Attention toute fois, que le nombre de valeurs possibles de cette variable doit etre restreint pour conserver une certaine lisibilite du code.
Le mot cle break signifie que lon arrete la commande SWITCH et que lon transfert
lexecution au mot cle end.
p. 34
Chapitre 6. Programmation
% Exemple 1 %
n = input(Pour sauver jack tapez 1,
Jessy tapez 2, Brian tapez 3 :) ;
switch n
case 1
disp(Jack est sauve)
break
% Si n vaut 1
case 2
disp(Jessy est sauve)
break
% Si n vaut 2
case 3
disp(Brian est sauve)
break
% Si n vaut 3
otherwise
disp(Vous navez sauve personne)
end
6.7
6.7.1
Les fonctions
Les fonctions simples
Matlab permet de definir des fonctions. Une fonction est un ensemble dinstructions regroupees de mani`ere `
a ne pas devoir les repeter reguli`erement.
Une fonction peut prendre des arguments et renvoyer des valeurs. (Par exemple, si lon
fourni `
a une fonction une date de naissance, cette fonction peut renvoyer l
age de la personne)
La definition dune fonction se fait de la mani`ere suivante :
function arguments de sortie = nomDeMaFonction (arguments dentree).
Attention, pour que matlab reconnaisse une fonction et sache lutiliser `a partir de lespace
de travail, il est obligatoire que le nom du M-file soit identique au nom donne `a la fonction.
p. 35
Chapitre 6. Programmation
% Fonction simple - %
%
%
%
%
%
%
%
Fonction isOdd
Cette fonction prend en argument un nombre et renvoie
true si ce nombre est impair, false si non.
Argument : un nombre
Valeur de retour : un boolean
Code place dans isOdd.m
function p = isOdd(n)
if (mod(n,2) == 1)
p = true ;
else
p = false ;
end
6.7.2
Les fonctions r
ecursives
Une fonction est dite recursive si elle sappelle elle-meme. La fonction suivante est recursive
et permet de calculer la factoriel dun nombre.
% Fonction recursive - %
%
%
%
%
%
%
%
Fonction fact
Cette fonction prend en argument un entier positif
et renvoie la factoriel correspondante.
Argument : un entier positif
Valeur de retour : un entier positif
function y = fact(n)
if (n <= 1)
y = 1;
else
y = n * fact(n-1) ;
end
6.8
6.8.1
Exemple de programme
Exemple 1
p. 36
Chapitre 6. Programmation
% Exemple 1 - %
img12 = imread(img12.png) ;
img4 = imread(img4.jpg) ;
% Chargement de limage
% Chargement de limage
figure ;
% Nouvelle fenetre
subplot(1,2,1)
imshow(img4)
% Zone superieure
% Affichage
subplot(1,2,2)
imshow(img12)
% Zone droite
% Affichage
[m,n] = size(img12) ;
blackPoints = 0.0 ;
otherPoints = 0.0 ;
% Dimensions de limage
% Initialisation
% Initialisation
for i = 1 :m
for j = 1 :n
% Boucle verticale
% Boucle horizontale
if (img12(i,j) == 0)
blackPoints = blackPoints + 1 ;
else
otherPoints = otherPoints + 1 ;
end
%
%
%
%
end
end
6.8.2
disp(blackPoints)
disp(otherPoints)
% Affichage
% Affichage
% Pourcentage
Exemple 2
p. 37
Chapitre 7
Traitement dimages
7.1
Code
Le code suivant permet le chargement et laffichage dimages. La commande close all
est importante car elle permet de fermer toutes les fenetres graphiques actuellement ouvertes.
% Chargement/Affichage dune image %
close all
img1 = imread(img1.jpg) ;
figure ;
imshow(img1) ;
axis image ;
colorbar
%
%
%
%
%
%
%
%
%
%
%
[1]
axis equal sets the aspect ratio so that the data units are the same in every direction.
The aspect ratio of the x-, y-, and z-axis is adjusted automatically according
to the range of data units in the x, y, and z directions.
axis image is the same as axis equal except that the plot box fits
tightly around the data.
p. 38
R
esultats
7.2
Objetcif
Lobjectif de ce code et de recuperer ou de modifier la couleur dun pixel. Ici, lexemple
travail en RGB mais il est possible de travailler en HSV ou autre.
Code
% Recuperer / Modifier pixel - %
img1 = imread(img1.jpg) ;
%
%
%
%
% Affichage texte
% Plusieurs composantes de rouge
Affichage de texte
Composante de rouge du pixel (250,250)
Composante de vert du pixel (250,250)
Composante de bleu du pixel (250,250)
p. 39
R
esultats
7.3
D
ecomposition dune image en ses composantes couleurs
Objectif
Lobjectif est ici de decomposer une image en ses composantes. Dans un premier temps,
la decomposition seffectue selon les composantes RGB et dans un second temps selon les
composantes HSV.
p. 40
Code
% Diviser une image en ses composantes RGB %
img1 = imread(img1.jpg) ;
figure ;
img1R = img1 ;
img1R( :, :,2) = 0 ;
img1R( :, :,3) = 0 ;
subplot(3,1,1) ;
imshow(img1R) ;
%
%
%
%
Mise `
a zero de la composante de vert
Mise `
a zero de la composante de bleu
Positionnement en zone superieure
Affichage
img1G = img1 ;
img1G( :, :,1) = 0 ;
img1G( :, :,3) = 0 ;
subplot(3,1,2) ;
imshow(img1G) ;
%
%
%
%
Mise `
a zero de la composante de rouge
Mise `
a zero de la composante de bleu
Positionnement en zone centale
Affichage
%
%
%
%
Mise `
a zero de la composante de rouge
Mise `
a zero de la composante de vert
Positionnement en zone inferieure
Affichage
p. 41
R
esultats
p. 42
Code
% Diviser une image en ses composantes HSV %
img1 = imread(img1.jpg) ;
figure ;
% Nouvelle fenetre
img1 = rgb2hsv(img1) ;
% Conversion en HSV
img1H = img1 ;
img1H( :, :,2) = 1 ;
img1H( :, :,3) = 1 ;
subplot(3,1,1) ;
img1H = hsv2rgb(img1H) ;
imshow(img1H) ;
img1S = img1 ;
img1S( :, :,1) = 1 ;
img1S( :, :,3) = 1 ;
subplot(3,1,2) ;
img1S = hsv2rgb(img1S) ;
imshow(img1S) ;
img1V = img1 ;
img1V( :, :,1) = 0 ;
img1V( :, :,2) = 0 ;
subplot(3,1,3) ;
img1V = hsv2rgb(img1V) ;
imshow(img1V) ;
% Mise `
a un de la saturation
% Mise `
a un de la luminosite
% Positionnement en zone superieure
% Affichage
% Mise `
a un de la teinte
% Mise `
a un de la luminosite
% Positionnement en zone centrale
% Affichage
% Mise `
a zero de la teinte
% Mise `
a zero de la saturation
% Positionnement en zone inferieure
% Affichage
p. 43
R
esultats
7.4
Rotations dimages
Objectifs
Matlab permet de faire pivoter des images soit en rognant les bords de limage qui depasseraient,
soit en agrandissant limage pour ne pas perdre de donnees.
p. 44
Code
% Rotation dimages %
img1 = imread(img1.jpg) ;
figure ;
subplot(1,3,1) ;
imshow(img1) ;
% Nouvelle fenetre
% Positionnement en zone de gauche
% Affichage
img1Rot1 = imrotate(img1,30,bilinear,loose) ;
subplot(3,3,2) ;
imshow(img1Rot1) ;
img1Rot2 = imrotate(img1,30,bilinear,crop) ;
subplot(1,3,3) ;
imshow(img1Rot2) ;
%
%
%
%
%
Argument de imrotate
- image
- degres de rotation (sens trigonometrique)
- type dextrapolation,
- loose ou crop
R
esultats
7.5
Objectif
Une erosion consiste `
a rogner le contour des elements dune image `a laide dun pattern.
Une dilatation `
a linverse, consiste `
a etendre les bords des elements dune image. Enfin, il est
possible de combiner les deux pour, par exemple, extraire le contour de formes, etc.
p. 45
Code
% Erosion, dilatation, combinaison %
img6 = imread(img1.jpg) ;
figure ;
pattern1 = ones(10,10) ;
ement servant `
% El
a eroder/dilater
subplot(2,2,1) ;
imshow(img6) ;
% Dilatation
% Positionnement coin superieur droit
% Affichage
% Erosion
% Positionnement coin inferieur gauche
% Affichage
pattern2 = ones(5,5) ;
imgGrad = imdilate(img6, pattern2)
- imerode(img6, pattern2) ;
subplot(2,2,4) ;
imshow(imgGrad) ;
ement servant `
% El
a eroder/dilater
% Combinaison
% Positionnement coin inferieur gauche
% Affichage
R
esultats
p. 46
7.6
D
etection de contours
Objectif
Matlab met `
a disposition des outils permettant dextraire le contour des elements dune
image en utilisant des filtre predefinis. (Par exemple : le filtre de Sobel ). Il est de plus possible
de regler la sensibilite des filtres en donnant des param`etres aux fonctions.
Code
% Detection de contours - %
img2 = imread(img9.jpg) ;
figure ;
img2Gray = rgb2gray(img2) ;
subplot(1,3,1) ;
imshow(img2Gray) ;
%
%
%
%
edge1 = edge(img2Gray,sobel,0.1) ;
subplot(1,3,2) ;
imshow(edge1) ;
edge2 = edge(img2Gray,log) ;
subplot(1,3,3) ;
imshow(edge2) ;
Nouvelle fenetre
Image en niveaux de gris
Positionnement en zone gauche
Affichage
R
esultats
7.7
D
etection am
elior
ee de contours
Objectif
Lobjectif est ici datteindre un meilleur niveau de detection de contours en combinant un
filtre de Sobel avec des erosions et des dilatations.
p. 47
Code
% Detection de contours amelioree %
img9 = imread(img9.jpg) ;
figure ;
% Nouvelle fenetre
img9Gray = rgb2gray(img9) ;
subplot(2,2,1) ;
imshow(img9Gray) ;
edge9 = edge(img9Gray,log,0.01) ;
subplot(2,2,2) ;
imshow(edge9) ;
pattern = ones(1,1)
edge9Am = imerode(edge9, pattern) ;
edge9Am = imdilate(edge9Am, pattern)
subplot(2,2,3) ;
imshow(edge9Am) ;
% Element servant `
a eroder/dilater
% Combinaison
pattern2 = ones(2,2) ;
edge9Am = imdilate(edge9Am, pattern2)
- imerode(edge9Am, pattern2) ;
% Element servant `
a eroder/dilater
subplot(2,2,4) ;
imshow(edge9Am) ;
% Combinaison
p. 48
R
esultats
7.8
Affichage 3 dimensions
Objectif
Afficher limage en trois dimensions. La troisi`eme dimension etant le niveau de gris.
Code
% Image 3 Dimensions - %
img2 = imread(img1.jpg) ;
figure ;
subplot(1,2,1) ;
imshow(img2) ;
img2Gray = rgb2gray(img2) ;
img2GrayDouble = im2double(img2Gray) ;
subplot(1,2,2) ;
mesh(img2GrayDouble) ;
%
%
%
%
p. 49
R
esultats
7.9
Objectif
Lobjectif est ici de representer un histogramme des composantes RGB de limage.
Code
% Histogramme des composantes - %
img1 = imread(img1.jpg) ;
figure ;
% Nouvelle fenetre
plotR = plot(histoR) ;
set(plotR,Color,red,LineWidth,2) ;
hold on
plotG = plot(histoG) ;
set(plotG,Color,green,LineWidth,2) ;
hold on
plotB = plot(histoB) ;
set(plotB,Color,blue,LineWidth,2) ;
p. 50
R
esultats
7.10
Seuillage
Objectif
Un seuillage consiste `
a ne conserver que les pixels dont la valeur est comprise entre un seuil
inferieur et un seuil superieur. Cela permet, par exemple, disoler les zones les plus claires dune
image, etc.
p. 51
Code
% Seuillage - %
img4 = imread(img4.jpg) ;
figure ;
img4R = rgb2gray(img4) ;
img4Double = im2double(img4R) ;
subplot(3,1,1) ;
imshow(img4Double) ;
R
esultats
p. 52
7.11
Seuillage am
elior
e
Objectif
Pour ameliorer le seuillage, il est possible de combiner un seuillage avec des erosions ou
des dilatations de mani`ere, par exemple, `a obtenir une image plus net, etc.
Code
% Seuillage ameliore - %
img4 = imread(img4.jpg) ;
figure ;
img4R = rgb2gray(img4) ;
img4Double = im2double(img4R) ;
subplot(2,2,1) ;
imshow(img4Double) ;
ement servant `
% El
a eroder/dilater
% Combinaison
subplot(2,2,3) ;
imshow(img4SeuAm) ;
% Combinaison
subplot(2,2,4) ;
imshow(img4SeuAm) ;
p. 53
R
esultats
7.12
Transform
ee de Fourier
Objectif
Matlab permet deffectuer la transformee de Fourrier deux dimensions dimage. En voici
un exemple.
Code
% Transformee de Fourrier %
img7 = imread(img7.jpg) ;
figure ;
subplot(2,1,1) ;
imshow(img7) ;
img7FFT = fft2(img7) ;
subplot(2,1,2) ;
imshow(real(img7FFT)) ;
p. 54
R
esultats
p. 55
R
ef
erences
Mathworks :
http ://www.mathworks.com/products/
Universite catholique de Louvain :
http ://www.elec.ucl.ac.be/enseignement/ELEC2000/index.php ?page=tutmatlab
http ://www.stat.ucl.ac.be/cours/fsat2/app-ape/MATLABSTAT.pdf
Universite de Gen`eve :
http ://perso.unige.ch/manuel/Matlab/MatLab1.pdf
Universite de Paris (UPMC) Departement danalyse numerique :
http ://www.ann.jussieu.fr/postel/matlab/node26.html
Universite de cergy-Pontoise :
http ://www.u-cergy.fr/sir/article.php3 ?id article=67
Universite Carlos III de Madrid :
http ://halweb.uc3m.es/esp/Personal/personas/amalonso/esp/Matlab Tutorial PartII 2005.pdf
http ://pagesperso-orange.fr/jerome.landre/docs/matlab ti.pdf