Vous êtes sur la page 1sur 47

Untitled

Cours Matlab

1 Introduction
MAT (rix) LAB (oratory) est un logiciel puissant dot la fois d'un langage de programmation haut niveau et d'outiils ddis au calcul numrique et la visualisation numrique. Dvelopp en C par la socit Mathworks (http://www. mathworks.com/), Matlab tait initialement destin faire du calcul matriciel simplement. Actuellement, Matlab recouvre d'autres domaines d'applications de l'informatique scientifique :

visualisation graphique 2D et 3D rsolution d'quations aux drives partielles optimisation contrle de procds traitement du signal traitement de l'image logique floue rseaux de neurones

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (1 sur 47) [26/05/2010 13:51:32]

Untitled

Les systme Matlab se divise en deux parties :

le noyau Matlab, qui comprend : 1. l'environnement de travail offrant pluiseurs facilits pour la manipulation des donnes. Son interprteur permet de tester rapidement ses propres programmes Matlab. 2. le systme graphique Matlab (interfaces homme-machine, graphiques, images, animations). 3. le langage de programmation Matlab. 4. une librairie de fonctions mathmatiques Matlab. 5. un systme d'interfaage faciltant l'excution de programmes C ou Fortran sous Matlab. une collection de toolboxes (botes outils) regroupant un ensemble de fonctions spcifiques un thme.

2 Quelques fonctions pour bien dbuter


Matlab dispose de plusieurs commandes d'aide la manipulation des fonctions et des fichiers :

help : fournit la liste des catgories de fonctions installes. help fonction/commande : indique comment utiliser une fonction. helpwin : ouvre une fentre permet d'accder facilement aux aides des diffrentes commandes. doc fonc : affiche la documentation HTML de la fonction fonc (cette fonction doit appartenir au noyau Matlab). lookfor mot-cl : recherche dans toutes les aides le mot-cl donn en argument et retourne la ligne contenant ce mot en prcisant la fonction correspondante. which fonc : retourne le chemin du fichier de dclaration de la fonction fonc (lorsque celle-ci est dcrite sous la forme d'un fichier avec l'extension .m) dir('rep') : liste tous les fichiers prsents dans le rpertoire pass en argument . what('rep') : liste tous les fichiers Matlab prsents dans le rpertoire rep en prcisant le type de fichier.

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (2 sur 47) [26/05/2010 13:51:32]

Untitled

type fonc : affiche le code de la fonction fonc ( condition que la fonction soit dcrite dans un fichier m). dbtype fonc : identique la fonction type en indiquant des numros de ligne. exist('A') : permet de savoir si une fonction Matlab, une variable Matlab ou un rpertoire existe.

Pour contrler le dfilement des pages d'aide, il est souvent pratique d'utiliser la commande more on/off. Matlab fournit galement la possibilit d'excuter des commandes unix directement sous l'interprteur :

les commandes cd, ls, pwd et mkdir sont analogues celles connues sous UNIX. unix('unix_com') : excute une commande UNIX et affiche une valeur de retour (0 si la commande unix est licite). !unix_com : excute juste la commande UNIX unix_com.

3 Les variables Matlab


Un seul type de donnes existe sous Matlab : le type matrice (Matrix). Tout doit tre pens avec des matrices : un nombre est une matrice 1*1, une chane de caractres est une matrice 1*n, une courbe 2D sera trace l'aide de deux vecteurs de mme dimension. Par consquent, aucune variable n'a besoin d'tre dclare. Les calculs en virgule flottante sont alors effectus avec la prcision maximale disponible sur la machine (32 bits pour nos machines). De mme, aucune allocation mmoire n'est grer et les oprations de redimensionnement des matrices sont relativement aises. Les noms de variables sont composs de lettres et de chiffres ; seuls les 19 premiers caractres sont pris en compte et Matlab fait la distinction entre minuscules et majuscules. Matlab fournit deux fonctions permettant de lister les variables de l'environnement de travail :

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (3 sur 47) [26/05/2010 13:51:32]

Untitled

who : liste le nom des variables courantes. whos : prcise pour chaque variable courante : son nom, sa dimension, sa classe.

La commande clear var permet d'effacer la variable var de l'environnement de travail. La commande clear all permet d'effacer toutes les variables de l'environnement de travail. Plusieurs commandes permettent de sauvegarder / restaurer des variables dans l'environnement de travail :

save nomf : sauve toutes les variables de l'environnement de travail dans le fichier nomf.mat (.mat est l'extension de fichier par dfaut). save nomf X1 X2 ... Xn : sauve les variables X1 X2 ... Xn dans le fichier nomf. mat. load nomf : restaure dans l'environnement de travail toutes les variables stockes dans nomf.mat. diary nomf : partir du moment o cette commande est tape, l'ensemble des instructions effectues dans la session Matlab sont enregistres dans le fichier nomf.mat et ce jusqu' ce que les commandes exit (de sortie de session) ou diary off soit excute.

4 Les constantes Matlab


Quatre constantes Matlab sont prdfinies :

pi : 3.14159... eps : 2.2204e-16 par dfaut. C'est la distance entre deux rels informatiques conscutifs. Cette valeur est modifiable. Cette valeur est utilise au niveau des tests d'arrt des algorithmes. Inf (Infinite) : nombre infini. C'est par exemple le rsultat de l'opration 1/0. NaN (Not a Number) : n'est pas un nombre. C'est par exemple le rsultat de l'opration 0/0. realmin / realmax : plus petit /plus grand nombre flottant.

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (4 sur 47) [26/05/2010 13:51:32]

Untitled

i, j : nombre complexe gal sqrt(-1).

5 Format de reprsentation des nombres


La commande format permet d'afficher un nombre un format donn. Les diffrents formats possibles sont :

short (valeur par dfaut) : reprsentation d'un nombre rel sous forme fixe avec 4 chiffres de prcision aprs la virgule (x....x.y1y2y3y4). long : reprsentation d'un nombre rel sous forme fixe avec 14 chiffres de prcision aprs la virgule. short e : reprsentation d'un nombre rel en notation scientifique scientifique avec 4 chiffres de prcision aprs la virgule (x...x.y1y2y3y4e+z1z2z3). long e : reprsentation d'un nombre rel en notation scientifique avec 14 chiffres de prcision aprs la virgule. short g : choisit la meilleure reprsentation entre short et short e. long g : choisit la meilleure reprsentation entre long et long e. format hex : reprsentation d'un nombre sous forme hexadcimale. format rat : reprsentation d'un nombre au format rationnel (x/y).

6 Les vecteurs et matrices


6.1 Saisie La saisie d'une matrice s'effectue ligne par ligne. Le ; est un sparateur de ligne et le caractre blanc (ou la virgule) est un sparateur de deux lments conscutifs d'une mme ligne.
>> A=[1 1 3; 4 0 6; 2,5,-1] A=
http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (5 sur 47) [26/05/2010 13:51:32]

Untitled

1 4 2

1 0 5

3 6 -1

On peut galement taper enter la place d'un ;


>> B=[1 0 -1 011 -1 1 0] B= 1 0 -1 0 1 1 -1 1 0

6.2 Oprations lmentaires Les oprations d'addition, de soustraction, de multiplications, de tranposition de matrices, d'addition/soustraction/multiplication d'un scalaire une matrice se font de manire trs intuitive :
>> x=[3 6 -2]; y=[7 2 4]; >> x+y ans = 10 >> x' ans = 3 6 -2 >> A*x' ans = 8 2

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (6 sur 47) [26/05/2010 13:51:32]

Untitled

3 0 38 >> 3+y ans = 10 5 7

Lorsqu'un oprateur est prcd du caractre ., l'opration s'effectue lment par lment.
>> A*B ans = -2 -2 3 4 6 4 0 -4 3

>> A.*B ans = 1 0 -2 0 0 5 -3 6 0

6.3 Oprateur de mise en colonne L'oprateur : permet de transformer toute matrice en un vecteur colonne
>> A A= 1 4 2 1 0 5 3 6 -1

>> A(:)'
http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (7 sur 47) [26/05/2010 13:51:32]

Untitled

ans = 1 4 2 1 0 5 3 6 -1

6.4 Extraction /extension d'une partie de matrice L'oprateur : appliqu une dimension d'une matrice permet d'extraire des parties de matrice
>> A(:,2:3) %extraction des colonnes 2 3 ans = 1 0 5 3 6 -1

La suppresssion d'une colonne (resp. ligne) se fait par substitution avec une colonne (resp. ligne) vide.
>> A(2,:)=[] %suppression de la 2ieme ligne A= 1 2 1 5 3 -1

>> A(:,3)=[] %suppression de la 3ieme colonne A= 1 2 1 5

Les instructions suivantes permettent d'ajouter une ligne et une colonne


>> A=[A;3 4] %ajout d'une 3eme ligne A= 1 1

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (8 sur 47) [26/05/2010 13:51:32]

Untitled

2 3

5 4

>> A(:,3)=[7 9 12]' %ajout d'une 3eme colonne A= 1 2 3 1 5 4 7 9 12

6.5 Taille et dimensions d'une matrice


>> size(A) %prcise les dimensions de A sous la forme d'un vecteur colonne ans = 3 3

>> length(A) %plus grande dimension de A ans = 3 >> ndims(A) % nombre de dimensions de A ans = 2

6.5 Affichage d'une matrice Les commandes disp, printmat et pltmat permettent d'afficher une matrice :

disp(A) affiche la matrice A sans son nom dans l'interprteur de commandes Matlab. printmat (A) affiche la matrice A en indiquant les numros de ligne. pltmat(A) affiche la matrice A dans une fentre spare. Il est possible de

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (9 sur 47) [26/05/2010 13:51:32]

Untitled

prciser un titre, la couleur du quadrillage et la taille des caractres.


>> disp(A) 1 1 7 2 5 9 3 4 12 >> printmat(A) --1--> 1 1 --2--> 2 5 --3--> 3 4

7 9 12

>> pltmat(A,'Matrice A','b',12)

6.6 Transformation et manipulation des matrices Les commandes fliplr (respectivement flipud) ralisent un retournement des colonnes (respectivement des lignes). La commande flipdim effectue un retournement de la matrice suivant une dimension prcise. Ainsi, pour une matrice 2D appele A, flipdim(A,1) est quivalent flipud(A) et flipdin(A,2) est quivalent fliplr(A,2).
>> fliplr(A) ans =

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (10 sur 47) [26/05/2010 13:51:32]

Untitled

7 9 12

1 5 4

1 2 3

>> flipud(A) ans = 3 2 1 4 5 1 12 9 7

>> all(all(flipdim(A,2)==fliplr(A)))% on verifie que flipdim(A,2)==fliplr(A) ans = 1

La commande rot90 effectue une rotation de 90 d'une matrice :


>> A A= 1 2 3 1 5 4 7 9 12

>> rot90(A) ans = 7 1 1 9 5 2 12 4 3

La commande permute rordonne les dimensions d'une matrice suivant l'ordre spcifi par un vecteur :
>> permute(A,[2 1]) ans =
http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (11 sur 47) [26/05/2010 13:51:32]

Untitled

1 1 7

2 5 9

3 4 12

La commande reshape(x, m, n) forme une matrice m*n partir des lments de x. x doit avoir m*n lments :
>> x=[1 2 3 4 5 6]; reshape(x,2,3) ans = 1 2 3 4 5 6

La commande sub2ind(size, i1, ..., in) retourne l'indice de l'lment (i1, ..., in) d'une matrice dont les dimensions sont prcises par le tableau size. Sa fonction rciproque est ind2sub(size, index).
>> sub2ind([3 3], 1, 2) ans = 4 >> [i,j]=ind2sub([3 3], 4) i= 1

j= 2

Enfin, end fait rfrence au dernier indice d'une matrice suivant la dimension indique :
>> A(end,end) ans =
http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (12 sur 47) [26/05/2010 13:51:32]

Untitled

12 >> A(end,:) % fait rfrence la dernire ligne de A ans = 3 4 12

6.7 Fonctions lmentaires sur les matrices Matlab possde plusieurs fonctions (prsentes dans datafun) agissant directement sur les vecteurs ou les colonnes de matrices :

min, max : valeurs minimale et maximale des lments sum : somme des lments prod : produit des lments cumsum : somme cumule des lments cumprod : produit cumul des lments mean : valeur moyenne des lments median : valeur mdiane des lments std, var : cart-type et variance des lments sort : tri des lments par ordre croissant

>> sum(A) ans = 6 10 28

>> cumsum(A) ans = 1 3 6 1 6 10 7 16 28

>> cumprod(A) ans =


http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (13 sur 47) [26/05/2010 13:51:32]

Untitled

1 2 6

1 7 5 63 20 756

Pour obtenir la somme de tous les lments de la matrice A, on peut soit appliquer deux fois la fonction sum, soit appliquer une fois la fonction sum la matrice A mise en colonne.
>> sum(sum(A)) ans = 44 >> sum(A(:)) ans = 44

6.8 Gnration de matrices particulires Le rpertoire elmat propose plusieurs fonctions de gnration de matrices lmentaires ou spcifiques. Voici tout d'abord les fonctions de gnration de matrices lmentaires :

zeros : cre une matrice nulle ones : cre une matrice dont tous les lments valent 1 eye : cre une matrice identit rand : cre une matrice dont les lments sont tirs alatoirement entre 0 et 1 randn : cre une matrice dont tous les lments sont distribus suivant la loi normale N(0,1) repmat : permet de crer des matrices blocs dont chaque bloc est identique celui spcifi en argument

>> eye(3,3) ans = 1 0 0

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (14 sur 47) [26/05/2010 13:51:32]

Untitled

0 0

1 0

0 1

>> eye(2,3) ans = 1 0 0 1 0 0

>> rand(2,3) ans = 0.4565 0.0185 0.8214 0.4447 0.6154 0.7919

>> C=[1 2;3 4] C= 1 3 2 4

>> repmat(C,2,3) ans = 1 3 1 3 2 4 2 4 1 3 1 3 2 4 2 4 1 3 1 3 2 4 2 4

Plus de 60 fonctions sont prvues pour la cration de matrices plus spcifiques. Ces fonctions sont dtailles la fin de l'aide en ligne obtenue par la commande "help elmat". Les fonctions listes par la commande "help gallery" peuvent tre dtailles l'aide de la commande "help private/function" (par exemple "help private/cauchy" pour les matrices de Cauchy).
>> compan([1 2 3]) % Calcule la matrice dont le polynome caractristique est X^2+2X+3 ans =
http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (15 sur 47) [26/05/2010 13:51:32]

Untitled

-2 1

-3 0

>> gallery('invol',4) % Calcule une matrice involutive d'ordre 4 (ie tq ans*ans=eye(4)) ans = -4.0000 -120.0000 240.0000 -140.0000 0.5000 20.0000 -45.0000 28.0000 0.3333 0.2500 15.0000 12.0000 -36.0000 -30.0000 23.3333 20.0000

6.9 Oprations propres au calcul matriciel L'ensemble des oprations lmentaires sur les matrices peuvent tre effectues par Matlab :

rank(A) : rang de A det(A) : dterminant de A trace(A) : trace de A expm(A), logm(A), sqrt(A) : calcul de l'exponentielle, du logarithme ou de la racine carre de A. De manire gnrale, on peut appliquer une fonction fun une matrice via la fonction funm : funm(A,'fun') (exemple : funm(A, 'sin') calcul le sinus de la matrice A).

Matlab permet d'effectuer la plupart des dcompositions et factorisations de matrices grce, entre autre, aux fonctions suivantes :

chol(A) : factorisation de Cholesky. Pour A dfinie positive, cette fonction calcule une matrice R triangulaire suprieure vrifiant R'*R=A. [R, P] = cholp(A) : factorisation de Cholesky avec pivotage. Pour A dfinie positive, cette fonction calcule deux matrices R et P tel que R'*R=P'*A*P. [L, U] = LU(A) : dcomposition LU. Cette fonction calcule une matrice L triangulaire suprieure et une matrice U triangulaire infrieure tel que A=L*U. [Q, R] = QR(A) : dcomposition QR. Calcule une matrice Q unitaire (Q'*Q=Id) et une matrice R triangulaire suprieure vriafiant A=Q*R. [U, T] = schur(A) : dcomposition de Schur. Calcule 2 matrices T et U telles que A=U*T*U' o T est une matrice de Schur (matrice triangulaire suprieure

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (16 sur 47) [26/05/2010 13:51:32]

Untitled

dont la diagonale est compose des valeurs propres de A) et U est une matrice unitaire (U*U'=Id) [P, H] = hess(A) : forme Hessenberg de A. Calcule 2 matrices H et P vrifiant X=P*H*P'. H est nulle en-dessous de la premire sous-diagonale, possde les mmes valeurs propres que A et est tridiagonale si A est symtrique. P est unitaire : P'*P=Id. [U, R, V] = cod(A) : dcomposition orthogonale de A. Fournit 3 matrices U, R et V vrifiant A=U*T*V o U et V sont unitaires et T=[R 0;0 0], R tant triangulaire suprieure inversible avec dim(R)=rang(A). [U, S, V] = svd(A) : dcomposition en valeurs singulires. Dcompose A sous la forme A=U*S*V' o S est une matrice diagonale contenant les valeurs singulires de A et U, V sont toutes deux des matrices unitaires.

Matlab fournit galement de nombreuses fonctions permettant de rsoudre des problmes d'inversion matricielle :

cond(A,N) : calcule le conditionnement de la matrice A pour la norme N ( savoir N(A)*N(A-1)). N peut valoir 1, 2 ou inf. Plus le conditionnement est grand, plus le systme linaire sera instable. La fonction norm(A, N) calcule la norme N de A pour les mmes valeurs de N. condest(A) : calcule un conditionnement de A toujours compris entre 0 et 1. inv(A) : calcule l'inverse de la matrice carre A si elle existe. Ainsi, la solution X du systme linaire A*X=B se calcule en faisant inv(A)*B, ce qui est aussi quivalent A\B. X=lsqnonneg(A,B,X0) : rsout, par la mthode des moindres carrs, le problme d'optimisation min|AX-B|2 soumis la contrainte X>=0 en choisissant comme vecteur initial X0.

X=cgs(A,B) : rsout, par la mthode des gradients conjugus, le problme d'optimisation min|AX-B|2. Les fonctions bicg (mthode des gradients biconjugus), gmres (mthode du rsidu minimal gnralis), qmr (mthode du rsidu quasi-minimal), pcg (mthode des gradients conjugus prconditionns). X=pinv(A) : calcule la pseudo-inverse X de A. X possde les mmes dimensions que A' et vrifie A*X*A = A, X*A*X = X avec A*X et X*A hermitiennes.

Les problmes de recherche de valeurs et vecteurs propres sont effectus l'aide de la fonction eig :

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (17 sur 47) [26/05/2010 13:51:32]

Untitled

[V, D] = eig(A) : fournit la matrice diagonale D des valeurs propres et la matrice V des vecteurs propres de A. poly(A) : renvoit un vecteur de dimension length(A)+1 dont les lments sont les coefficients du polynme caractristique de A (le 1er coefficient est celui de la plus grande puissance).

6.10 Les matrices creuses La bote outils sparfun comporte un ensemble de fonctions sur les matrices creuses 1 ou 2 dimensions. En effet, lorsqu'une matrice possde beaucoup d'lments nuls (la matrice est dite creuse), il est intressant d'utiliser une reprsentation condense de ce type de matrice afin de diminuer la place mmoire occupe, le nombre d'oprations et le temps de calcul. La fonction de conversion d'une matrice pleine m*n en matrice creuse est sparse(i, j, s, m, n) avec i, j indices lignes et colonnes des lments non nuls et s valeurs des lments non nuls. La fonction rciproque (passage de la reprsentation creuse la reprsentation pleine d'une matrice) se fait grce la fonction full.
>> i=[1 3 2 2] i= 1 3 2 2

>> j=[1 1 2 3] j= 1 1 2 3

>> s=[1 2 3 4] s= 1 2 3 4

>> A=sparse(i,j,s,3,3)

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (18 sur 47) [26/05/2010 13:51:32]

Untitled

A= (1,1) (3,1) (2,2) (2,3) 1 2 3 4

>> fullA=full(A) fullA = 1 0 2 0 3 0 0 4 0

La commande issparse permet de savoir si une matrice admet une reprsentation pleine ou creuse :
>> issparse(A) ans = 1 >> issparse(fullA) ans = 0

Des fonctions permettent d'extrare les informations propres aux lments nuls et non nuls d'une matrice creuse :

[i, j, s] = find(A) : retourne les vecteurs d'indices i et j des lments non nuls ainsi que la valeur de ces lments dans le vecteur s. find(A) retournera juste un vecteur d'indices des lments non nuls de A. nnz(A) : donne le nombre d'lments non nuls de A. nonzeros(A) : donne le vecteur des lments non nuls de A. spy(A) : affiche sur un graphique 2D la rpartition des lments non nuls.

>> [i,j,s]=find(A)
http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (19 sur 47) [26/05/2010 13:51:32]

Untitled

i= 1 3 2 2

j= 1 1 2 3

s= 1 2 3 4 >> find(A) ans = 1 3 5 8 >> nnz(A) ans = 4 >> nonzeros(A) ans =

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (20 sur 47) [26/05/2010 13:51:32]

Untitled

1 2 3 4 >> spy(A)

De la mme manire que pour les matrices pleines, plusieurs fonctions de gnration de matrices sont prprogrammes :

speye(m, n) : gnre une matrice identit de taille m*n. sprand(m, n, d) : gnre une matrice creuse avec approximativement m*n*d lments non nuls suivant la loi uniforme sur [0;1] qui sont rpartis alatoirement. sprandn(m, n, d) : gnre une matrice creuse avec approximativement m*n*d lments non nuls suivant la loi normale N(0,1) qui sont rpartis alatoirement. sprandsym(n, d) : gnre une matrice creuse symtirque avec approximativement n*n*d lments non nuls, suivant la somme d'une ou plusieurs variables alatoires. Les lments non nuls sont rpartis alatoirement.

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (21 sur 47) [26/05/2010 13:51:32]

Untitled

>> full(sprand(3,4,0.2)) ans = 0 0 0 0 0.8928 0.2731 0 0 0 0 0 0

>> full(sprandn(3,4,0.3)) ans = -0.0956 0 0.2944 0 0 -0.8323 0 0 0 0

0 0

>> full(sprandsym(3,0.4)) ans = 0.8580 0 1.2540 0 1.2540 0 0 0 0

La fonction spfun permet d'appliquer une fonction tous les lments non nuls d'une matrice creuse : spfun('fun', A).
>> full(A) ans = 1 0 2 0 3 0 0 4 0

>> full(spfun('exp',A)) ans = 2.7183 0 0 0 20.0855 54.5982


http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (22 sur 47) [26/05/2010 13:51:32]

Untitled

7.3891

Les algorithmes classiques rencontrs en algbre linaire ont galement t programms : rsolution de systmes linaires, recherche de valeurs et vecteurs propres, calcul de normes, du conditionnement d'une matrice.

7 Les nombres complexes


Matlab permet une manipulation aise des complexes soit sous la forme algbrique (a+i*b) soit sous la forme exponentielle (rho*exp(i*theta)). NB : Les imaginaires purs i et j vrifient tous deux i2 = j2 = -1. Les oprations et fonctions usuelles +, -, *, /, ^, sqrt, exp, log sont directement applicables sur les nombres complexes.
>> z1=1+3i % Notez que le * entre 3 et i est inutile z1 = 1.0000 + 3.0000i >> z2=2-4i z2 = 2.0000 - 4.0000i >> z1+z2 ans = 3.0000 - 1.0000i >> z1*z2 ans = 14.0000 + 2.0000i
http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (23 sur 47) [26/05/2010 13:51:32]

Untitled

>> z1/z2 ans = -0.5000 + 0.5000i >> z1^2 ans = -8.0000 + 6.0000i >> 2^z1 ans = -0.9740 + 1.7468i >> z1^z2 ans = -7.5542e+02 - 1.2709e+03i >> log(z1) ans = 1.1513 + 1.2490i >> sqrt(z1) ans = 1.4426 + 1.0398i

Quelques fonctions de manipulation des complexes :


abs(z) : renvoit le module du complexe z. angle(z) : renvoit la phase (en radians) du complexe z.

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (24 sur 47) [26/05/2010 13:51:32]

Untitled

real(z), imag(z) : renvoit respectivement les parties relles et imaginaires du complexe z. conj(z) : renvoit le conjugu de z. complex(a,b) : renvoit le complexe a+ib.

Fonction de reprsentation graphique de complexes :

compass(vz) : reprsentation graphique des complexes du vecteur vz en choisissant pour origine de chacun de ces complexes l'origine du rpre.

Plusieurs fonctions d'aide au trac de fonctions complexes :

cplxgrid(n) : renvoit une matrice (n+1)*(2n+1) de complexes permettant de subdiviser le pav [-1,+1]*[-1,+1] de manire quasi-uniforme. cplxmap(z,f(z)) : fonction de trac d'une fonction complexe

>> >> >> >> >> >>

s=cplxgrid(4); plot(s) plot(s(1,:)) plot(s(2,:)) plot(s(3,:)) plot(s(4,:))

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (25 sur 47) [26/05/2010 13:51:32]

Untitled

>> plot(s(5,:))

>> z=cplxgrid(20); >> cplxmap(z,sqrt(z)) % trac de la fonction sqrt(z) sur le pav [-1,+1]*[-1,+1]

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (26 sur 47) [26/05/2010 13:51:32]

Untitled

cplxroot(n) : trac de la fonction f(z) = z^(1/n) avec n>0 sur le pav [-1,+1]*[1,+1]

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (27 sur 47) [26/05/2010 13:51:32]

Untitled

8 Les chanes de caractres


La bote outils strfun est consacr au traitement des chanes de caractres. Pour Matlab, une chane de caractres est un vecteur ligne compos de chaque caractre de la chane. Une chane de caractres ne peut tre dlimite qu'avec des apostrophes. Les fonctions de base :

length(ch) : retourne la longueur de la chane ch. disp(ch) : affiche une variable de type chane de caractres. abs(ch) ou double(ch) : renvoit, sous forme de vecteur ligne, les codes ASCII de chaque caractre de la chane.

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (28 sur 47) [26/05/2010 13:51:32]

Untitled

setstr(vc) ou char(vc) : fonction rciproque de abs ; retourne la chane de caractres pour lesquels les codes ASCII sont ceux du vecteur ligne vc. [ch1, ch2, ..., chn] : concatnation de n chanes de caractres (similaire strcat sauf que strcat ignore les caractres blancs en fin de chacune des chaines chi). deblank(ch) : supprime les ventuels blancs figurant en fin de chane de caractres.

>> ch1='presentation' ch1 = presentation >> length(ch1) ans = 12 >> vc=abs(ch1) vc = 112 114 101 115 101 110 116 >> setstr(vc) ans = presentation >> disp([ch1,' de ','Matlab']) presentation de Matlab >> ch2='3 blancs a la fin '; >> disp(['Taille avec les blancs a la fin=',num2str(length(ch2))]); Taille avec les blancs a la fin=20 >> disp(['Taille sans les blancs a la fin=',num2str(length(deblank(ch2)))]); Taille sans les blancs a la fin=17 97 116 105 111 110

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (29 sur 47) [26/05/2010 13:51:32]

Untitled

Fonctions de test sur les caractres et chanes de caractres :


isstr(ch) / ischar(ch) : renvoit 1 si ch est une chane de caractres et 0 sinon. isletter(l) : renvoit 1 si l est une lettre de l'alphabet et 0 sinon. isspace(ch) : renvoit 1 si ch est le caractre blanc et 0 sinon. strcmp(ch1, ch2) : renvot 1 si les deux chanes ch1 et ch2 sont identiques et 0 sinon.

Ecriture d'une chane de caractres en minuscules / majuscules :


lower(ch) : crit tout le contenu de la chane ch en minuscules upper(ch) : crit tout le contenu de la chane ch en majuscules

>> lower('logiciel MATLAB') ans = logiciel matlab >> upper('logiciel MATLAB') ans = LOGICIEL MATLAB

Evaluation d'une chane de caractres :

eval(ch) : value les commandes, oprations de la chane de la chane. Une erreur est retourne si la chane ne peut tre interprte.

>> eval('sqrt(2)+1') ans = 2.4142

Quelques fonctions utiles :

strrep(ch1, ch2, ch3) : substitue toutes les occurences de la chane ch2 dans la chane ch1 par la chane ch3.

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (30 sur 47) [26/05/2010 13:51:32]

Untitled

[mot1, reste_chaine] = strtok(ch) : renvoie le premier mot (mot1) et le reste de la chane ch. l = findstr(ch1, ch2) : l est le tableau des indices auxquels commencent les occurences de ch1 dans ch2.

>> strrep('logiciel MATLAB', 'logiciel', 'super logiciel') ans = super logiciel MATLAB >> [mot1, reste] = strtok('super logiciel MATLAB') mot1 = super

reste = logiciel MATLAB >> l = findstr('informatique scientifique', 'ti') l= 8 19

strcat(ch1, ch2, ..., chn) : concatne les n chanes de caractres chi en supprimant les blancs de fin de chane.
', ' scientifique', ' MATLAB')

>> strcat('logiciel ans =

logiciel scientifique MATLAB

Cette bote outils inclut galement les conversions nombre<->chane de caractres et conversions de nombre d'une base une autre (bases admises : binaire, dcimale et hexadcimale ou base quelconque entre 2 et 36) :
http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (31 sur 47) [26/05/2010 13:51:32]

Untitled

num2str(nb) : convertit un nombre en chane de caractres. Sa fonction rciproque est str2num.

>> dec2hex(12) ans = C >> dec2bin(12) ans = 1100 >> dec2base(12,4) ans = 30

9 Les polynmes
L'essentiel des fonctions sur les polynmes figure dans la bote outils polyfun. Gnration d'un polynme partir de ses coefficients rangs par ordre de dcroissance de leur puissance :
>> p=[2 0 3] % p(x)=2x+3 p= 2 0 3

Gnration d'un polynme partir de ses racines :


http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (32 sur 47) [26/05/2010 13:51:32]

Untitled

>> poly([2 1]) % polynome x-3x+2 ans = 1 -3 2

Recherche des racines d'un polynme :


>> roots([1 -3 2]) ans = 2 1

Evaluation d'un polynme en un point :


>> polyval([1 -3 2], 3) ans = 2

Multiplication de polynmes :
>> conv(poly([1 2]), poly([3 4])) % generation du polynome (x-1)(x-2)(x-3)(x-4) ans = 1 -10 35 -50 24

Division de polynmes :
>> P=[1 2 3]; >> S=[4 5 6]; >> [Q,R]=deconv(P,S) % Calcul du quotient Q et du reste R : P=QS+R Q= 0.2500

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (33 sur 47) [26/05/2010 13:51:32]

Untitled

R= 0 0.7500 1.5000

Drivation d'un polynme :


>> polyder([3 4 5]) % Derivation du polynome 3x+4x+5 ans = 6 4

Dcomposition d'une fraction en lments simples :


>> [R,P,K]=residue(P,S) % B(s)/A(s) = K(s) + R(1)/(s-P(1)) + ... + R(n)/(s-P(n)) R= 0.0938 - 0.1224i 0.0938 + 0.1224i

P= -0.6250 + 1.0533i -0.6250 - 1.0533i

K= 0.2500

Interpolation polynomiale :

polyfit(x, y, n) : Retourne le polynme p d'ordre n respectant au mieux les conditions yi=p(xi) au sens des moindres carrs.

D'autres fonctions d'interpolation :

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (34 sur 47) [26/05/2010 13:51:32]

Untitled

interp1(x, y, z, 'methode') : interpolation aux points d'une courbe donne par les donnes (xi, yi). Plusieurs mthodes sont disponibles : plus proche voisin, linaire, spline cubique, cubique. interp2, interp3, interpn : mme fonction que interp1 mais pour une interpolation 2D, 3D ou n dimensions.

10 Rsolution d'autres problmes numriques


Recherche de zro d'une fonction :

fzero(func, x0) : renvoit la valeur d'annulation de la fonction func la plus proche de x0. func est soit une fonction mise sous la forme d'un fichier en extension .m, soit une fonction en ligne.

>> fzero('sin(x)+0.5', 2) Zero found in the interval: [0.18981, 3.8102]. ans = 3.6652

Minimisation d'une fonction :

x=fminsearch(func, x0) : minimisation de fonction non linaire multidimensionnelle et sans contraintes. Retourne la valeur de x la plus proche de x0 minimisant la fonction func. Si x0 est un vecteur colonne, x sera galement un vecteur colonne contenant les valeurs de minimisation pour les diffrentes valeurs de x0. x=fminbnd(func, x1, x2) : minimisation de fonction non linaire multidimensionnelle sous les contraintes x1<x<x2. Une seule solution est renvoye.

Ajustement des paramtres de l'algorithme de minimisation / recherche de zeros :

options = optimset('param1',value1,'param2',value2,...)

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (35 sur 47) [26/05/2010 13:51:32]

Untitled

Intgration numrique :

q = quad('func', a, b) / q= quad8('func', a, b) : integration numrique de la fonction monodimensionnelle 'func' entre a et b avec une mthode d'ordre plus ou moins leve. q = dblquad('func', a1, a2, b1, b2, 'methode') : intgration numrique de la fonction bidimensionnelle 'func' dans le pav [a1, b1]*[a2, b2] par une mthode d'ordre plus ou moins leve (mthode peut valoir quad ou quad8).

Rsolution de systmes diffrentiels :

ode45, ode23, ode113, ode23t, ode15s, ode23s, ode23tb : mthodes de rsoltuion de systmes diffrentiels. Ces fonctions prennent en argument la fonction dcrivant le systme (fonction qui dpend du temps t et de y) qui est dfinie dans un fichier .m.

Exemple : Extrait du fichier sys.m dcrivant le systme (x'=-2y, y'=x) : function yp=sys(t,y) yp=[-2*y(2),y(1)]';
>> >> >> >> >> t0=1; tfinal=20; y0 = [10 3]'; [t,y]=ode23('sys',[t0 tfinal],y0); plot(t,y)

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (36 sur 47) [26/05/2010 13:51:32]

Untitled

De la mme manire que pour les fonctions d'optimisation, il est possible de rgler les paramtres de rsoltuion d'un systme l'aide de la fonction odeset. Si par exemple, on tape les commandes options = odeset

('OutputFcn','odeplot') puis ode23('sys',[t0, tfinal], y0, options), on verra le systme voluer graphiquement chaque pas de
temps. Les options odephas2 et odephas3 passes la fonction odeset permettent de visualiser le portrait de phase des 2 ou 3 premires composantes chaque pas de temps. L'option odeprint passe la fonction odeset affiche l'cran les valeurs de la solution chaque pas de temps.

11 Programmer en MATLAB
1. Les fichiers Matlab : il en existe principalement 5 sortes :
http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (37 sur 47) [26/05/2010 13:51:32]

Untitled
r

Les fichiers de description d'une fonction (ils possdent l'extension .m). La premire ligne commence par : function y=nom_de_la_fonction (liste_des_parametres) si la fonction renvoit une seule valeur. function [y1, ..., yn]=nom_de_la_fonction (liste_des_parametres) si la fonction renvoit n valeurs y1, ..., yn. Les fichiers script (ils possdent galement l'extension .m) : ils sont composs d'une succession de commandes Matlab. Les fichiers de donnes au format texte (avec l'extension .dat) : la commande load var.dat provoque la cration de la variable var dont le contenu est celui du fichier var.dat. Les fichiers binaires au format .mat : ce sont des fichiers de stockage des variables de l'espace de travail (remplissage du fichier avec la fonction save, chargement des variables avec la fonction load). Les fichiers MEX : fichiers gnrs partir d'un code C ou Fortran 77 afin que ce code soit directement interprt par Matlab.

1. Quelques prcisions sur les variables Matlab :


r r r

Pas de distinction minuscules / majuscules. Les 19 premiers caractres sont significatifs. Toutes les variables d'un fichier en extension .m sont par dfaut locales l'espace de travail. On prcise que la porte d'une variable est globale et est accessible dans un fichier .m ou dans l'espace de travail en indiquant localement l'instruction global VAR (par convention, les variables globales sont en majuscules). Les variables nargin et

nargout peuvent tre utilises dans toute

fonction. Elles prcisent respectivement le nombre d'arguments d'appel et le nombre d'arguments de retour de la fonction. De mme, les variables varargin et varargout sont les tableaux contenant la valeur des arguments d'appel et de retour.
1. Les commentaires :

Tout commentaire Matlab est prcd du symbole %.

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (38 sur 47) [26/05/2010 13:51:32]

Untitled

2. Les instructions Matlab :


r

L'instruction for

FOR var=val_ini:pas:val_fin
instructions

END
r

L'instruction while

WHILE expression_logique
instructions

END
r

L'instruction if

IF expression_logique_1
instructions_1 ELSEIF expression_logique_2 ... instructions_2

ELSE
instructions_n

END
r

L'instruction switch

SWITCH switch_expr
CASE case_expr statement, ..., statement CASE {case_expr1, case_expr2, case_expr3,...} statement, ..., statement ...

OTHERWISE
END statement, ..., statement

switch_expr et les case_expr peuvent tre des scalaires ou des chanes de caractres. Un seul CASE peut tre excut, auquel cas les instructions suivantes sont celles qui suivent le END du switch.
http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (39 sur 47) [26/05/2010 13:51:32]

Untitled

L'instruction try / catch

TRY
statement, ..., statement

CATCH
statement, ..., statement

END
Normalement, seules les instructions entre le TRY et le CATCH sont excutes. Cependant, si une erreur survient lors de l'excution d'une de ces instructions, ce sont les instructions entre le CATCH et le END qui seront excutes. break : permet de sortir de la boucle la plus proche. r return : permet soit de revenir au fichier M appelant, soit de revenir dans l'interprteur de commandes. r error('MSG') : affiche le texte MSG, met un "bip" et interrompt l'excution du programme. r eval(chaine) : Excute les instructions d'une chane de caractres. r eval(chaine1, chaine2) : Excute les instructions de chaine1. Si aucune erreur ne se produit, retourne au programme appelant. Sinon, excute les instructions de chaine2. r T=evalc(chaine) : identique la fonction eval sauf que les sorties sur la fenetre de commandes sont renvoyes dans le tableau T. 3. Les instructions de saisie et d'affichage au clavier : r disp(X) : affiche le contenu du vecteur X. X peut tre une chane de caractres. r S=printf(formats, variables) : renvoit le contenu d'une liste de variables formattes sous la forme d'une chane de caractres. r R=input(message) : affiche message et atteint la saisie d'une donne, qui sera affecte dans R. r A=sscanf(string, format) : lit des variables a partir d'une chane de caractres, les convertit en utilisant les formats spcifis et affecte le rsultat dans le vecteur A. 4. Les entres / sorties : Les fonctions d'entres / sorties sous Matlab sont analogues celles du C. r FID=fopen(nom_fichier, mode_d_ouverture) : ouverture d'un
r

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (40 sur 47) [26/05/2010 13:51:32]

Untitled

fichier. r fclose(FID) : fermeture du fichier ayant FID pour descripteur. r fprintf(FID, 'formats', liste_variables) : ecriture de donnes formattes dans un fichier. r [A, compteur]=fscanf(FID, format, nb_lus) : lecture dans un fichier d'une srie de donnes. Les valeurs lues sont affectes dans le vecteur colonne A. nb_lus est un argument facultatif qui reprsente le nombre d'lments que l'on veut lire dans le fichier. Si nb_lus est affect inf, tous les lments du fichier seront avec le format dcrit. compteur est galement optionnel et reprsente le nombre d'arguments effectivement lus dans le fichier. r fseek(FID, offset, origine) : dplace le pointeur de fichier de "offset" octets partir d'origine (qui vaut -1 / 0 / 1 suivant que l'origine est le dbut de fichier / la position courante du fichier / la fin du fichier). r position=ftell(FID) : retourne la position courante du fichier (en nombre d'octets) partir du dbut de fichier. r frewind(FID) : positionne le pointeur de fichier sur le premier octet. 5. Lecture de donnes dans un fichier texte : Supposons qu'un fichier texte "donnees3d.dat" contienne 3 colonnes de n valeurs, la commande "load donnes3d.dat" crera une matrice donnees3d de taille n*3 contenant les valeurs du fichier.

12 Les graphiques 2D

La commande plot(x, y, s) trace des courbes ou nuages de points partir de 2 vecteurs de dimension identique (y en fonction de x). s est une chane de 1 3 caractres prcisant la couleur de la courbe, le symbole de reprsentation d'un point, le type de trait utilis pour le trac. Les fonctions semilogx / semilogy / loglog sont analogues la fonction plot sauf qu'une chelle logarithmique (en base 10) est ulilise pour l'axe des x / l'axe des y / l'axe des x et des y. polar(rho, theta, s) dessine la courbe en coordonnes polaires rho=f(theta). fplot(string, [Xmin Xmax]) dessine une fonction dcrite dans une chane de caractres entre Xmin et Xmax. (exemple : fplot('sin(1./x)',[1 2])).

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (41 sur 47) [26/05/2010 13:51:32]

Untitled

Remarque : Pour dessiner un nuage de points, il suffit de spcifier juste un marqueur au niveau de s Exemple : plot(x,y,'+') Commandes d' "habillage" de graphiques (communes aux graphiques 2D et 3D) :

axis([Xmin Xmax Ymin Ymax]) fixe les bornes des axes. grid on / off ajoute ou enlve des grilles dans les plans des axes. box on / off permet d'encadrer ou non un cadre dans chaque plan combinant plusieurs axes. hold on / off permet d'autoriser ou de supprimer la superposition de graphiques. xlabel('texte') / ylabel('texte') / zlabel('texte') ajoute une lgende un axe. Ces commandes combines la commande texlabel permettent d'obtenir une lgende crite au format TeX. Essayer xlabel(texlabel('x^2+y^2')) pour tester. title('texte') ajoute un texte en haut du graphique. text(x,y,'texte') ou text(x,y,z,'texte) positionne un texte de documentation d'une courbe au point de coordonnes (x,y) ou (x,y,z). gtext('texte') : analogue la fonction text sauf que le point est choisi la souris. legend('leg1', 'leg2', ...) : cre une bote de lgende pour les courbes traces. plotedit on / off : active ou dsactive un mode de modification du graphique. Si plotedit est mis on, il est possible de visualiser les proprits des objets, d'ajouter des objets. Pour cela, utiliser le bouton "Tools" de la fentre.

Il est possible de dessiner plusieurs graphiques dans une mme fentre l'aide de la fonction subplot :

subplot(m, n, num) : se positionne sur le graphique de numro num sachant que la fentre est subdivise en une matrice m*n de graphiques.

Enregistrement / Impression d'un graphique :

print -format nom.fmt : sauvegarde la fentre courante sous la forme d'une image au format indiqu.

Gestion des fentres :

Chaque fentre possde un numro dont la valeur est accessible en cliquant

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (42 sur 47) [26/05/2010 13:51:32]

Untitled

sur la fentre puis en tapant la commande gcf (get current figure). Pour crer une figure ayant h comme numro de handle, il suffit de taper figure (h). Si la fentre existe dj, cette fonction met en avant la fentre ayant num comme numro de handle. Pour effacer le graphe de la figure courante, taper clf. La commande close(h) supprime la figure ayant h comme numro de handle. get(h) permet d'obtenir la liste des proprits de la fentre ayant h pour numro de handle.

Les autres fonctions de trac de graphiques 2D :


ezplot('f(x,y)') : fonction de trac d'une courbe implicite f(x,y)=0. comet(x,y) : fonction identique plot sauf que les segments de droite sont affichs au fur et mesure de manire crer une animation. bar(x, y) o nb_lignes(y)=nb_colonnes(x) affiche les m colonnes de y en fonction de x avec des barres verticales centres sur les valeurs du vecteur x. La fonction bar3(x, y) donne le mme rsultat mais en 3 dimension. hist(x) : trace un histogramme de frquence des valeurs de x. pie(x) : trace un camembert des valeurs de x. pie3(x) donne le mme rsultat avec un camembert 3D. stem(x, y) : trace y en fonction de x sous la forme de fonctions de Dirac. stairs(x, y) : trace y en fonction de x sous la forme de fonctions en escalier. fill(x,y) : fonction de trac d'un polygone en fonction des points spcifis par les vecteurs x et y.

13 Les graphiques 3D
Principales fonctions de trac 3D :

plot3(x, y, z, s) permet d'afficher des nuages de points ou de relier une srie de points (dont les coordonnes sont stockes dans les vecteurs x, y et z) avec des lignes. Au niveau du contenu de s, les mmes conventions que la fonction plot sont adoptes. [X, Y]=meshgrid(x, y) gnre deux matrices X et Y partir des vecteurs x et y.

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (43 sur 47) [26/05/2010 13:51:32]

Untitled

X et Y sont ensuite utiliss dans les fonctions de trac de surfaces. Si x et y sont de taille respective m et n, X et Y sont des matrices n*m. Chaque ligne de X vaut x et chaque colonne de Y vaut y. surf(X, Y, Z, C) dessine la surface dfinie par quatre matrices. Les coordonnes des points sont stockes dans X, Y et Z et C est une matrice d'chelle de couleurs utilise pour colorer une facette de la surface. Si C n'est pas spcifi, C=Z. mesh(X, Y, Z, C) : identique surf sauf que l'intrieur des facettes n'est pas colore.

Contrle des couleurs d'un graphique :


hidden on / off : montre / cache les parties caches d'une surface. shading flat / interp /faceted : supprime le quadrillage / supprime le quadrillage et effectue un dgrad de couleurs uniforme / affecte une seule couleur sur une facette ( utiliser avec surf). brighten nb (-1 <= nb <= 1) : eclaircit le graphique si nb >=0 et l'assombrit sinon. colordef white / black : axes noirs sur fond blanc / axes blancs sur fond noir. colormap(map) : affecte une table des couleurs (map), matrice n lignes et 3 colonnes. Chaque ligne est compose de 3 valeurs comprises entre 0 et 1 et formant une couleur RGB. Une correspondance est tablie entre les cotes extremes du graphique et les premire et dernire couleur de la table des couleurs. Pour avoir la liste des cartes disponibles, taper help graph3d.

Obtention des coordonnes de la normale d'une surface : [Nx,Ny,Nz]=surfnorm(x,y, z) Quelques autres fonctions de trac de graphiques 3D :

contour(x, y, z) : trace sur un plan les lignes de niveau de la surface (x, y, z). surfc(x, y, z) / meshc(x, y, z) sont quivalents surf(x, y, z) + contour(x, y, z) / mesh(x, y, z) + contour(x, y,z). clabel permet d'tiqueter des courbes de niveau.

Vecteurs et de volumes : les fonctions figurent dans la partie "Volume and vector visualization" du help specgraph3d.

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (44 sur 47) [26/05/2010 13:51:32]

Untitled

14 Images et animations
La toolbox specgraph contient les fonctions lmentaires de manipulation des images :

image(C) ou imagesc(C) : cre une image partir de la matrice C. C peut tre une matrice m*n, auquel cas la colormap courante est utilise ou une matrice m*n*3 de rels compris entre 0 et 1 qui sera alors utilise comme colormap. a=imread('nom_image.fmt') : cre une matrice m*n*3 partir d'une image au format JPEG, TIFF, BMP (pour ne citer que les formats les plus connus). imwrite(a, 'nom_image.fmt') : cre une image appele nom_image.fmt partir de la matrice a (qui peut tre m*n ou m*n*3). imfinfo('nom_image.fmt') : fournit quelques informations sur une image.

Des fonctions plus avances, propres au traitement de l'image, se trouvent dans la toolbox imagetb : attention, quelques bugs ont t constats. Pour plus d'infos, faire un help imagetb ou taper imdemo. Les fonctions permettant de grer des animations se trouvent galement dans la toolbox specgraph :

a=getframe(h) : stocke dans la matrice a la figure de handle h movie(M) : cre une animation partir du vecteur de matrices M

15 Cration d'interfaces Homme-Machine


La ralisation d'interfaces graphiques se fait l'aide d'un outil appel graphique. Grce cet outil, il est possible de crer, de personnaliser les interfaces graphiques de ses applications de manire visuelle. Pour lancer l'diteur, taper guide. La fentre suivante apparat alors :

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (45 sur 47) [26/05/2010 13:51:32]

Untitled

Les quatre boutons du haut permettent d'ouvrir les fentres suivantes : proprits graphiques d'un objet slectionn. 2. Une fentre "Callback Editor" permettant d'associer une ou plusieurs instructions au clic souris d'un objet. 3. Une fentre "Alignment Tool" permettant de grer les espaces et alignement des objets de la fentre slectionne. 4. Une fentre "Menu Editor" permettant la construction de barres de menus. Le mme guide permet l'insertion des objets suivants :

1. Une fentre "Property Editor" permettant d'diter et de modifier la liste des

axes : insertion de graphiques pushbutton : bouton poussoir text : texte statique (le contenu du texte n'est pas modifiable par l'utilisateur) edit : texte ditable (modifiable par l'utilisateur) listbox : liste simple pour le choix d'une option parmi plusieurs possibilits popupmenu : menus droulants checkbox : case cocher (choix non exclusifs)

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (46 sur 47) [26/05/2010 13:51:32]

Untitled

radiobutton : bouton radio ou bouton d'option (choix exclusifs) slider : barre de dfilement (pour contrler une valeur sur un intervalle) frame : cadre (pour encadrer plusieurs objets)

http://www.ensa-agadir.ac.ma/gpee/download/Matlab.htm (47 sur 47) [26/05/2010 13:51:32]