Matlab: introduction et quelques astuces S´ ebastien Blais: sblais@sebastienbla
Matlab: introduction et quelques astuces S´ ebastien Blais: sblais@sebastienblais.com January 19, 2006 1 Introduction Ce document se veut un peu plus qu’une introdution. Apr` es avoir fait le tour de quelques notions de bases, il fait un bref survol des certains points impor- tants mais difficiles d’acc` es parce que n´ eglig´ es par la documentation de Matlab. J’ai donc volontairement omis ce qui d´ ej` a tr` es bien fait dans la documenta- tion. Par exemple, taper help ` a l’invite de commande donne la liste de tous les sous-r´ epertoires contenus dans le path de Matlab avec la premi` ere ligne du fichier contents.m qu’ils contiennent. Pour creuser un r´ epertoire particulier, la commande help elmat retourne par exemple le premier bloc de commen- taires du fichier matlab\elmat\contents.m, soit la liste des fonctions dans ce r´ epertoire1. Taper help triu retourne le premier bloc de commentaires du fichier matlab\elmat\triu.m qui donne de l’aide de base sur la fonction. L’aide graphique accessible via le menu Help/Matlab Help est plus conviviale pour des recherches plus approfondies. 2 Types de structures de donn´ ees Quelques exemples... Les scalaires N=3 T=100; 1Vous pouvez utiliser cette structure pour documenter vos propres fonctions. 1 Les matrices A=zeros(N); % une matrice de z´ eros carr´ ee N par N B=ones(N,T); % une matrice de 1 N par M C=eye(N); % une matrice Identit´ e de dimension N D=zeros(N,N,N,N); % une hyper-matrice de z´ eros N par N par N par N E=[1 2 3 4; 5 6 7 8]; % une matrice 2 par 4 F=[1,2,3,4; 5,6,7,8]; % F=E G=[2:4] % un vecteur-ligne dont les ´ el´ ements sont [2 3 4] H=[2:0.5:4] % un vecteur-ligne dont les ´ el´ ements sont [2 2.5 3 3.5 4] C(2,2) % l’element (2,2) de la matrice C C(2,1)=0.5; % remplace la valeur de l’´ el´ ement (2,1) C(1,2)=C(2,1); diag(C) % une vecteur colonne contenant la diagonale de C diag([1 2 3]) % une matrice diagonale E(:,3) % la 3e colonne de E F(end-1,:) % l’avant-derniere ligne de F F(:,2:4) % les colonne 2-3-4 de F F(:,G) % F(:,G)=F(:,2:4) reshape(F,8,1) % un vecteur-colonne contenant F C(4) % C(4) est le 4e ´ el´ ement de reshape(C,prod(size(C)),1) Les op´ erations de base A+B % Additioner A et B A.*B % Multipliquer A et B ´ el´ ement par ´ el´ ement A*Z % Multipliquer A et Z la matrice A./B % Diviser A par B, ´ el´ ement par ´ el´ ement inv(C)*A % Pr´ emultiplier A par l’inverse de C A.ˆ2 % Faire une matrice des ´ el´ ements de A la puissance 2 (deux faons) A.*A Cˆ2 % Faire le carr´ e de la matrice C carr´ ee (deux fa¸ ons) C*C A’ % La transpos´ ee de A % Appliquer les fonctions exp, sqrt (racine carr´ ee) et log % (naturel) x, ´ el´ ement par ´ el´ ement y = exp(x) y = sqrt(x) y = log(x) plot(x,y)% Faire la courbe de y versus x 2 Les chaˆ ınes de caract` eres file=’monfichier.txt’ dir=’resultats/’ xfile=[dir file] 3 Donn´ ees et fichiers Importer/stocker des donn´ ee Dans la plupart des cas, vous n’aurez qu’` a faire cet exercice qu’une seule fois. Tapez uiimport pour lancer l’assistant d’importation. Une fois ces donn´ ees dans la m´ emoire de travail, vous pourrez les stocker dans un fichier .mat, le format standard de Matlab. Exemples: save mesdonnees sauvegarde toutes les variables de la m´ emoire de travail dans un fichier mesdonnees.mat dans le r´ epertoire de travail, en ´ ecrasant le fichier du mˆ eme nom s’il existe. save mesdonnees x sauvegarde seulement la variable x dans un fichier mesdonnees.mat dans le r´ epertoire de travail, en ´ ecrasant le fichier du mˆ eme nom s’il existe. save mesdonnees x -append ajoute/remplace seulement la variable x dans le fichier mesdonnees.mat dans le r´ epertoire de travail, qui doit exister. save(’mesdonnees’,’x’,’-append’ mˆ eme chose que save mesdonnees x -append sauf qu¡il est ici possible d’utiliser une variable comme nom de fichier, ce qui peut ˆ etre utile si on veut passer le nom du fichier ` a une fonction. load(’mesdonnees’) ou load mesdonnees charge en m´ emoire toutes les vari- ables de mesdonnees.mat. Attention: ne pas utiliser cette forme (voir la suivante) dans une function, son comportement semble al´ eatoire... load(’mesdonnees’,’x’) ou load mesdonnees x charge en m´ emoire x (pr´ ef´ erer la premi` ere forme). La fonction who donne la liste de variables en m´ emoires et whos donne leur taille. Il est aussi possible d’obtenir la liste des variables contenues dans un fichier en tapant whos -file mesdonnees, par exemple. On peut lib´ erer la m´ emoire par clear ou seulement d´ etruire les variables x et y par clear x y.2 2Les fonctions, lorsqu’elles ont ´ et´ e appel´ ees, utilisent aussi de la m´ emoire pour acc´ el´ erer leur ´ evaluations futures. Si les fonctions sont modifi´ es par l’´ editeur, Matlab sait utiliser la nouvelle version. Si elles sont modif´ ees autrement (par un autre ´ editeur de texte par exemple, ou si on r´ ecup` ere une vielle version de la fonction), on doit lib´ erer la m´ emoire manuellement par clear function. clear all lib´ ere tout. 3 Cr´ eer un fichier texte La fonction diary() permet de stocker dans un fichier tout ce qui se passe ` a l’´ ecran et constitue une mani` ere simple mais limit´ ee de garder des r´ esultats. On a vu qu’omettre le ’;’ permet d’afficher les r´ esultats ` a l’´ ecran. Si l’esth´ etique vous g` ene, vous pouvez utiliser la fonction disp(). Par exemple, disp(’La matrice identite de taille 2 est:’);disp(eye(2)); est plus joli que ’La matrice identite de taille 2 est:’ suivi de eye(2). La mani` ere la plus polyvalente de cr´ eer un fichier texte est via les fonctions fopen(),fclose() et fprintf(). En particulier, les utilisateurs de L AT EXou T EXpourront cr´ eer directement des tableaux qu’ils pourront importer tels quels pour construire leurs documents. 4 4 Quelques outils sp´ ecifiques 4.0.1 Statistiques % G´ en´ erer un vecteur al´ eatoire, 100x1, i.i.d. N(2,(0.2)ˆ2). z = 0.2 * randn(100,1) + 2 % Calculer la moyenne, l’´ ecart type, et la variance de z mean(z) std(z) var(z) % G´ en´ erer un autre vecteur al´ eatoire, corr´ el´ e avec z w = z + randn(100,1) % Calculer la covariance et corr´ elation entre w et z cov(w,z) corrcoef(w,z) % Faire le nuages de points des paires (w,z) plot(w,z,’.’) % Faire le histogramme de w hist(w) % valuer la fonction de r´ epartition d’un al´ ea normal mu = 1; sigma = 2; x = 2; p = 0.5; normcdf(x,mu,sigma) norminv(p,mu,sigma) % Moindres carr´ es ordinaire T = 20; K = 3; beta = [1;2;3]; X = [ones(T,1), randn(T,2)]; sigma = 0.1; epsilon = randn(T,1) * sigma; y = X*beta + epsilon; b = inv(X’*X)*X’*y b=X\y e = y-X*beta; sigma2Ch = (e’*e)/(T-K) varChb = sigma2Ch * inv(X’*X) 5 Optimisation On doit d’abord construire la fonction ` a minimiser. Par exemple: function y=f(x) y=x*x; Ensuite, il faut choisir l’algorithme d’optimisation. Il n’y a pas de chemin court: les algorithmes sont standards et le choix repose sur l’analyse du probl` eme en question. La plupart des algorithmes n´ ecessitent un peu de param´ etrisation, mˆ eme si Matlab propose g´ en´ eralement des valeurs par d´ efaut. On peut omettre de sp´ ecifier des valeurs sp´ ecifiques en passant une matrice vide ([]) comme param` etre. x0 = [1]; % valeur initiale propos´ ee mesoptions = optimset(’LargeScale’,’off’); mesoptions = optimset(mesoptions,’Display’,’iter’); [x,valeur,indication,sortie] = fminunc(@f,x0,mesoptions); 5 Environnement et convivialit´ e Visibilit´ e des functions Les functions accesssibles sont celles situ´ ees directement dans le r´ epertoires de travail, puis celles situ´ ee dans le path. La fonction which permet de savoir qulle version de la fonction est utilis´ ee en cas de doute. Par exemple, which edit retourne H:\MATLAB6p5\toolbox\matlab\general\edit.m sur mon PC. On peut modifier le path via le menu File/Set path ou ` a l’aide des fonctions pr´ evues ` a cet usage (help path). ´ Editeur Matlab Il est possible de lancer l’´ editeur de deux mani´ eres. On peut taper edit ` a l’invite de commande Matlab ou le lancer via Windows. Dans le second cas, qui est net- tement pr´ ef´ erable, l’´ editeur est compl´ etement ind´ ependant du moteur Matlab: en cas de faille du moteur, l’´ editeur reste stable et vous pourrez sauvegarder vos fichiers. Scripts et functions Les scripts utilisent l’espace m´ emoire de travail alors que les fonctions utilisent un espace m´ emoir qui leur est propre ` a chaque appel: une fonction ne modifie les variables de la m´ emoire de travail que via les variables qu’elle retourne. Par exemple, avec la fonction f.m function M=f(x) y=x*x M=y; 6 ni la valeur de y ni celles de x ou M ne seront modifi´ es par l’appel M=1; y=1; x=1; a=2; b=f(a); Performances Tous uploads/s1/ demomatlab.pdf
Documents similaires
-
22
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 02, 2021
- Catégorie Administration
- Langue French
- Taille du fichier 0.1153MB