Vous êtes sur la page 1sur 7

Annexe C, Introduction Matlab 1

INTRODUCTION A MATLAB MATLAB, c'est un logiciel permettant d'effectuer des oprations complexes sur des matrices et vecteurs directement avec la syntaxe matricielle (presque la mme criture que dans les livres et publications). Matlab, c'est un interprteur d'oprations matricielles. C'est aussi un langage de programmation de haut niveau. Matlab est crit en C, mais il ne demande aucune connaissance du C de l'utilisateur. Avec MATLAB, on peut effectuer tout ce que l'on peut faire avec un langage de programmation, mais beaucoup plus rapidement et efficacement. C'est un outil de recherche et d'application fantastique pour qui matrise bien l'criture matricielle (et ses notions d'algbre linaire). Des petits exemples : - l'inversion d'une matrice A s'crit: inv(A). - Les valeurs propres et vecteurs propres de A s'obtiennent de: [u,l]=eig(A). - Les coefficients b d'une rgression de Y par des variables X: b=inv(X'*X)*X'*Y - etc... Entre des donnes Deux faons: 1- Au terminal: une matrice commence par [ et se termine par ]. Les lments d'une mme ligne sont spars par un blanc ou une virgule, les lignes sont spares par un point-virgule. ex. A=[4 3 1 ; 5 7 8] construit une matrice A ayant 2 lignes et 3 colonnes. 2- En lisant un fichier texte dj existant avec la commande load nom du fichier. Corriger une erreur Si la syntaxe est incorrecte, Matlab le dtecte et fait une grimace sonore. On peut corriger n'importe quelle commande, celles-ci sont places dans une liste circulaire. On accde aux commandes dj entres l'aide des curseurs. On peut aussi taper le dbut de la commande et flche haut , Matlab retourne alors la 1re commande ayant le mme dbut puis la seconde Types de fichiers En Matlab, il y a 3 types de fichiers principaux : 1- fichiers .m : fichiers de commandes de Matlab 2- fichiers .mat : fichiers contenant des donnes (format spcifique Matlab). 3- fichiers .fig : fichiers non-lisible contenant ce quil faut pour recrer une figure lors dune sance ultrieure. Fichier .m Un fichier .m est un fichier contenant des noncs Matlab comme si on les entrait soi-mme au terminal. Ces noncs peuvent tre d'autres fichiers .m . On peut mme rappeler le mme fichier .m (rcursivit). Il y a deux types de fichiers m: 1- Les fichiers .m ordinaires (script). Les variables sont toutes globales. 2- Les fichiers .m fonctions. Une ligne au dbut du fichier identifie qu'il s'agit d'un fichier fonction. Les variables de cette fonction sont alors locales et dtruites aprs excution. Les variables globales ne sont pas accessibles. On doit passer l'information d'entre et rcuprer la

Annexe C, Introduction Matlab 2

sortie dans des variables passes en paramtres. Bref, cela s'apparente beaucoup aux sous-routines des langages de programmation usuels (Pascal, C, fortran)... 1- Fichiers scripts: - On dite un fichier et on entre une srie de commandes comme si on le faisait au terminal. - On ferme le fichier sous le nom nom_du_fichier - Dans Matlab, on tape >>nom_du_fichier. 2- Fichiers functions: Analogue une sous-routine en Pascal. La premire ligne d'une fonction disons acp doit dbuter par: function [out1,out2,...outn]=acp(inp1,inp2...inpm) suivent une srie de commentaires qui seront affichs lors de help(acp) suivent les commandes requises. Cette fonction sera normalement sauvegarde par lusager sous le nom acp.m. Dans Matlab, la fonction est connue par le nom de sauvegarde du fichier et non par le nom donn la fonction sur la 1re ligne. Fichier .mat Des fichiers .mat obtenus par save peuvent tre relus avec load. Ces fichiers contiennent les variables (en tout ou en partie) cres lors d'une session prcdente. Ces fichiers ne sont pas lisibles directement en dehors de Matlab. ex. >>save donnes % sauve toutes les variables et matrices (le workspace ) dans le fichier donnes.mat >>save donnes m1 m2 var1 var2 % sauve les variables et matrices m1, m2 , var1, var2 dans le fichier donnees.mat On peut rendre un fichier de sauvegarde lisible par un diteur de texte par exemple en faisant : >>save fichier variable(s) ascii. Les variables spcifies seront dans fichier et pourront tre lues dans Excel ou Word. Ordre de prsance des noms : que fait Matlab quand il rencontre un nom dans un nonc? Dans l'ordre: - Variable? - Fonction interne? - Fichier .m dans le rpertoire actuel? - Fichier .m dans un autre rpertoire (matlabpath). (suit lordre des rpertoires du path actuel)?

Annexe C, Introduction Matlab 3

Quelques petits trucs et conseils 1. Matlab distingue les majuscules et minuscules. la matrice M et la matrice m ne sont donc pas la mme entit pour Matlab. Rgle gnrale vitez lutilisation des majuscules. 2. Il ne faut pas donner des noms aux variables qui correspondent des noms de fonction (soit celles de Matlab, soit celles de lusager), sinon Matlab ne peut plus accder ces fonctions. 3. On utilise au maximum les fichiers .m (scripts et fonctions). Ceci sauve normment de temps en bout de ligne. Rapidement, on doit apprendre utiliser la page de base de Matlab comme une feuille de papier brouillon et rserver le travail srieux aux fichiers .m . 4. Insrer les commentaires au fur et mesure de lcriture des fichiers .m et non seulement lorsque la programmation est termine. 5. Il faut vectoriser le plus possible les oprations et viter les boucles. Souvent, naturellement, on est port tout crire sous forme de boucles. Ce nest pas un problme pour de petites oprations mais un gain de temps considrable peut tre obtenu en vectorisant ces oprations. ex. Trouver la diffrence maximale entre le vecteur x et le vecteur y >>for i=1 :n; dif(i)=x(i)-y(i); end; maxdif=max(dif); est beucoup plus lent que : maxdif=max(x-y); Lhabilet vectoriser les oprations sacquiert avec lexprience et augmente avec la comprhension du problme. 6. Il est prfrable, surtout pour les grandes matrices remplies lintrieur de boucles, de les initialiser au dbut dune procdure. Toolbox (librairie de fonctions): Matlab vient avec un nombre impressionnant de fonctions de base. Le fabricant distribue aussi des librairies de fonctions supplmentaires destins des usages spcifiques. Ces toolbox couvrent des domaines comme : analyse dimages statistique optimisation analyse de signal rseaux neuronaux analyse symbolique etc. De plus, un grand nombre de fonctions et de toolbox sont disponibles gratuitement sur le WEB, y inclut sur le site de mathworks (www.mathworks.com). Ces fonctions sont parfois suprieures celles du produit original. Il existe, entre autres, dexcellentes librairies pour produire des cartes contours de bonne qualit. Affichage numrique : On peut contrler laffichage des quantits numriques avec la commande format . >>format short g est un des plus pratiques. >>format compact permet dviter les lignes blanches sparant chaque entre sortie.

Annexe C, Introduction Matlab 4

Comment apprendre utiliser Matlab? Progressivement, en travaillant avec Matlab, et en faisant beaucoup d'erreurs (Matlab retombe vraiment bien sur ses pieds), en ayant recours help, help commande, lookfor , en faisant excuter les dmos avec la commande demo, en n'hsitant jamais poser une question. Liste des lments syntaxiques et des commandes parmi les plus importantes Oprateurs ! [] ; , = == ~ ~= < > <= >= | & + * .* / \ ./ ou .\ ^ .^ ' % >> NaN Excute une commande de Dos. ex. !dir Dfinit un vecteur ou une matrice; peut tre imbriqu plusieurs fois. ex. b=[2 13 4] Spare des lignes dans une matrice ex. b=[2 13 4;1 4 5] Aussi, empche l'output d'une commande d'tre affich. Spare des lments dans une matrice ou dans une commande ex. min(a,b) Assignation. ex. a=b place une copie de b dans a. Oprateur d'galit. Retourne 1 si gal, 0 sinon. Inverse les valeurs logiques (0 devient 1 et 1 devient 0) Non gal Plus petit que Plus grand que Plus petit ou gal. Plus grand ou gal. Ou (union logique). Et (intersection logique). Addition (scalaire et matricielle). Soustraction (scalaire et matricielle). Multiplication (scalaire et matricielle). Multiplication lment par lment pour 2 matrices de mme taille. Division (scalaire et matricielle). a/b quivalent a*inv(b) si b est carre. Division matricielle: a\b quivalent inv(a)*b si a est carre. Division lment par lment. Exposant, ex. 2^3 a^3. Si a est une matrice carre: matrice la puissance 3 soit a*a*a. a.^5.2 : chaque lment de a est lev la puissance 5.2. Transpose d'une matrice. Aussi entre de texte dans une matrice ou un vecteur. Commentaires dans un fichier .m. Prompt de Matlab. Not a Number. Peut indiquer des valeurs manquantes. Il faut faire attention la faon dont chaque fonction traite les valeurs manquantes.

Annexe C, Introduction Matlab 5

Faons de rfrer un ou plusieurs lments d'une matrice: a(2,3)=7 a(:,3)=[1;1] a(:,:)=ones(2,3) b(1:3,5:8)=zeros(3,4) b([1 4],5:8)=zeros(2,4) b(v,c)=... b(id,c)=ones(3,2) Place la valeur 7 la position 2,3 de la matrice a. Place des 1 en 3e colonne de a. Place des 1 partout dans a Mets des zros dans les positions (1,5),(2,5),(3,5),(1,6)...(3,8) Mets des zros aux positions (1,5),(4,5),(1,6),(4,6)...(4,8) Les lignes et les colonnes de b affectes sont donnes dans les vecteurs v et c. ex. v=[1,4,9] c=[2,3]. Les lignes et les colonnes de b affectes sont donnes dans les vecteurs id et c. ex. id=[0 0 1 1 0 1] c=[2,3]. Note: la longueur de id doit correspondre ici au nombre de lignes de b. Le nombre de 1 dtermine le nombre de lignes de la matrice droite de l'affectation.

Commandes frquentes abs axis bar break clg contour corrcoef cov demo det diag diary eig end exp eye fix for format function help help(com) hist hold if..elseif..end inv keyboard length load log log10 loglog max mean mesh Valeur absolue. Permet de fixer manuellement les limites des axes. Graphe, genre histogramme. Arrt. Vide l'cran graphique. Isocontours. Matrice de corrlations. Matrice de covariances. Excute un dmo. Dterminant. Crer une matrice diagonale ou extraire la diagonale d'une matrice. Permet de conserver les commandes tapes au terminal dans un fichier. Dcomposition en valeurs propres et vecteurs propres. Termine un if, for, while. Exponentiel. Matrice identit. Tronquer. Boucle. Change laffichage des quantits numriques. Dfinir une nouvelle fonction. Donne la liste des commandes. Dcrit la commande. Histogrammes. Retient le graphe, les autres graphiques sont superposs. Test. Inverse d'une matrice carre. retourne le contrle au clavier l'intrieur d'une fonction. Longueur d'un vecteur. Charger un fichier (.mat ou fichier ascii). Logarithmes naturel et en base 10. Graphe, chelle log-log. Maximums des colonnes. Moyennes des colonnes d'une matrice. Vue 3-D d'une surface.

Annexe C, Introduction Matlab 6

min ones plot rand round save semilogx semilogy sin cos... size sort sqrt std subplot sum svd text title type while whos xlabel ylabel zeros

Minimums des colonnes. Matrice de uns. Diagramme binaire Matrice de nombres alatoires. Arrondir. Sauver dans un fichier (.mat ou ascii). Graphe, chelle log en x. Graphe, chelle log en y. Fonctions trigonomtriques. Donne la taille d'une matrice ou d'un vecteur. ex. size(a) Tri des colonnes d'une matrice. Racine carre. Ecarts-types des colonnes d'une matrice. Divise l'cran graphique en plusieurs sous-graphes. Somme des lments d'une matrice. Dcomposition en valeurs singulires (comme eig pour des matrices carres). Positionne des annotations un graphe. Titre sur un graphe Comme pour dos. Tant que. Donne la liste des variables et matrices dfinies par l'usager ainsi que leurs dimensions. Titre axe x. Titre axe y. Matrice de zros.

diteur Matlab : Lditeur Matlab est trs puissant. Il permet de : - Dcaler les lignes automatiquement dans les boucles, noncs if , etc. - Effectuer une vrification de la syntaxe (parenthses qui squilibrent, etc.). - Donner une rtroaction sous forme de couleur pour les commandes reconnues. - Stopper le programme lintrieur dune fonction soit obligatoirement, soit suite une condition donne (erreur, avertissement, etc.). une fois le programme stopp, on peut consulter les variables locales la fonction ou toute autre fonction encore en voie dvaluation, y inclut lespace de travail. Site internet: www.mathworks.com Vous y trouverez nombre de rponses aux bugs que vous pourriez rencontrer, une description des toolbox et des fonctions du domaine public. propos des graphiques Les fonctions graphiques de Matlab sont extrmement puissantes. priori, il faut se dire quil est possible de faire peu prs tout ce que lon veut en fait de graphiques. La ralisation demande parfois un certain effort mais en vaut la chandelle. Matlab 6.0 et + est dot dune interface pour modifier interactivement les

Annexe C, Introduction Matlab 7

graphiques. On peut aussi sauver les graphiques (.fig) dans un fichier ou les exporter dans des formats courants. Exemples de graphiques : on peut faire des diagrammes de points en 2D ou 3D, des surfaces en 2D ou 3D, des cartes isovaleurs. On peut superposer plusieurs graphiques sur les mmes axes ou crer de nouveaux axes. On peut mettre des tiquettes o bon nous semble, on peut contrler totalement la taille et le style des marqueurs, des lignes, la palette de couleur pour les surfaces. On peut contrler la taille des figures lcran et limpression, etc. On peut mettre des boutons, construire des menus, etc. Pour Matlab, une figure est un objet qui contient dautres objets qui eux-mmes contiennent dautres objets. La structure hirarchique des objets est la suivante :

Chaque objet vient avec une liste impressionnante de proprits que lon peut modifier loisir. De plus chaque objet est associ un handle (un identificateur) qui permet daccder lobjet pour en modifier les proprits. Lorsque vous utilisez la commande plot par exemple, Matlab cre pour vous un objet figure un objet axes et un (ou plusieurs) objet line . Vous pouvez modifier les proprits de chaque objet pour le rendre conforme vos gots. Exemples : si vous faites : t=plot(x,y), t contiendra le handle de la ligne cre. Vous obtenez les proprits actuelles de cette ligne en faisant : get(t) Si vous voulez voir quelles sont les valeurs possibles dune proprit donne : get(t,nom de la proprit) Si vous voulez modifier cette proprit : set(t,nom de la proprit, nouvelle valeur de celle-ci) Pour obtenir le handle de lobjet axes parent de lobjet line : t2=get(t,parent) Pour obtenir les proprits de lobjet axes get(t2) et ainsi de suite. Bien que lon puisse modifier les graphiques interactivement, il est souvent trs profitable de procder par commandes avec get, set,... pour sauver du temps lors de la reconstruction de figures. galement on devrait toujours crer les figures laide de fonctions .m et non directement du prompt Matlab.

Vous aimerez peut-être aussi