3.9 Ecriture des fonctions

MATLAB fournit des outils pratiques avec lesquels on peut écrire des programmes qui utilisent une collection des commandes MATLAB. Cette approche est similaire à celle des autres langages de programmation.

Le fichier programme doit avoir le format filename.m normalement appelé m-file. Ce-ci étant, tous les sous programmes MATLAB doivent finir par une extension $\mathbf{.m}$, de sorte que MATLAB les reconnaisse comme programme MATLAB.


Exemple


function[ov$_{1}$, ov$_{2}$, ...]=func1(iv$_{1}$, iv$_{2}$, ....)


iv$_{1}$, iv$_{2}$, ... sont les données (input) et ov$_{\mathit{1}}$, ov$_{\mathit{2}}$, ... sont les résultats (output)


Exemple: résolution d'une équation algébrique de second ordre


ax$^{2}$ +bx +c


La solution est donnée par la relation analytique $x=\frac{-b\mp\sqrt{b^{2}-4ac}}{2a}$


function [r1,r2]=secroot(a,b,c);

%

% Trouver le déterminant

Det=b$^{2}$- 4ac;

if(Det$<$0),

r$_{1}$= $\frac{-b+j\sqrt{-Det}}{2a};$

r$_{2}$= $\frac{-b-j\sqrt{-Det}}{2a};$

disp('Les deux racines sont complexes conjuguées)';

[r1 r2]

elseif (Det==0),

r$_{1}$=-$\frac{b}{2a}$

r$_{2}$=r$_{1}$

disp('Deux racines doubles);

else(Det$>$0)

r1= $\frac{-b+\sqrt{Det}}{2a};$

r2= $\frac{-b-\sqrt{Det}}{2a};$

disp('Deux racines distinctes');

end


Une fois cette fonction est crée, on fait appel à elle comme suit:$>$$>$[r1,r2]=secroot(3,4,5)


ou$>$$>$[p1,p2]=secroot(3,4,5)


Remarque : Il est important de spécifier le chemin (pathname) du sous programme.

Un autre souprogramme fct.m est donné ci-dessous


function $\mathbf{[f]}=fct(x)$

$f=(1-x)\symbol{94}2$;


Dans la ligne de commande du programme Matlab on introduit :$>$$>$y=fct(9);



Ce type de sous programme permet une grande souplesse dans l'écriture des programmes.

Symbole Explication
save

La forme de ces symboles

save nomfichier var1 var2 ....

Le fichier généré par la commande save possède l'extension $.mat$ appelé $mat-file$

Dans le cas où nous voulons sauvegarder le fichier dans un format standard :

save nomfichier var1 var2 ....$/ascii/double$


La commande load est la contre partie de save. Cette commande s'écrit :


load nomfichier var1 var2 ....

$>$$>$a=[1 3 4]

$>$$>$b=3

$>$$>$save test

$>$$>$clear all  % efface toutes les variables

$>$$>$who    % affiche toutes les variables     utilisées

$>$$>$load test

$>$$>$who


diary Cette commande capture tout le texte, avec les lignes de réponse, affiché sur l'écran. Le texte est sauvegardé dans un fichier qui peut être édité plus tard.

$>$$>$diary on

$>$$>$a=1; b=4; c=5;

$>$$>$[a b c]

$>$$>$d=a*b

$>$$>$e=g*h

$>$$>$diary off


A ce stade on peut utilisé tout éditeur de fichier pour modifier le fochier $diary.$



Pr. Marc BUFFAT
marc.buffat@univ-lyon1.fr
2008-01-29