Professional Documents
Culture Documents
I.
I.1.
Introduction Prsentation
Qu'est-ce que MatLab ?
MatLab est un systme interactif de programmation scientifique, pour le calcul numrique et la visualisation graphique. Dvelopp lorigine pour le calcul matriciel (le nom MatLab est drive de cette reprsentation MatLab = Matrix Laboratory), il offre aujourdhui bien dautres possibilits, dont certaines seront decrites dans la suite. Il contient des bibliothques spcialises (toolbox) qui rpondent des besoins spcifiques : analyse numrique, traitement du signal, traitement de limage, etc. MatLab est un logiciel qui permet de faire des calculs mathmatiques et numrique, et non un logiciel de calcul formel et symbolique comme Maple.. Matlab connat un grand nombre d'oprations ou de fonctions mathmatiques : fonctions usuelles, calcul matriciel, fonctions plus spcifiques du signal (FFT, etc). Exemple : Si a est un vecteur qui contient les chantillons d'un signal, A = fft(a,128) est le vecteur qui contient la transforme de Fourier rapide des 128 premiers chantillons du signal. Remarque : dans toute la suite, on utilisera la notation suivante : italique (nom donner par lutilisateur une variable, etc), gras (noms gnraux), rouge (nom de fonction ou dinstruction MatLab).
I.3.
Aide en ligne :
La suite a pour but de vous familiariser avec MatLab. On peut se rendre compte de la puissance du logiciel en lanant la commande demo. Les complments d'information peuvent tre facilement obtenus grce l'aide en ligne incluse dont l'accs s'obtient en tapant au clavier :
?? ?? ??
help help : pour apprendre utiliser laide help : donne la liste des aides gnrales disponibles en ligne help general : liste de commandes de contrle
?? ?? ?? ?? ??
help function : pour plus d'info sur la fonction function help sujet : renvoie la liste des fonctions relatives sujet help opration : pour plus d'info sur lopration opration help nom-de-commande : pour plus d'info sur la commande nom-de-commande lookfor : recherche par mots cls dans les fichiers d'aide
I.4.
Les fonctions usuelles sont spares en deux : les fonctions lmentaires (elfun) et les fonctions spciales (specfun). Vous pouvez aussi crer vos propres fonctions (voir plus bas). Pour obtenir de laide, tapez : help elfun, help specfun Quelques oprations avec des matrices : ?? x = [1 2 4 5 7 3] retourne le vecteur (1,2,4,5,7,3). ?? (a:k:z) retourne le vecteur (a,a+k,a+2k,a+3k,...,a+Nk), avec N tel que a+Nk ? z?? ?a+(N+1)k. ?? x(m:n) retourne les valeurs de x d'indice compris entre m et n. ?? additionner deux vecteurs x et y de mme longeur z=x+y ?? multiplier terme terme deux vecteurs de mme longeur z = x.*y (notez le . avant le *) Liste non exhaustive de fonctions : ?? zeros (N) : cre une matrice N*N remplie de 0 ?? ones (N) : cre une matrice N*N remplie de 1 ?? rand (N) : cre une matrice N*N dont tous les lments sont alatoires ?? diag (N) : cre une matrice N*N diagonale ?? Les fonctions trigonomtriques (et trigonomtriques inverses) usuelles cos(x), sin(x), etc ?? abs(x) retourne la valeur absolue pour un rel, ou le module pour un complexe ?? angle(x) retourne l'argument du complexe x entre -? et ? ?? y = max(x) retourne la valeur maximale du signal x. (y est un scalaire) ?? y = max(x,40) retourne un vecteur contenant les chantillons de x lorsqu'ils sont ? ou ? ?40 ?? R = roots(a) retourne les racines du polynme dont les coefficients sont dans le vecteur a ?? fft, ifft : transformation de Fourier (Fourier rapide et son inverse) ?? fzero : zros de fonctions ?? fmin, fmins : minimisation ?? quad, quad8, trapz : calcul d'intgrales ?? ode23, ode23p, ode45 : quations diffrentielles ?? diff, gradient, del2 : quations aux drives partielles ?? poly : construit un polynme partir de ses racines Pour obtenir des tracs graphiques : ?? Graphiques 2d: plot, loglog (chelle logarithmique), polar (en polaire), title, xlabel, ylabel, text, gtext (commentaires), image (cration d'une image partir d'une matrice). ?? Graphiques 3d: plot3d, contour (contours), mesh (maillage), surf (surface) ?? Divers : clf (efface), hold on (garde les graphiques), figure (cr d'autres fentres graphiques), drawnow (force Matlab afficher immdiatemment).
Boucles et tests ?? boucles : for, while, end, break ?? tests : if, elseif, else, end ?? dialogue avec utilisateur : input, keyboard, pause Commentaires ?? une ligne de commentaires commence avec le symbole %
I.5.
Fichiers MatLab :
I.5.1. Fichiers script Un fichier script est une suite d'instructions MatLab (voir : help script). On peut le crer l'aide d'un diteur de texte standard et le sauvegarder avec une extension ''.m'' (do le nom fichiers M ou 'M-files'). what affiche la liste des fichiers ''.m'' dj crs. On peut facilement obtenir le listing d'un M-file en excutant type file_name sur la ligne de commande MatLab. Taper le nom dun fichier sans son extension sur la ligne de commande MatLab rsulte en l'xcution des instructions contenues dans le fichier. Un M-file peut en appeler un autre ou s'appeler rcursivement. Il est cependant plus courant d'utiliser des fichiers fonctions. Attention : il est impratif que les fichiers soient dans le rpertoire de travail de MatLab. I.5.2. Fichiers function Les fichiers fonctions (voir : help function) permettent d'tendre les possibilits de MatLab. Ils sont l'quivalent des Subroutine en langage Fortran, des fonctions C etc... Ces fonctions utilisent des variables qui par dfaut sont locales, mais peuvent tre dclares global. La syntaxe est de la forme: function [out1, out2, ...] = function_name(in1, in2, ...) o out i dsigne une variable de sortie, et ini dsigne une variable d'entre. 1.5.3. Fichiers de donnes Il est possible tout instant de sauvegarder une ou plusieurs variables dans un fichier spcifique MatLab dont l'extension sera .mat : la commande utiliser est save. Diffrents formats et options sont utiliss. Pour recharger un tel fichier on utilisera load fname. Chaque variable ayant t sauvegarde par son nom, les variables recharges auront mmes noms, dimensions et valeurs quau moment de la sauvegarde.
MatLab travaille essentiellement sur des matrices qui peuvent tre relles ou complexes. Ainsi, un scalaire est une matrice 11 et un vecteur une matrice N1. Une matrice peut tre dfinie sous forme d'une liste explicite, o les lments d'une mme ligne sont spars par un espace ou une virgule, les lignes sont elles-mmes spares par un point virgule ou un retour chariot.: 1 2 3 A = [ 1 2 3; 4 5 6; 7 8 9] est la matrice A= 4 5 6 7 8 9 Une matrice lments complexes sera dfinie par A = [ 1 2; 3 4] +i*[5 6; 7 8], ou par A = [ 1+5i 2+6i; 3+7i 4+8i]. Les imaginaires purs i ou j peuvent tre utiliss indiffremment. Attention : ne pas insrer d'espace dans la dfinition d'un nombre complexe. Chaque lment d'une matrice est accessible par ses indices strictement positifs entre parenthses. me L'indexation des lments d'un tableau commence toujours 1 : ainsi, l'lment de la 3 ligne et 4me colonne dune matrice A est A( 3,4) ; pour un vecteur X la 2me composante est X( 2).
Les oprations suivantes sont directement accessibles: + addition - soustraction ? multiplication ^ lvation la puissance ' transpose conjugu \ division gauche / division droite Dans chaque cas, les dimensions des matrices sont vrifies et un message d'erreur est dlivr au cas o elles ne seraient pas compatibles. Certaines oprations, telles *, et /, peuvent agir lment par lment si on les fait prcder d'un point.
4. Dans MatLab, les polynmes sont reprsents par le vecteur de leurs coefficients par ordre de puissance dcroissante : par exemple, le polynme x 3 + 4x 2 - 3x +5 est reprsent par le vecteur : [1 4 -3 5]. 5. On peut calculer les racines d'un polynme quelconque en utilisant la fonction roots. R = roots([1 4 -3 5]) donne un vecteur contenant les racines du polynme x 3 + 4x 2 - 3x +5.
L'expression n'est excute que si la relation est vraie. II.5.4. Relations Les oprateurs de relation sont : < infrieur > suprieur
<= >= == ~=
Quand une relation intervient entre des scalaires, le rsultat est un scalaire qui vaut 1 ou 0 suivant que la relation soit vraie ou fausse. Quand une relation intervient entre deux matrices de mme dimension, le rsultat est une matrice constitue de 1 et de 0 selon la relation entre les lments correspondants des matrices.
MatLab tant un langage interprt l'utilisation de boucles ralentit considrablement son excution. La boucle implicite limine en partie cet inconvnient : elle est excute vectoriellement donc plus rapidement. Ainsi crire n = 1:5, revient crer le vecteur ligne n = [1 2 3 4 5]. On peut changer le pas d'incrmentation en crivant n = 1:2:7, ce qui quivaut n = [1 3 5 7]. Ceci s'tend aux nombres non entiers (x = .1:.01:1.) et le pas d'incrmentation peut tre ngatif. Exercice : Essayer la squence suivante: B(:,n) = ones(n,1); for j = n-1:-1:1 B(:,j) = t.*B(:,j+1); end II.7.2. Utilisation du ':' La notation ':' est trs utile pour travailler sur des sous matrices : ?? A(1:3,4) est le vecteur colonne dont les composantes sont les trois premiers lments de la quatrime colonne de la matrice A. ?? A(:,2) est la deuxime colonne de la matrice A ?? A(1:3,:) est la matrice constitue des trois premires lignes de A ?? A(:,[3 6]) est la matrice deux colonnes qui correspondent aux colonnes 3 et 6 de A. ?? A(:,[3 6]) = B(:,1:2) remplace les colonnes 3 et 6 de A par les deux premires colonnes de B. II.7.3. Chanes de caractres et messages Les chanes de caractres sont dfinies entre des 'quotes' simples : c = 'Ceci est un texte' dfinira la variable c comme une chane de caractres qui pourra tre utilise pour afficher le message entre les quotes. disp(c) affichera la chane c l'cran. La fonction error('Erreur dans la fonction func') affichera le texte et arrtera l'excution du programme Z = input('Entrez la valeur de Z: ') affichera le texte et attendra quune valeur de Z soit entre au clavier. Exercices : 1. Dfinir la chane s = 'Bonjour'; 2. Vrifier successivement: size(s) et abs(s). 3. Ajouter s = [s, ' tous']. II.7.4. Format d'affichage Tous les calculs effectus dans MatLab sont en double prcision. Cependant le format d'affichage des rsultats peut tre contrl par la commande format : format short 4 dcimales (dfaut) format long 14 dcimales format short e 4 dcimales notation scientifique format long e 14 dcimales notation scientifique
Un format reste actif tant qu'il n'a pas t redfini par la commande format, l'exception des commandes qui servent supprimer (format compact) et celles qui servent restaurer (format loose) les lignes blanches qui pourraient apparatre l'affichage. II.7.5. Copie d'cran texte La commande diary file_name permet de sauvegarder dans le fichier file_name toute la partie active de l'cran l'exception des graphiques. La sauvegarde s'effectue sous forme de texte ce qui permet une dition ultrieure du fichier.
x = -pi : .01 : pi; y = sin(x); plot(x,y) tracera la fonction sinus(x) dans l'intervalle [ -? ,? ] avec un pas de 0.01. Rajouter titres et lgendes chaque figure. II.8.2. Courbes 3D La commande plot3 est identique la commande plot, elle ne fait appel qu' une coordonne supplmentaire. La syntaxe de base est plot3(x,y,z). Les axes, titres et lgendes se traitent comme dans le cas des courbes planes. Exercice: A l'aide de plot3, tracer la courbe (x=sin(t), y=cos(t), z=t) pour t = 0:pi/50:10*pi. II.8.3. Maillages et surfaces 3D La commande mesh permet de visualiser des courbes 3D sous forme de surfaces mailles. La surface maille est dfinie par les cotes (coordonnes z) de points situs au-dessus d'une grille rectangulaire du plan (x,y). La commande surf s'utilise de la mme faon mais produit une surface facettes colores dont le coloriage est modifiable avec la commande shading. L'angle de vue est gr par la commande view. D'autres fonctions telles que meshz, surfc, surfl, contour et pcolor sont relies la visualisation 3D. II.8.4. Copie d'cran graphique La commande print effectue la copie d'une fentre graphique dans un fichier (voir help print pour les options).
III.
On a regroup par sujet d'intrt les diffrentes commandes et fonctions de MatLab. Il en existe bien d'autres regroupes dans des options spcialises, les botes outils (ou toolbox).
III.2. Oprateurs :
Oprateurs courants + addition - soustraction * multiplication ^ puissance / division droite \ division gauche ' transpose conjugu .' transpose Oprations sur les Tableaux + addition soustraction .* multiplication .^ puissance ./ division droite .\ division gauche Oprateurs Relationnels < infrieur > suprieur <= infrieur ou gal >= suprieur ou gal == gal ~= diffrent de Oprateurs Logiques & et | ou ~ non xor ou exclusif
( ) gre la priorit des oprations arithmtique ou ensre les arguments d'entre des fonctions
III.4. Instructions :
if else elseif end for while break return error Instruction de contrle test conditionnel complte if complte if terminaison de if, for et while instruction de rptition avec compteur instruction de rptition avec test interrompt une boucle for ou while retour affiche un message et interrompt l'excution Instructions spcifiques indicateur d'attente d'entre gnre un menu de choix pour l'utilisateur pause attente function dfinition de fonction global dfinit les variables comme globales Caractre spciaux = assignation . point dcimal ... indique une ligne suite , sparateur d'arguments ou d'instructions ; fin de lignes (matrices) ou suppression de l'affichage % commentaires : manipulation de sous matrices gnration de vecteurs input menu
Variables prdfinies ans nom donn lvaluation dune expression sans assignation realmax plus grand nombre flottant realmin plus petit nombre flottant positif pi ? i, j [? (-1)] inf ? NaN Not a Number flops nombre d'oprations par seconde etime dure d'excution size renvoie la taille d'une matrice length renvoie la longueur d'un vcteur disp affiche une matrice de texte Fonctions mathmatiques lmentaires abs valeur absolu ou module angle argument d'un complexe sqrt racine carre real partie relle imag partie imaginaire conj complexe conjugu gcd PGCD lcm PPCM round arrondi l'entier le plus proche fix troncature floor arrondi vers -? ceil arrondi vers +? sign signe de rem reste de la division exp exponentiel log log nprien log10 log dcimal
Matrices prdfinies zeros matice de 0 ones matrice de 1 eye matrice identit diag matrice diagonale rand nombres alatoires (rpartition uniforme) randn nombres alatoires (rpartition normale) Fonctions trigonomtriques sin, asin, sinh, asinh cos, acos, cosh, acosh tan, atan, tanh, atanh cot, acot, coth, acoth
Fonctions prdfinies bessel fonction de Bessel beta fonction beta gamma fonction gamma rat approximation par un rationnel rats format de sortie pour rat erf fonction erreur erf erfinv inverse de erf ellipke intgrale elliptique complte ellipj fonction elliptique de Jacobi expint fonction intgrale exponentielle pour n=1 log2 logarithme base 2 ou dcomposition mantisse, exposant pow2 calcule 2 puissance y fft FFT de dimension 1 (frquences de 0 1) fft2 FFT bidimensionnelle ifft FFT inverse de dimension 1 ifft2 FFT inverse bidimensionnelle
III.5. Matrices :
Dcompositions et factorisations de Matrices inv inversion lu dcomposition LU chol factorisation de Cholesky qr dcomposition QR nnls moindres carrs non-ngatif orth orthogonalisation eig valeurs et vecteurs propres cdf2rdf forme complexe diagonale vers forme relle diagonale par blocs rsf2csf forme relle diagonale par blocs vers forme complexe diagonale balance mise l'chelle pour le calcul des valeurs propres qz valeurs propres gnralises polyeig polynme aux valeurs propres svd dcomposition en valeurs singulires expm expm1 expm2 expm3 logm sqrtm funm poly det trace cond rcond norm rank Fonctions de Matrices exponentiation (fonction interne) M_file correspondant expm expm par srie de taylor expm par valeurs et vecteurs propres logarithme racine carre ex: funm(A,'sin') donne sin(A) polynme caractristique dterminant trace Conditionnement suivant norme L2 ( [(? max)/( ? min )]) ? 1 bon , ? 0. mauvais normes L1 ,L2 ,Lp et L? rang
III.7. Graphiques :
Graphiques 2D graphe linaire graphe log-log graphe semi-log (x) graphe semi-log (y) graphe (coord. polaires) bar histogramme btons stairs fonction en marches d'escalier errorbar graphe avec barres d'erreur hist histogramme compass reprsentation polaire (module,argument) feather reprsentation linaire (module, argument) fplot graphe d'une fonction Sauvegarde et copie graphique print imprime ou sauvegarde dans un fichier plot loglog semilogx semilogy polar Annotation de graphiques title titre du graphique xlabel lgende abscisse ylabel lgende ordonne zlabel lgende cote grid dessin d'une grille text texte Contrle des fentres graphiques figure ouvre une fentre graphique hold gre la surimpression ishold tat de la surimpression subplot sous-fentres graphique axis contrle de l'apparence et de l'chelle des axes Graphiques 3D surface maille surface 3D facettes plot3 dessin de lignes et points en 3D contour dessin 2D des qui -niveaux contour3 dessin 3D des qui -niveaux clabel tiquettes des qui -niveaux pcolor dessine en pseudocouleur Apparence des graphiques view spcifie l'angle de vue viewmtx matrice de transformation hidden gre les lignes caches mesh surf