Initiation Au Logiciel Matlab
Initiation Au Logiciel Matlab
Initiation Au Logiciel Matlab
Mr : M. KIOUS
Premire partie
Initiation au logiciel
" Matlab "
Le logiciel Matlab est ouvert dans la fentre de commande Matlab Mcw ( Matlab command window).
1. LAIDE EN LIGNE.
On obtient les informations sur une fonction (contenue dans Matlab ou dans un des toolbox) en tapant
help suivi du nom de cette fonction.
On peut aussi utiliser un mot cl avec la fonction lookfor, le mot cl ntant pas ncessairement le nom
dune fonction de Matlab.
exemples : help diag, help clear, lookfor complex...
2. TABLEAUX ET MATRICES.
2.1 Dfinir une matrice.
A = [1 2 3 4] dfinit la matrice ligne comportant les 4 lments 1, 2, 3 et 4.
A = [1,2,3,4] donne le mme rsultat.
C = [a b c] dfinit la matrice ligne comportant les caractres a, b et c.
B = [1;2;3;4] dfinit la matrice colonne comportant les mmes valeurs que A. Si on remarque que B est la
transpose de A, on peut aussi crire B = A' l'apostrophe droite signifiant la transposition.
C = [1 2 3;4 5 6;7 8 9] dfinit la matrice carre 3x3, dont la premire ligne est 1 2 3, la seconde ligne 4 5
6, etc... On obtient sa transpose en crivant C'.
C(i,:) est sa ime ligne et C(:,j) est sa jme colonne.
x= 0:0.5:10 dfinit un vecteur ligne en partant du premier lment 0 et en incrmentant de 0.5 en 0.5
jusquau dernier lment 10. x' est alors un vecteur colonne.
linspace(1re valeur , dernire valeur , nb dlments) permet dobtenir le mme rsultat en crivant
linspace(0, 10, 21).
Lutilisation de logspace( ) permet davoir un espacement logarithmique des valeurs.
Matlab permet de crer des matrices particulires. Voir zeros, ones, rand, eye.
2.2 Addition et multiplication matricielles.
On peut additionner ou multiplier des matrices de mme type comme on le ferait avec des nombres.
B = C*D multiplie C par D, et le rsultat est videmment diffrent de D*C.
B = C+D additionne les deux matrices.
Le rsultat du produit A*B (ligne*colonne) est un scalaire, alors que le produit B*A (colonne*ligne)
donne une matrice.
2.3 Inversion d'une matrice.
Soit la matrice carre A dont on veut calculer l'inverse Ai.
A = [10 10 0; 0 10 10; 10 19.9 10]
Ai = inv(A) calcule Ai, inverse de A si celle-ci n'est pas singulire.
On le vrifiera en calculant D = A*Ai qui donne la matrice unit.
Si le dterminant det(A) est nul (matrice singulire), Matlab envoie un message d'erreur.
Remplacer dans A ci-dessus 19.9 par 20 et essayer de calculer l'inverse.
Il est vident que A est singulire dans ce cas, pourquoi?
Aide au Matlab
Mr : M. KIOUS
Aide au Matlab
Mr : M. KIOUS
Matlab fournit de nombreuses fonctions et permet lutilisateur dcrire les fonctions spcifiques dont il a
besoin, condition de respecter la syntaxe. Par exemple la fonction truc(t,a) contenue dans le fichier
truc.m ci-dessous
function y = truc(t,a); %function doit toujours tre crit en premire ligne
y = 2*t.^2 + a;
est utilise par le programme xf.m ci-dessous.
t = linspace(0,10,6);
a = 1.5;
z = feval(truc,t,a);
plot(t,z,'r');pause;plot(t,z,'y+');pause;plot(t,z,'r',t,z,'b+');
Certaines fonctions de Matlab ne sont pas prvues pour le passage de paramtres. On utilise dans ce cas
une variable globale. Voir global.
4. ANALYSE DE DONNEES.
Les donnes seront par convention stockes sous forme de matrice colonne.
max(x) renvoie le maximum de chaque colonne du tableau x.
min(x) renvoie le minimum de chaque colonne du tableau x.
mean(x) donne la valeur moyenne de chaque colonne du tableau x.
Voir aussi hist, sort....
5. LES POLYNOMES.
Matlab reprsente un polynme comme un vecteur ligne qui contient les coefficients des termes rangs
selon les puissances dcroissantes.
p = [ 1 -12 0 5 0] reprsente x4 -12x3 + 5x.
5.1 Racines dun polynme.
r=roots(p) fournit les racines du polynme donn ci-dessus.
p=poly(r) est l'opration inverse qui redonne les coefficients rangs selon les puissances dcroissantes.
5.2 Addition.
On additionne les polynmes a et b en crivant d = a+b sils sont de mme degr. Sinon il faut complter
celui qui a le degr le plus faible avec des zros.
5.3 Multiplication.
La fonction conv(a,b) ralise le produit des polynmes a et b. On renvoie le rsultat dans c en crivant c =
conv(a,b). Ce produit est obtenu par convolution des vecteurs a et b.
5.4 Division.
La fonction deconv( ) permet la division.
[q,r] = deconv(c,b) divise c par b. q est le quotient et r le reste.
5.5 Drivation.
Aide au Matlab
Mr : M. KIOUS
Aide au Matlab
Mr : M. KIOUS
x=0:0.1:1;
y=g1(x);
aire1=trapz(x,y)
aire2=quad('g1',0,1)
6.5 Drivation.
On vitera autant que possible la fonction diff qui drive en faisant la diffrence entre lments voisins
dans le tableau des valeurs exprimentales, toujours fausses par le bruit.
Il est plus astucieux de remplacer la courbe par une bonne approximation polynomiale avec polyfit et de
driver celle-ci avec polyder.
6.6 Equations diffrentielles.
De nombreux systmes physiques sont dcrits par des quations diffrentielles, linaires ou non. Pour
intgrer une quation diffrentielle dordre n, on se ramne un systme de n quations du premier ordre,
ce qui permettra dutiliser les fonctions ode23 ou ode45 (ordinary differential equations) qui fourniront la
solution cherche.
Exemple : on veut rsoudre l'quation de Van der Pol d2x/dt2 - m(1-x2)dx/dt + x = 0.
Elle reprsente un systme du second degr dont l'amortissement est non linaire.
On pose y1 = x et y2 = dx/dt, do le systme quivalent: dy1/dt = y2
dy2/dt = m(1-y12)y2 - y1
Pour m = 2, on programme :
function yprime =vdpol(t,y);
m = 2;
yprime = [y(2); m*(1-y(1).^2)*y(2) - y(1)];
On remarque que yprime est un vecteur colonne deux lments qui dcrit compltement lquation
diffrentielle.
Le programme suivant calcule la solution :
[t,y] = ode23(vdpol,[0,30],[0;0.01]); %utiliser help pour les arguments
y1 = y(:,1) % y(:,n) rcupre la nme colonne de y, donc x
plot(t,y1) % trace x en fonction du temps
7. LE GRAPHISME A DEUX DIMENSIONS.
Matlab propose de nombreuses fonctions graphiques. Nous donnons ici les plus utilises avec un
minimum dexplications. Utilisez help pour en savoir plus.
7.1 La fonction plot.
plot permet de tracer une ou plusieurs courbes sur le mme graphe, en choisissant le style du trait et sa
couleur et en marquant les points du tableau des valeurs si on le dsire.
ex : x = linspace(0,2*pi,30);
y = sin(x); z = cos(x);
plot(x,y,g:,x,z,r--,x,y,mo,x,z,c+);
7.2 Les commandes grid, xlabel, ylabel et text.
grid on met la grille sur le graphe trac par plot. grid off efface la grille.
xlabel et ylabel crivent du texte le long de laxe correspondant.
Aide au Matlab
Mr : M. KIOUS
Aide au Matlab
Mr : M. KIOUS
Aide au Matlab
Mr : M. KIOUS
Aide au Matlab
tanh:
atan:
atan2:
atanh :
sec :
sech :
asec :
asech :
csc :
csch:
acsc:
acsch:
cot:
coth:
acot :
acoth:
Mr : M. KIOUS
Hyperbolic tangent.
Inverse tangent.
Four quadrant inverse tangent.
Inverse hyperbolic tangent.
Secant.
Hyperbolic secant.
Inverse secant.
Inverse hyperbolic secant.
Cosecant.
Hyperbolic cosecant.
Inverse cosecant.
Inverse hyperbolic cosecant.
Cotangent.
Hyperbolic cotangent.
Inverse cotangent.
Inverse hyperbolic cotangent.
9.3.2 Exponential.
exp:
log:
log10:
sqrt:
Exponential.
Natural logarithm.
Common logarithm.
Square root.
9.3.3 Complex.
abs:
angle :
conj:
imag:
real :
Absolute value.
Phase angle.
Complex conjugate.
Complex imaginary part.
Complex real part.
9.3.4 Numeric.
fix:
floor:
ceil :
round:
rem:
sign :
Aide au Matlab
Mr : M. KIOUS
10
Aide au Matlab
Mr : M. KIOUS
Companion matrix.
Several small test matrices.
Hadamard matrix.
Hankel matrix.
Hilbert matrix.
Inverse Hilbert matrix.
Kronecker tensor product.
Magic square.
Pascal matrix.
Classic symmetric eigenvalue test problem.
Toeplitz matrix.
Vandermonde matrix.
Wilkinson's eigenvalue test matrix.
11
Aide au Matlab
image :
uicontrol :
uimenu :
Mr : M. KIOUS
Create image.
Create user interface control.
Create user interface menu.
9.7.7 Miscellaneous.
ginput:
Graphical input from mouse.
ishold :
Return hold state.
graymon:
Set graphics window defaults for gray-scale monitors.
rbbox :
Rubberband box.
rotate :
Rotate an object about a specified direction.
terminal:
Set graphics terminal type.
uiputfile:
Put up dialog box for saving files.
uigetfile :
Put up dialog box which queries for file names.
whitebg:
Set graphics window defaults for white background.
zoom :
Zoom in and out on a 2-D plot.
waitforbuttonpress :
Wait for key/buttonpress over figure.
See also PLOTXY, PLOTXYZ, COLOR.
9.8 TWO DIMENSIONAL GRAPHICS.
9.8.1 Elementary X-Y graphs.
plot : Linear plot.
loglog :
Log-log scale plot.
semilogx:
Semi-log scale plot.
12
Aide au Matlab
semilogy :
fill :
Mr : M. KIOUS
Graph title.
X-axis label.
Y-axis label.
Text annotation.
Mouse placement of text.
Grid lines.
Contour plot.
3-D contour plot.
Contour plot elevation labels.
Contour plot computation (used by contour).
Pseudocolor (checkerboard) plot.
Quiver plot.
13
Aide au Matlab
surf :
surfc :
surfl:
waterfall:
Mr : M. KIOUS
14
Aide au Matlab
Mr : M. KIOUS
Matrix exponential.
M-file implementation of expm.
Matrix exponential via Taylor series.
Matrix exponential via eigenvalues and eigenvectors.
Matrix logarithm.
Matrix square root.
Evaluate general matrix function.
15
Aide au Matlab
Mr : M. KIOUS
Largest component.
Smallest component.
Average or mean value.
Median value.
Standard deviation.
Sort in ascending order.
Sum of elements.
Product of elements.
Cumulative sum of elements.
Cumulative product of elements.
Numerical integration using trapezoidal method.
9.12.4 Correlation.
corrcoef:
cov:
subspace :
Correlation coefficients.
Covariance matrix.
Angle between subspaces.
16
Aide au Matlab
conv:
conv2:
deconv :
Mr : M. KIOUS
Compare strings.
Find one string within another.
Convert string to uppercase.
Convert string to lowercase.
True for letters of the alphabet.
True for white space characters.
17
Aide au Matlab
strrep:
strtok:
Mr : M. KIOUS
18
Aide au Matlab
Mr : M. KIOUS
Estimate 2-norm.
Estimate 1-norm condition.
Structural rank.
19
Aide au Matlab
Mr : M. KIOUS
etreeplot:
9.16.8 Micellanous
symbfact :
spparms:
spaugment:
Set breakpoint.
Remove breakpoint.
Resume execution.
Change local workspace context.
List who called whom.
List all breakpoints.
20
Aide au Matlab
dbstep:
dbtype :
dbup:
dbquit:
mexdebug :
Mr : M. KIOUS
Open file.
Close file.
21
Aide au Matlab
Mr : M. KIOUS
On-line documentation.
22
Aide au Matlab
Mr : M. KIOUS
Terminate Matlab.
M-file executed when Matlab is invoked.
Master startup M-file.
23
Aide au Matlab
Mr : M. KIOUS
whatsnew :
Information about new features not yet documented.
ver Matlab, Simulink, and TOOLBOX version
24
Aide au Matlab
Mr : M. KIOUS
300
500
250
400
200
300
150
200
100
100
50
0.2
0.4
0.6
0.8
0.2
0.4
0.6
0.8
16
14
12
10
8
6
4
2
Regression :
help regress
b = regress(Y',[X' X'.^2])
0
-2
-4
1
25
Aide au Matlab
Mr : M. KIOUS
plot(SCORE)
S1= SCORE(:,1); S2= SCORE(:,2);
figure;plot(S1,S2,'+')
25
20
15
10
5
0
-5
-10
-15
-10
-5
10
15
20
25
2.5
1.5
0.5
6 1517182013222330252624272829 1 2 4 3 7 21 9 101112141916 5 8
26
Aide au Matlab
Mr : M. KIOUS
f(t) Fi gi (t)
i
f(t) est le signal analyser et gi(t) sont les fonctions de reprsentation auxquelles on exige de former une
base vectorielle orthonormes.
Les fonctions sinus et cosinus sont les fonctions idales pour cette reprsentation. En effet, Joseph Fourier
a dmontr que tout signal pouvait tre reprsent sous la forme dune somme (souvent infinie) de signaux
sinusodaux de frquences et de phases diffrentes.
Si le signal est priodique, on parle de srie de Fourier. Pour un signal quelconque (cas gnral), cest
plutt la transforme de Fourier qui est utilise.
Le signal et sa transforme de Fourier sont lis par les expressions suivantes.
f(t) F().e .d
jt
F ( ) f (t ). e
j t
et
.dt
Notons que cette somme est plus souvent reprsente sous forme dintgrale.
Exemple : TF de signal carr
1
t = 0:0.01:5;
y = square(2*pi*t);, plot(t,y)
z=fft(y);
y=abs(z(1))*cos(2*pi*t+angle(z(1))
+ abs(z(2))*cos(2*pi*t+angle(z(2))+
0
-1
10
100
200
300
400
500
600
100
200
300
400
500
600
100
200
300
400
500
600
100
200
300
400
500
600
100
200
300
400
500
600
0
-1
10
0
-1
10
0.8
0.6
0.4
0.2
-1
10
0
-0.2
-0.4
-0.6
-0.8
-1
-1
0
100
200
300
400
500
600
Le traitement de signal comporte outre les techniques bases sur la reprsentation de Fourier, dautres
transformations qui ne sont que, comme la TF, des reprsentations dans des espaces de fonctions
orthonormes. Le TS comporte aussi des techniques de traitement statistique du signal.
Le toolbox "signal processing" de Matlab comporte une collection trs riche de fonctions de traitement du
signal. On peut citer les sous familles suivantes :
- Transformes : dct, fft, hilbert, idct, ifft, czt,
- Analyse et implmentation de filtres : FIR, IIR,
- Translation frquentielle (modulation),
- Traitement statistique du signal : corrcoef, cov, pcov, spectrum, tfe, xcorr, xcov,
- Modlisation paramtrique de srie temporelle : ar, arima, arburg, arcov, aryule, ident,
9
8
7
6
5
4
3
2
1
0
200
400
600
800
1000
1200
27
Aide au Matlab
Mr : M. KIOUS
ghan91;ghan92;ghan93;
GH=[gha91' gha92' gha93']/1000;
plot(GH);pause
plot(GH(1:2*365));pause,
plot(GH(1:365))
Lapplication de la TF des squences annuelles, bi-annuelles et tri-annuelles donne :
FGH1=fft(GH(1:365));
FGH1= 1.54, -0.44-0.04i, 0.02-0.01i, 0.02+0.05i, -0.002-0.015i, 0.01+0.008i,
FGH2=fft(GH(1:2*365));
FGH2= 3.05, -0.01-0.03i, -0.87-0.08i, -0.02+0.02i, 0.025-0.04i, 0.003-0.01i,
FGH3=fft(GH);
FGH3= 4.52, -0.03-0.05i, -0.04-0.07i, -1.25-0.16i, 0.016+0.03i, -0.02+0.07i,
subplot(131);plot(abs(FGH1(1:20)),'*b:');
subplot(132);plot(abs(FGH2(1:20)),'*m:');
subplot(133);plot(abs(FGH3(1:20)),'*r:');
2000
4000
1500
3000
1000
2000
500
1000
10
20
5000
4000
3000
2000
1000
0
10
20
10
20
Les harmoniques ont des contribution importantes pour les variations du signal correspondantes.
EX2 : Fonction dautocorrlation du signal
subplot(131);plot(xcorr(GH(1:365)))
subplot(132);plot(xcorr(GH(1:2*365)))
subplot(133);plot(xcorr(GH(1:3*365)))
Lautocorrlation mesure la ressemblance entre le signal et des versions dcales de ce mme signal. On
peut voir que lorsque le dcalage est multiple de 365 (nombre de jours/an), lautocorrlation augmente
indiquant une ressemblance (saison par saison) entre les squences annuelles.
28
Aide au Matlab
Mr : M. KIOUS
10000
8000
x 10
x 10
2.5
2
1.5
6000
1.5
1
4000
1
0.5
2000
0
500
1000
0.5
0
500
1000
1500
1000
2000
3000
1000
1500
2000
2500
3000
500
1000
1500
2000
2500
3000
3500
700
800
100
200
300
400
500
600
- dcoupage et affichage
IMTL=IM(1300:2200,200:1100);
image(IMTL)
700
- redimensionnement
size(IMTL)
ans = 901 901
20
800
900
100
200
300
400
500
600
900
40
60
80
100
29
120
140
160
180
20
40
60
80
100
120
140
160
180
Aide au Matlab
Mr : M. KIOUS
IMTL2 = imresize(IMTL,0.2,'bilinear');
IMTL2=round(IMTL2);
size(IMTL2)
ans = 180 180
image(IMTL2)
- transformation de type :
AMIN=min(min(IMTL2)) ; AMAX=max(max(IMTL2)) ;
I = MAT2GRAY(IMTL2,[AMIN AMAX]);
- galisation d'histogramme
J = histeq(I);
imshow(I), figure, imshow(J)
- histogrammes
imhist(I), figure, imhist(J)
600
500
400
400
300
200
200
100
0
0
0
0.5
0.5
- Detection de contours
JE1 = edge(J,'prewitt');
imshow(JE1);
JE2 = edge(J,'canny');
figure;imshow(JE2);
subplot(121), imshow(JE1); subplot(122), imshow(JE2);
30
Aide au Matlab
Mr : M. KIOUS
31
Aide au Matlab
Mr : M. KIOUS
Ainsi, de la mme faon que la transforme de Fourier qui peut se dfinir comme tant une projection sur
la base des exponentielles complexes, on dfinirait la transforme en ondelettes comme la projection sur la
base des fonctions ondelettes.
Les coefficients d'ondelettes (TO(a;b)) dpendent de deux paramtres a et b : a tant le facteur d'chelle et
b le facteur de translation.
Les fonctions a;b(t) sont obtenues partir de la dilatation et de la translation de la fonction mre (t).
Les fonctions a;b(t) sont par consquent parfois appeles les ondelettes filles. Ces fonctions forment une
base orthonorme. Tout comme la transforme de Fourier, la transforme en ondelettes est inversible.
Le wavelet toolbox de Matlab (5.3 et plus) possde un nombre trs important de fonctions spcialises.
Taper help wavelet pour voir toute la liste.
Exemples :
ghan91;ghan92;ghan93;
GH=[gha91' gha92' gha93']/1000;
l=length(GH);
[ca1,cd1]=dwt(GH,'db1');
a1=upcoef('a',ca1,'db1',1,l);
d1=upcoef('d',cd1,'db1',1,l);
subplot(311),plot(a1);subplot(312),plot(d1);subplot(313),plot(a1+b1);
32
Aide au Matlab
Mr : M. KIOUS
10
5
0
5
200
400
600
800
1000
1200
200
400
600
800
1000
1200
200
400
600
800
1000
1200
0
-5
10
5
0
Le toolbox wavelet possde galement une interface graphique qui permet deffectuer une analyse en
ondelettes un signal sauvegard dans un fichier *.mat. Pour activer ce GUI, taper wavemenu.
45
40
35
33
30
25
-130
-120
-110
-100
-90
-80
-70
-60
Aide au Matlab
Mr : M. KIOUS
0.00000677438424
0.00000070866308
34
Aide au Matlab
Mr : M. KIOUS
35
Aide au Matlab
Mr : M. KIOUS
Dans un rseau de neurones, les sorties sont donc relies aux entres via des fonctions et des poids.
Rseau de neurones multi-couches
Afin de pouvoir dtecter ou reproduire d'ventuelles relations complexes entre les sorties et les entres, il
est possible de devoir recourir un rseau plusieurs couches. Plus on multiplie la complexit du rseau,
plus on le dote "d'intelligence" et de "mmoire".
36
Aide au Matlab
Mr : M. KIOUS
Pour concevoir un modle base de rseaux de neurones, on doit d'abord choisir une structure (nombre
d'entres, nombre de sorties et nombre de couches), slectionner des fonctions de transfert et enfin
calculer les poids w qui lient les diffrents neurones.
Les poids sont calculs grce une procdure (algorithmes) d'entranement du rseau partir d'entres et
de sorties dj existantes. Une fois ces poids calcule, le rseau pourra tre utilis pour simuler des
rponses d'autres stimuli.
NNET de Matlab
Taper help nnet pour voir les possibilits qu'offre Matlab pour cette technique. Consulter galement le
fichier nnet.pdf pour un cours simple et dtaill avec des exemples d'application. Voir aussi demo toolbox - neural network pour des exemples illustrs.
On parlera dans cet exemple de variable linguistique taille et de valeurs linguistiques grand et petit.
Variables floues :
Une variable floue est dcrite donc par une fonction d'appartenance un domaine de sa gamme
dynamique et non pas des valeurs numriques ou des attributs fixes.
Rgles "if then entre" variables floues :
Les relations entre les variables floues se font par des rgles Si Alors (If Then ). Par exemple deux
variables x et y sont relies par la rgle :
37
Aide au Matlab
Mr : M. KIOUS
if x is A then y is B
ou encore si on a d'autres autre variable en jeu.
if (x1 is A1 and x2 is A2) or x3 is A3 then y is B
La logique floue sous Matlab
Le "fuzzy toolbox" de Matlab possde des fonctions qui peuvent tre utilises de faon classique comme
les autres fonctions ou via une interface graphique active par l'instruction fuzzy. L'utilisation du fuzzyGUI de Matlab pour la modlisation de variables floues est organises en plusieurs tapes. D'abord le
choix des fonctions d'appartenance, ensuite l'criture des rgles et enfin la visualisation des rsultats.
Le fichier fuzzy_tb.pdf contient une introduction la thorie des ensembles floues ainsi qu'un exemple
complet sur l'utilisation du GUI pour rsoudre un problme de modlisation avec cette technique. Le demo
- toolbox -fuzzy contient galement des exemples d'utilisation de cette technique.
CONCLUSION
Matlab est un langage de programmation, un logiciel, un monde de fonctions et de techniques. Matlab est
un outil trs simple, trs puissant, trs complet et qui ne ncessite pas une formation spciale pour le
matriser, juste de ne pas hsiter utilise help, naviguer dans demo et consulter les fichiers de
documentation pdf.
38