3
Fonctions ou macros (function )
Nous allons maintenant détailler quelques règles de programmation qui pour la plupart ne devraient pas
surprendre outre mesure si on connaı̂t déjà un autre langage (C ou Fortran).
Les fonctions sont des enchaı̂nements de commandes Matlab regroupées sous un nom de fonction permettant
de commander leur exécution.
On peut mettre dans une fonction un groupe de commandes destiné à être exécuté plusieurs fois au cours du
calcul avec éventuellement des valeurs de paramètres différents. La fonction peut aussi être chargée de réaliser
un calcul avec un certain algorithme, qui pourra être remplacé éventuellement par un autre plus rapide ou
plus précis, en changeant simplement le nom de la fonction dans le programme appelant. Enfin, dès que le
programme est un peu long et compliqué, il est souhaitable de le découper en fonctions, correspondant à des
étapes pour améliorer la lisibilité et la compréhension de l’algorithme.
Les fonctions peuvent être définies inline c’est à dire dans le corps du progamme appelant ou bien dans
des fichiers externes indépendants M file.
3.1
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)
.
.
.
où toto est le nom de la fonction, x1 , ....xn , les n arguments d’entrée et [y1 , ...ym ] 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 , . ∗ .yn ] 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
10
">