Vous êtes sur la page 1sur 10

Premiers pas en Matlab

Florent Krakala z Laboratoire P.C.T., UMR CNRS 7083, ESPCI, 10 rue vauquelin, 75005, Paris, France.

Introduction : quest-ce que Matlab ?

Le logiciel Matlab constitue un syst`me interactif et convivial de calcul numrique et de visualisation grae e phique. Destin aux ingnieurs, aux techniciencs et aux scientiques, cest un outil tr`s utilis, dans les universits e e e e e comme dans le monde industriel, qui int`gre des centaines de fonctions mathmatiques et danalyse numrique e e e (calcul matriciel le MAT de Matlab, traitement de signal, traitement dimages, visualisations graphiques, etc.). Notons que dautres logiciels compatibles avec Matlab existent ; citons par exemple OCTAVE sous Linux ou encore SCILAB, dvelopp en France par lINRIA, qui sont tout deux tr`s performants et de plus e e e gratuits (tlchargement libre). ee

Dmarrer et quitter Matlab e

Pour lancer Matlab, tapez > matlab > dans votre console Linux (ou cliquez simplement sur licne dans un environnement Windows). Pour quitter, o tapez > quit > ou > exit > Matlab fonctionne ` laide de commandes quil faut apprendre ` utiliser. Vous pouvez ` nimporte quel moment a a a taper > help <command> > pour savoir comment on utilise telle ou telle commande (par exemple essayez help exit). Le module daide est aussi assez ecace ; on peut par exemple une recherche de mots clefs en tapant > lookfor sinus > on trouvera que la commande sin correspond, sans surprise, ` la fonction sinus. a On peut enn assister ` une dmonstration de Matlab en tapant a e > demo matlab >

Les variables dans Matlab, premiers calculs

Dans un premiers temps, Matlab peut bien s r sutiliser comme une vulgaire calculette. Ainsi u > 1+2 > donnera 3, > 42 > retourne bien 16 et > (((1+2)3)*4)/2 > donne bien 54, puisque Matlab respecte les r`gles usuelles des mathmatiques. Il est aussi possible, comme dans e e tout langage de programmation, de dnir des variables pour stocker un rsultat ; ainsi apr`s e e e > a=1+2 > > b=2+3 > 1

> a+b > retourne bien 8. Si lon veut viter que Matlab ache les rsultats intermdiaires, on ajoute simplement un ; e e e a ` la n de la commande. On vriera que e > a=1+2 ; > > b=2+3 ; > > a+b > eectue les mmes oprations que prcdemment, mais sans acher les rsultats intermdiaires. Enn, les calculs e e e e e e avec les variables complexes sont parfaitement possibles, en utilisant i ou j (avec bien videment i2 = j 2 = 1) : e > a=1+2i ; > > b=2+3i ; > > a*b > donne la rponse attendue, ` savoir ans = -4 + 7i. On peut ainsi vrier que e a e > exp(i * pi)+1 > est bien nul (aux approximations numriques pr`s), et que e e > sqrt(-1) > retourne i. Matlab tant tr`s tolrant, il est possible dappeler une variable i (ou bien j), mais dans ce cas, e e e on ne pourra plus utiliser par la suite i comme tant le gnrateur des nombres complexes. Il est donc utile e e e de savoir quelles sont les variables que nous avons utilises depuis le dbut de la session, et pour cela il sut e e dcrire e > who > et pour en savoir plus sur elles > whos > Enn, pour les dtruire, on utilise e > clear a > ou encore pour toutes les variables > clear all > Certaines variables tr`s utiles sont dj` dnies, comme e ea e > pi > ou > ans > qui retourne la derni`re rponse donne par Matlab. Il est aussi utile de savoir quen tapant sur on peut e e e rappeler les commandes prcdentes (la `che permettant de revenir) cela dispense de taper plusieurs fois des e e e commandes identiques.

Loprateur colon : e

Avant daller plus loin, il est ncessaire de se familiariser avec une notation que lon retrouve partout en e Matlab, celle de loprateur : (en anglais colon). En Matlab, quand lon crit 1 :10 par exemple, cela e e signie tous les nombres de 1 a 10 (c.a.d. 1 2 3 4 5 6 7 8 9 10), et 1 :10 :2 signie tous les nombres de 1 a 10 avec un pas de 2 (et donc les nombres : 1 3 5 7 9), le pas tant unitaire par dfaut. Cette notation doit e e tre imprativement comprise car elle est utilise sans arrt. On samusera par exemple a crire e e e e e > 1 :10 > > 10 :-1 :1 > > 0 :pi/4 :pi > et ` observer le rsultat. a e

Les vecteurs en Matlab

Nous navons vu ici que des variables scalaires (i.e. des nombres) mais Matlab permet dutiliser aussi bien des vecteurs ou des matrices. Commenons par les vecteurs ; Pour dnir un vecteur v, par exemple v = c e (11 22 33 44 55), on utilise > v=[11 22 33 44 55] > La commande 2

> v > donne ensuite la transpose de ce vecteur, cest-`-dire ici un vecteur colonne. On peut aussi crire e a e > z=[11 ; 22 ; 33 ; 44 ; 55 ;] > pour obtenir directement un vecteur colonne z, mais il est bien plus simple dcrire e > z=v > ou encore > z=[11 22 33 44 55] > pour obtenir 11 22 z = 33 44 55 Il est aussi possible dutiliser ces notations avec notre oprateur : pour dnir un nouveau vecteur. Par e e exemple si lon crit [1 :1 :5], on dnit un vecteur allant de 1 ` 5 avec une incrmentation unit. Ainsi e e a e e > w=[1 :1 :5] > ou encore > w=[1 :5] > nous permettent de dnir le vecteur e w = (1 2 3 4 5) Les mmes oprations sont bien s r possibles sur les vecteurs colonnes, par exemple e e u > vec=[1 :2 :10] > dnit le vecteur e 1 3 vec = 5 7 9 Pour accder a une valeur particuli`re dun vecteur, on crira par exemple e e e > v(2) > qui donne simplement acc`s au 2em lment, c.-`.-d. ici la valeur 22. Il est aussi possible dutiliser les : pour e ee a slectionner plusieurs lments dun vecteur ! Voici quelques exemples : e ee > v(1 :3) > donne acc`s aux lments qui vont de 1 ` 3 (avec un pas de 1 sans plus de prcision, donc les lments 1, 2 et e ee a e ee 3). Cette commande retourne le vecteur (11 22 33). On peut aussi crire e > v(1 :2 :5) > qui donne acc`s aux lments qui vont de 1 ` 5, mais en incrmentant avec un pas de 2. Dans ce cas, le vecteur e ee a e (11 33 55) est retourn. Si lon crit e e > v > tout le vecteur est retourn, mais lon obtient le mme rsultat par e e e > v( :) > le symbole : sans autres prcisions signiant tout le vecteur. Matlab permet la multiplication des vecteurs, e cependant on surveillera lordre de ce que lon crit : ainsi si vec*vec, retourne un message derreur, vec*vec e retourne une matrice et vec*vec un nombre. . .

Les matrices en Matlab

On vient de voir notre premi`re matrice. Il sut en fait dajouter une dimension aux vecteurs pour crer e e des matrices avec les mmes notations. Ainsi e > A=[1 2 3 ; 2 4 5 ; 6 7 8 ;] > 3

gn`re la matrice e e 1 2 A = 2 4 6 7 3 5 8

Il est important de bien faire attention ` la taille des objets que lon dnit sous peine dobtenir des messages a e derreur. Si lon veut crer une matrice ` partir de ses colonnes, il sut dcrire e a e > A=[[1 2 6] [2 4 7] [3 5 8]] > Pour lire les lments, on utilise les mme mthodes que prcdemment. Ainsi la commande ee e e e e > A(1,3) > permet daccder ` llment (1,3) de la matrice A, qui est ici 3. De mme e a ee e > A(1 :3,2 :3) > retourne les lignes 1 ` 3 et les colonnes 2 ` 3 : a a 2 3 4 5 7 8 Le mme rsultat est obtenu par la notation e e > A(1 :1 :3,2 :1 :3) > Il est enn souvent utile de pouvoir accder a lun des vecteur (ligne ou colonne) dune matrice. Il faut alors se e ` souvenir que lon acc`de ` toutes les valeurs dun vecteur par la notation : et que, par consquent, on crira e a e e A( :,2) pour obtenir la deuxi`me colonne de A et A( :,3) pour la troisi`me. De mme A(1, :) retourne toute e e e la premi`re ligne. e Enn, on souhaite frquemment transposer une matrice ; en Matlab, encore une fois, on proc`de comme pour e e les vecteurs : > A > est bien la transpose de A. Il existe un certain nombre de commandes qui gn`rent automatiquement des e e e matrices particuli`res : e 1. rand(p) cre une matrice p p dont les lments sont alatoires, distribus selon une loi de probabilit e ee e e e uniforme dans lintervalle [0, 1[. 2. randn(p) cre une matrice p p dont les lments sont alatoires, distribus selon une loi de probabilit e ee e e e gaussienne de moyenne nulle et de variance unit. e 3. eye(p) cre une matrice identit p p. e e 4. zeros(p) cre une matrice de zros p p. e e 5. ones(p) cre une matrices de uns p p. e Il est aussi possible dutiliser ces commandes pour crer des matrices non carres, en crivant par exemple e e e eye(5, 3). On consultera avec prot laide en ligne de Matlab. Il est possible, pour nir, de dnir les matrices e par blocs. Ainsi, pour crer une matrice e 1 0 0 B= 1 1 1 il sura dcrire e > B=[eye(3) eye(3) ;ones(3) zeros(3) ;] > ou bien en utilisant les colonnes > B=[[eye(3) ones(3)] [eye(3) zeros(3)]] > ou bien encore > B=[[eye(3) ; ones(3)] [eye(3) ;zeros(3)]] > 0 1 0 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0

Oprations matricielles avec les vecteurs et les matrices e

Matlab est vraiment performant pour la manipulation de matrices, de vecteurs, ou de tableaux en gnral. e e Pour la clart de lexpos, on notera par la suite les vecteurs avec des minuscules et les matrices par des e e majuscules. La multiplication de vecteurs et de matrices se fait en utilisant la notation *. Par exemple > C=[1 3 4 ; 5 2 1 ; 3 1 2] > > b=[3 1 2 ] > > v=[1 3 4 ] > > v*b > > v*b > > A*C > > C*A > > A*v > Notez bien videment que cette multiplication nest pas commutative, comme il se doit. Pour les matrices e carres, il existe aussi des fonctions spciques extrmement utiles : e e e 1. inv(A) calcule linverse de A. 2. det(A) calcule le dterminant de A. e 3. diag(A) retourne la diagonale. 4. [V,E]=eig(A) retourne deux matrices V et E. V est une matrice dont les colonnes contiennent les vecteurs propres de A, et E est une matrice dont la diagonale contient les valeurs propres de A. Matlab permet aussi deectuer des inversion de matrices, et donc de rsoudre rapidement des syst`mes e e dquations linaires. Par exemple, pour rsoudre un syst`me du type A x = b, la solution est donne par e e e e e x = A1 b. Cela donne, en Matlab : > inv(A)*b > On peut aussi crire e > A\b > o` lon notera le symbole \ qui signie diviser par la gauche ou plus directement, si lon tient ` utiliser la division u a usuelle (la division ` droite) a > eye(3)/A*b >

Oprations dans les lments des matrices/vecteurs e ee

Si nous voulons travailler directement avec les lments de matrices/vecteurs, par exemple multiplier les ee lments de A par ceux de B, il ne sagit plus alors dune opration matricielle, mais bien dune multiplication ee e des lments de matrices. Cest parfois utile quand on utilise un vecteur comme un tableau. Pour spcier que ee e lon utilise les lments et non pas les matrices, on crit par exemple pour la multiplication .* au lieu de ee e *. Ainsi on aura pour la multiplication lment par lment des vecteurs ee ee > v.*b > ou > b.*v > et de mme pour des matrices e > A.*C > > b./v > > C./A > > A.2 > Certaines fonctions, qui ne sont pas destines directement aux matrices, sappliquent directement aux lments e ee et nont donc pas besoin du point : > sin(v) > > log(C) > > exp(A) > > 0.5-C >

Enn, les fonctions suivantes sont parfois tr`s utiles : [m,n]=size(A), retourne m, le nombre de lignes, et n e le nombre de colonnes de A. min(V) retourne un vecteur qui contient llment le plus petit de chaque colonne ee de V (ou le plus petit lment de V si V est un vecteur). De mme min(min(V)) retourne llment le plus ee e ee petit de la matrice V et max(A) eectue les mmes oprations pour les maximums. e e

Graphes et dessins

Il est facile deectuer diverses reprsentations graphiques avec Matlab, en 2d aussi bien quen 3d. En tapant e > help plot > on a acc`s ` toutes les options disponibles. On pourra aussi saider de la demo Matlab. Pour acher la fonction e a x sin(x) dans lintervalle [0 : 10], il sut dcrire e > x=[0 :0.1 :10] ; > > y=x.*sin(x) ; > > plot(x,y) > Notons que lon a ici besoin de la multiplication avec le point (.*) puisque x et y sont des vecteurs. Enn, on peut nommer les dirents graphes de la faon suivante e c > xlabel(x) > > ylabel(y) > > title(...) > On peut aussi acher deux courbes a la fois en tapant hold on apr`s le premi`res plot et crire hold o apr`s e e e e le dernier. Ou encore plus simplement > plot(x,sin(x),x,cos(x)) > On peut aussi diviser lcran en deux parties dans le mme graphe e e > subplot(1,2,1) > > plot(x,sin(x),sin) > > subplot(1,2,2) > > plot(x,cos(x),cos) > Pour crer un chier image, on peut soir utiliser les menus deroulants avec la souris ou encore par exemple e pour un chier PostScript (.ps) taper > print -dps name.ps > Il est souvent utile de tracer des courbes en utilisant des axes logarithmiques. Avec Matlab, il sura dutiliser loglog, semilogx et semilogy ` la place de plot. On pourra aussi crer des vecteurs avec des espacements a e logarithmiques en utilisant > y=logspace(-1,2,6) > pour un vecteur de 6 valeurs allant de 10 1 ` 102 . Il est enn possible de tracer des fonctions en 3d, de la mme a e faon quen 2d, en utilisant la fonction plot3, similaire a la fonction 2d. Par exemple, pour tracer une hlice on c e crira : e > t = 0 :pi/50 :10*pi ; > > plot3(sin(t),cos(t),t) ; > Pour tracer des surface en 3d dimension, il est ncessaire dintroduire une maille (en anglais mesh). Lexemple e suivant montre comment utiliser cette nouvelle fonction > [x,y]=meshgrid(-2 :0.2 :2,-2 :.2 :2) ; > > z=x.*exp(-x.2-y.2) > > mesh(z) > On pourra samuser a essayer les direntes commandes mesh,surf, sur ou encore pcolor pour les plots de e contours. Nous avons vu comment tracer des fonctions, mais souvent nous voulons acher des points crits dans un e chier. Pour accder ` ces valeurs, le plus simple est dutiliser la fonction Matlab load. Si par exemple nous e a avons un chier data.txt avec le format suivant 0 1. 1 1.1 2 1.5 3 1.4 6

4 1.7 ... ... il sura, pour acher la seconde colonne en fonction de la premi`re, dcrire e e load data.txt ; x=data( :.1) ; y=data( :.2) ; plot(x,y) La premi`re commande lit le chier et cre une matrice (avec le mme nom) contenant ces donns. On copie e e e e ensuite la premi`re colonne dans le vecteur x, la seconde dans le vecteur y, et lon ache nalement le graphe. e On proc`de trivialement de la mme faon en 3d. e e c

10

Les boucles et les instructions conditionnes e

Lutilisation des boucles est le premier pas dans la programmation. En Matlab, les boucles for et while sont tr`s utilises pour les processus itratifs. La boucle for est associe ` une variable, et excute un processus e e e e a e plusieurs fois en prenant ` chaque fois une nouvelle valeur pour cette variable. Pour illustrer cela, crons dabord a e un vecteur de taille 5 rempli de valeurs alatoires e > v=rand(1,5) > Si lon veut soustraire ` tous les lments (sauf le premier) de ce vecteur v la premi`re valeur (i.e. v(1)), on crit a ee e e > for i = 2 : 5 > v(i)=v(i)-v(1) end La premi`re ligne se comprend pour toutes les valeurs qui vont de 2 a 5, excute les commandes suivantes, e ` e jusqu` end. Un exemple simple dutilisation de boucle pour la rsolution dun vrai probl`me est celui des a e e quations direntielles. Supposons que lon veuille calculer y(x), qui vrie e e e dy = x2 y 2 dx avec y(0) = 1. On peut discrtiser lquation direntielle (cest la mthode dEuler) ce qui donne y(x + x) = e e e e y(x) + x(x2 y 2 ). Cette quation nous dit quil est possible de calculer y(x + x) si lon conna y(x), ce qui e t permet une solution itrative. Notant h = x, il sut ensuite de procder comme suit pour rsoudre lquation e e e e direntielle : e > n=0.1 > > x=[0 :n :2] ; > > y=0*x ; > > y(1)=1 > Notons ici un pi`ge classique : Matlab numrote ses lments de matrices/vecteurs en partant de 1. Ce qui est e e ee pour nous la composante y(0) la valeur en x = 0 de y(x) doit donc tre place ` la premi`re place du e e a e vecteur, c.-`.-d.. en y(1) pour Matlab. De mani`re gnrale, on fera extrmement attention aux indices dans a e e e e la programmation. > size(x) > Cette derni`re commande donne le rsultat [1 21]. On introduit ensuite une boucle e e > for i=2 :21 > y(i)=y(i-1)+n*(x(i-1)2-y(i-1)2) ; end On peut alors acher un graphe du rsultat e > plot(x,y) > La commande while fonctionne de faon similaire ; elle excute en boucle les commandes tant quune certaine c e condition est satisfaite. On aurait donc pu crire, pour un rsultat identique e e > i=2 > > y(1)=1 > > while(i<=21) > y(i)=y(i-1)+n*(x(i-1)2-y(i-1)2) ; i=i+1 7

end Les instructions conditionns, enn, permettent de neectuer une opration que si une certaine condition est e e satisfaite. La plus simple est if, qui excute des commandes seulement si une condition est remplie (mais ` e a la dirence de while, elle nexcute ces commandes quune seule fois). Par exemple, si lon veut mettre ` zro e e a e toutes les composantes suprieures ` 0.2 du vecteur v, on peut crire e a e > for i=1 :5 > > if v(i)>0.2 > > v(i)=0 > > end > > end >

11

Les fonctions dans Matlab

On la vu, Matlab a une bonne biblioth`que de fonctions mathmatiques (cos,sin,exp,log,sqrt. . . ) et lon e e pourra par exemple vrier que e > cos(0.5)+i*sin(0.5) > donne bien la mme chose que e > exp(i/2) > comme nous la appris Euler. on encore utiliser des fonctions plus exotiques (la fonction erreur erf, les fonctions de Bessel que lon trouvera par lookfor bessel. . . . Plus important encore, on peut dnir ses propres fonctions. e Pour cela, il faut crer un chier Matlab (on dit encore un m-le), ce que lon peut faire en utilisant lditeur e e prvu par matlab (chier-Nouveau-m-le), ou soit en ouvrant votre diteur favori. Si lon cre par exemple e e e un chier EulerCheck.m dans lequel on crit e > function y=EulerCheck(x) > > y=cos(x)=i * sin(y) ; > On notera le ; pour viter que Matlab nous ache ce quil calcule dans la fonction. On accdera ensuite aux e e valeurs de cette fonction dans la fentre principale de Matlab par > EulerCheck(0.5) e > Si plusieurs arguments sont fournis, on doit les sparer par une virgule ; et si plusieurs sont retourns, il faut e e les mettre entres crochets. Par exemple (pour un chier nomm distance.m) e > function [d,dx,dy]=distance(x1,y1,x2,y2) > > d=sqrt((x2-x1)2 + (y2-y1)2) > > dx=x2-x1 > > dy=y2-y1 > permet de retourner la distance absolue et les distance en x et y entre deux points de coordonnes (x1 , y1 ) et e (x2 , y2 ). En tapant dans Matlab > [dis,disx,disy]=distance(0,0,1,1) ; > On vriera ensuite que dis = 1.4142 et que disx = disy = 1. e

12

Fichiers excutables : les scripts e

Il arrive que lon doive excuter la mme tche plusieurs fois mais en changeant seulement quelques pae e a ram`tres. Une bonne faon de faire cela est de crer un chier excutable, ou encore script. Continuons avec la e c e e rsolution eulrienne de lquation y = 1/y. Il faut crer un chier dont le nom porte lextension .m. Appelons-le e e e e SimpleEuler.m. Ouvrez ce chier en utilisant votre diteur favori, e > emacs SimpleEuler.m > (ou nedit, ou vi. . . ) ou bien encore utiliser lditeur intgr dans matlab pour crer un nouveau m-le, puis e e e e tapez % le : SimpleEuler.m % To nd an approximation of dy/dx=1/y % with y(t=0)=starty % you need rst to specify h and starty x=[0 :h :1] ; 8

y=0*x ; y(1)=starty for i=2 :max(size(y)) y(i)=y(i-1)+h/y(i-1) ; end Sauvegardez-le, puis tapez > help SimpleEuler > Ce qui retourne les commentaires apr`s %. Pour lexcuter, on a besoin de h et de starty e e > h=0.01 ; > > starty=1 ; > > SimpleEuler > > plot(x,y) > Il est alors simple de recommencer autant de fois que lon veut pour direntes valeurs initiales. e

13

Fichiers sous-routines : les fonctions (bis)

Il est possible de gnraliser les chiers excutables pour crer des fonctions, ou encore des sous-routines. e e e e On la vu, matlab permet de crer des fonctions mathmatiques mais lon peut demander (presque) tout ` une e e a telle fonction ! Du point de vue de la programmation, la dirence principale entre les fonctions et les programmes est e que 1) quand on calcule des variables dans des fonctions, elles sont compl`tement eaces ` la n du calcul e e a a ` lexception de celles dont on dsire retourner la valeur, et 2) quil est bien sur aussi possible denvoyer des e param`tres ` la fonction, ce qui fait toute sa force. Revenons encore ` notre exemple eulrien, et crons un e a a e e chier EulerApprox.m dans lequel on va dnir une fonction du mme nom (il est important que le nom de e e la fonction et celui du chier soient identiques) function [x,y]=EulerApprox(startx,h,endx,starty) % Find the Euler approximation of dy/dx=1/y % in the range [startx :endx] % with the starting condition starty % and using h as the time step x=[startx :h :endx] ; y=0*x ; y(1)=starty for i=2 :max(size(y)) y(i)=y(i-1)+h/y(i-1) ; end On peut alors crire dans Matlab e > [x,y]=EulerApprox(0,0.01,1,1) ; > > plot(x,y) > pour obtenir le mme rsultat que prcdemment. On notera que les variables intermdiaires (c.-`.-d. ici la e e e e e a variable i par exemple) nexistent plus en dehors de la boucle. Notez la dirence si lon tape e > clear all ; > > h=0.01 ; > > starty=1 ; > > SimpleEuler > > i > ou si lon tape > clear all ; > > [x,y]=EulerApprox(0,0.01,1,1) > > i > Cela illustre le concept de variable locale : les variables utilises dans une fonction nexistent plus en dehors de e cette fonction : cest une notion fondamentale que lon retrouve dans tous les langage de programmation. Notons que dans la pratique, pour rsoudre une quation direntielle, il est prfrable dutiliser plutt les e e e ee o fonctions spciques de Matlab ; essayez help ode23 ou help ode45 pour apprendre ` utiliser ces (puissantes) e a 9

fonctions.

14

Avant daller plus loin, quelques conseils . . .

1. Il faut se souvenir que Matlab distingue les majuscules et minuscules et quainsi la matrice A et la matrice a ne sont pas identiques ! Les lettres accentues sont interdites galement. e e 2. Il ne faut pas donner des noms aux variables qui correspondent ` des noms de fonctions (soit celles a de Matlab, soit celles de lutilisateur) : dans ce cas Matlab ne peut plus accder ` ces fonctions. Cest e a particuli`rement vrai aussi pour les variables complexes i et j que lon dsactive complment quand lon e e e nomme une variable i ou j dans un boucle ! 3. On tachera dutiliser au maximum les chiers .m (c.a.d. les scripts et les fonctions) ; lide est dutiliser e la page principale de Matlab comme une feuille de papier brouillon et de rserver les calculs diciles aux e chiers .m. 4. Il est primordial dinsrer des commentaires dans les chiers .m, et ce au fur et a mesure de la programe ` mation (et pas seulement lorsque la programmation est termine). e 5. De mme, toujours garder ` lesprit, lorsque lon crit des fonctions, la notion de variable locale. En e a e gnral, une variable nexiste que dans un certain contexte. e e 6. Enn, il faut vectoriser le plus possible les oprations et viter les boucles, et ceci est aussi fondae e mental ! puisque Matlab est un langage interprt. Il est souvent plus simple de tout crire sous forme de ee e boucles ; si cela nest pas un probl`me pour des petites oprations, un gain de temps tr`s considrable est e e e e obtenu en vectorisant les calculs. Le petit exemple suivant est tr`s instructif ; pour trouver la dirence e e maximale entre le vecteur x et le vecteur y dnis par e > x=rand(1,100000) ;y=rand(1,100000) ; > on vriera que e > maxdif=max(x-y) ; > donne un rsultat immdiatement tandis que e e > for i=1 :100000 ;dif(i)=x(i)-y(i) ; end ; maxdif=max(dif ) ; > est dj` beaucoup plus lent ! ea

10

Vous aimerez peut-être aussi