next up previous contents
suivant: Inline functions monter: Fonctions ou macros (function précédent: Fonctions ou macros (function   Table des matières

M-files functions

Dès que la fonction nécessite plusieurs instructions, il vaut mieux la définir dans un fichier à part à l'aide de l'éditeur de texte.

De manière générale, la syntaxe de définition d'une fonction externe est

function [y_1,...,y_m]=toto(x_1,....,x_n)
.
.
.
toto est le nom de la fonction, $x_1,....x_n$, les $n$ arguments d'entrée et $[y_1,...y_m]$ les $m$ arguments de sortie. Les points verticaux symbolisent les instructions effectuées à l'appel de la fonction.

Le passage des arguments d'entrée dans les fonctions se fait par valeur. Aussi, même si elles sont modifiées dans la fonction les valeurs des paramètres ne sont pas modifiées dans le programme appelant.

Si une des variables de la procédure n'est pas définie à l'intérieur de celle-ci elle doit obligatoirement être fournie en argument d'entrée

La récupération des valeurs calculées par la fonction se fait par les paramètres de sortie ($[y_1,.*.y_n]$ dans la définition de toto ci-dessus).

Prenons l'exemple d'une fonction angle, qui doit calculer l'angle formé par le segment d'extrémités $(0,0)$ et $(x,y)$ avec l'horizontale et aussi le dessiner. On peut créer le fichier angle.m contenant les lignes:

function [s]=angle(x,y)
s=180*atan(y/x)/pi;
patch([x,0,x],[0,0,y],'y')
axis equal
puis dans la fenêtre de commandes on tape
angle(4,5)

Le nom du fichier contenant la fonction porte obligatoirement le nom de cette dernière. On peut mettre plusieurs fonctions dans le même M-file mais seule la fonction du même nom que le fichier peut être utilisée, appelée, à partir de la fenêtre de commandes ou d'une autre fonction ou d'un script. Les autres fonctions éventuellement stockées dans le fichier peuvent s'appeler entre elles mais ne sont pas visibles de l'extérieur.

S'il n'y a qu'un résultat comme dans l'exemple de la fonction angle, on peut se dispenser de le récupérer dans une variable. En revanche s'il y a plus d'un paramètre de sortie, il faut récupérer leurs valeurs dans des variables dans le script d'appel. Regardons par exemple l'utilisation de la fonction $polaire$ définie ci-dessous et sauvée dans le fichier $polaire.m$

function [r,theta]=polaire(x,y)
r=sqrt(x^2+y^2);
theta=atan(y/x);

Pour l'utiliser à partir de la fenêtre Matlab  on tape les instructions suivantes

»r=polaire(2,3)    % ou bien
»polaire(2,3)      % si seulement  le rayon nous intéresse
 ans  =
    3.6055513  
»[r,t]=polaire(2,3)  % si on veut récupérer à la fois le rayon et l'angle
 t  =
     .9828  
 r  =
    3.6056  


next up previous contents
suivant: Inline functions monter: Fonctions ou macros (function précédent: Fonctions ou macros (function   Table des matières
marie 2005-02-01