MATLAB : LOGICIEL DE CALCUL SCIENTIFIQUE ET LANGAGE DE PROGRAMMATION
Richesse de Matlab : ses fonctions préprogrammées
Matlab est doté d’une collection de fonctions (m-files) préprogrammées (notamment dans ses Toulboxes) spécifiques à des domaines aussi variés que les statistiques, le traitement du signale et d’image, la logique floue, les réseaux de neurones, les ondelettes, … et qui permettent de résoudre un bon nombre de problèmes relatifs à ces domaines. Pour visualiser ces fonctions, il suffit de taper help suivi du non de la famille à laquelle appartient la fonction. Pour connaître le nom de ces familles, il suffit juste de taper help.
Plus de 1500??? fonctions préprogrammées :
– Générale ( help general ) : help, demo, dir, cd, !, clear, whos, clear, clc,…
– Opérateurs ( help ops ) : +, -, *, /, ^, =, ~=, <, >, &, | , ~, .*, ./, .^, …
– Langage ( help lang ) : if, else, for, while, case, …
– fonctions élémentaires sur les matrices ( help elmat ) : rand, ones, size, diag, ‘, …
– fonctions mathématiques élémentaires ( help elfun ) : cos, tan, sin, sinh, asin, asinh, exp, log, log10, round, …
– fonctions mathématiques spécialisées ( help specfun ) : airy, gcd, lcm, factorial, cart2sph, cart2pol,…
– fonctions sur les matrices ( help matfun ) : norm, trace, det, inv, eig, …
– analyse de données ( help datafun ) : max, min, hist, diff, corrcoef, conv, conv2, …
– polynômes et interpolations ( help polyfun ) : interp, interp2, spline, voronoi, polyarea, roots, polyfit, …
Et beaucoup plus dans les toolboxes :
– traitement du signal ( help signal ) : cov, xcorr, xcorr2, modulate, fft, ifft, hilbert, impz, filter, fir1, cheby1, ar, …
– traitement d’images ( help images ) : imresize, imcontour, edge, histeq, filter2, fft2, bwlabel, colormap, image, …
– statistiques ( help stats ) : betafit, weibfit, betapdf, chi2pdf, poisspdf, betacdf, poisscdf, betarnd, poissrnd, mean, std, kurtosis, skewness, harmmean, geomean, ztest, ttest, polyfit, regress, cluster, dendrogram, princomp,
– calcul symbolique ( help symbolic ) : diff, int, limit, solve, dsolve, finverse, fourier, laplace, ztrans, …
– réseaux de neurones ( help nnet ) : network, newelm, initlay, trainbfg, …
– logique floue ( help fuzzy ) : mfedit, ruleedit, surview, anfisedit, …
– ondelettes ( help wavelet ): wavemenu, appcoef, dwt, …
– mapping toolbox ( help map ) : antipode, distance, areaint, intrplat, intrplon, distortcalc, mfwdtran, deg2km, …
Exemple de programme
% Premier Programme Matlab
% scalaires
a=3;
b=6;
c=input(‘donner la valeur de c : ‘);
d=a+b/c;
disp(d),
% matrices A=[253
471];
B=[617;209];
C=A+B;
C,
disp(C)
Donc : ni entête ni déclarations de types, de constantes ou de variables. Toutes les ressources de Matlab sont directement disponible sur l’espace de travail et n’on pas besoin d’être chargée via des instructions telles que include de C ou uses de Pascal.
Notion d’algorithme
Un algorithme est un ensemble (séquence) d’opération (ou d’ordres) simples, que l’ordinateur peut exécuter (sous un langage de programmation) et conçu afin de résoudre un problème plus complexe. Notons qu’il y a une « infinité » de façons de concevoir un algorithme mais seule une (ou quelques) façon est optimale.
L’algorithme dépend des actions que l’ordinateur (ou plutôt le langage) peut exécuter. Plus l’ordinateur peut exécuter des opérations complexes plus l’algorithme est simple et inversement. Les aMatlab ayant des
Où écrire ses programmes/instructions et comment les exécuter :
Toutes les instructions permises par Matlab peuvent être lancées à partir de la fenêtre de commande, il suffit d’écrire ces instructions en respectant leur syntaxe et de taper enter pour valider. Si nous avons un nombre très réduis d’instructions a exécuter, il est en effet possible de les écrire directement dans cette fenêtre de commande. Toutefois, le plus souvent nous avons besoin d’écrire des programmes assez longs et surtout de sauvegarder ces programmes. L’éditeur de programmes ou de fichiers d’extension .m est fait pour cela. Pour l’activer, aller dans le menu file et cliquer sur open pour ouvrir un fichier existant ou bien sur new puis M-file si on veut créer un nouveau fichier .m.
Pour lancer (exécuter) un programme, on peut soit à partir de la fenêtre de programme faire tools suivi de run ou bien écrire carrément le nom du programme dans la fenêtre de commande suivi de enter.
Notons que lorsqu’on ouvre Matlab (i.e. la fenêtre de commande), le répertoire de travail par défaut est c:\matlab\work. Toutefois le(s) programme(s) qu’on veut exécuter peut se trouver dans un autre répertoire qu’il va falloir atteindre par l’instruction cd (similaire à celle du DOS) ou encore mieux par la commande set path qui se trouve dans le menu file. en choisissant le répertoire de travail par Browse. Une fois ce répertoire sélectionné, sauvegarder ce path par la commande save path du Path Browser.
Instructions et structures de contrôle
La plupart des instructions en matlab sont écrites comme dans un langage de programmation (tel que C par exemple) mais sont exécuter comme dans un logiciel, ie que matlab fait des interprétations et non pas des compilations. Toutefois nous verrons a la fin que certaines instructions peuvent être exécuter a partir de d’interfaces graphiques (GUI).
Les opérations en Matlab sont orientées-matrices, i.e. que les instructions qui se font dans les autres langages (Fortran, Pascal, C, Java) sur des scalaires peuvent se faire en Matlab directement sur les matrices.
Affectations :
exemple : X=[1 5 3 0; 5 4 1 8; 3 2 1 4]; Y=[4 2 3 7; 2 9 6 0; 7 5 3 2];
Z = 10*X +Y.^2 ;
Z =
26 54 39 49
54 121 46 80
79 45 19 44
T= X*Y ;
dimension de la matrice résultat : (3×4) x (4×3) = (3×3)
T =
23 65 41
87 52 74
47 30 42
Instructions de contrôle :
instruction alternative if :
synthaxe : if condition, instruction(s); elseif condition, instruction(s); else instruction(s);
end
exemple :
if I == J, A(I,J) = 2;
elseif abs(I-J) == 1, A(I,J) = -1;
else A(I,J) = 0;
end
instruction alternative switch :
synthaxe : switch variable,
case valeur1, instruction1;
…
case valeurn, instructionn;
end
exemple :
switch n
case 1, disp(‘Method is linear’);
case 2, disp(‘Method is quadratic’);
case 3, disp(‘Method is cubic’);
otherwise disp(‘Unknown method.’)
end
instruction répétitive for :
synthaxe : for expression , instruction(s); end
for i=1:10,
S = S + x(i) ;
end
for i=1:N, for j=-10:M, for k=5:15, M(i,j,k) = i+j*k; end;end;end
for i=1:4:20,
for j=20:-1:0,
T(i,j) = 2*A(i)+j^2 ; if i==j, break; end
end;
end
instruction répétitive while :
synthaxe : while condition , instruction(s); end
exemple :
A=[1 5 3 ; 5 41;321];
E = 0*A; F = E + eye(size(E)); N = 1;
while norm(E+F-E,1) > 0,
E = E+F;
F = A*F/N;
N = N+1;
end
Utilisations des fonctions préprogrammées :
L’utilisation des fonctions de matlab se fait directement par appel (sans aucune déclaration préalable) en respectant leur syntaxe qu’on peut afficher par « help fonction en question « .
exemple :
supposons qu’on veuille utiliser la fonction cart2sph. Taper help cart2sph donne :
CART2SPH Transform Cartesian to spherical coordinates.
[TH,PHI,R] = CART2SPH(X,Y,Z) transforms corresponding elements of data stored in Cartesian coordinates X,Y,Z to spherical
coordinates (azimuth TH, elevation PHI, and radius R). The arrays X,Y, and Z must be the same size (or any of them can be scalar). TH and PHI are returned in radians.
TH is the counterclockwise angle in the xy plane measured from the positive x axis. PHI is the elevation angle from the xy plane.
See also CART2POL, SPH2CART, POL2CART.
Une description détaillée de la fonction (définition et syntaxe) est affichée. Le help suggère même des fonctions similaires à la fonction affichée.
Si on tape : [TH,PHI,R] = CART2SPH(10,10,10)
Le résultat affiché serait :
TH =
0.78539816339745
PHI =
0.61547970867039
R =
17.32050807568878
Écrire ses propres fonctions :
Une fonction est un programme comme un autre avec en entête le mot réservé function suivi de la syntaxe de la fonction sous la forme y=f(x). Taper help function pour plus de détails.
Exemples :
function nd=numday(j,m)
njpm=[31 28 31 30 31 30 31 31 30 31 30 31]; nm=sum(njpm(1:m-1))+j;
si on écrit dans la fenêtre de commande numday(18,07) le résultat sera :
ans = 199
Une fonction Matlab peut avoir plusieurs entrées et plusieurs sorties et qui peuvent être aussi hétérogènes que possible. Chacune des variables (d’entrée ou de sortie) peut avoir une structure ou un type différent des autres.
Première partie : Le noyau de Matlab
I- Généralités sur Matlab
I-1- Environnement
I-2- Principe du Help/Demo
I-3- Richesse de Matlab : ses fonctions préprogrammées
I-4- Exemple de programme
I-5- Notion d’algorithme
I-6- Où écrire ses programmes/instructions et comment les exécuter :
II- Type et structure des variables
II-1- Types de données
II-2- Structures des données
III- Instructions et structures de contrôle
III-1- Affectations :
III-2- Instructions de contrôle :
III-3- Utilisations des fonctions préprogrammées :
III-4- Écrire ses propres fonctions :
IV- Graphisme sous Matlab
IV-1- Graphisme 2D
IV-2- Graphisme 3D
IV-3- Affichage des images
V- Entrée/Sortie des données
V-1- lecture/écriture des fichiers .mat
V-2- lecture/écriture des fichiers binaires
V-3- lecture/écriture des fichiers texte
VI – Exemples d’application
VI-1- Calcul des matrices de cooccurrences
VI-2- TP2 – Géo6333 : reconstitution d’une image satellitaire
Deuxième partie : Les Toolboxes
1- Statistics Toolbox
2- Signal Processing Toolbox
3- Image Processing Toolbox
3- Mapping toolbox
4- Fuzzy Logic Toolbox
5- Neural Networks Toolbox
6- Wavelet Toolbox
7- GUIs
CONCLUSION