Définition d'une fonction

Définitionfunction

Les fonctions sont des scripts MATLAB particuliers.

La structure d'une fonction comporte nécessairement :

  • le mot réservé function ;

  • le nom de la fonction, par exemple mafonction ;

  • un ensemble de paramètres d'entrée e1, e2, ..., en ;

  • un ensemble de paramètres de sortie s1, s2, ..., sn  ;

  • le mot réservé end.

Fondamental

Le nom du fichier doit porter l'extension .m et le nom du fichier sans suffixe doit être exactement le nom de la fonction (apparaissant après le mot-clé function).

Complément

Les versions récentes de MATLAB permettent la création de fonctions dans un script. C'est très pratique pour de petites fonctions "outils", qui ne nécessitent pas d'être externalisées.

Cependant, le plus souvent, il reste préférable d'externaliser les fonctions, pour en faciliter la lisibilité et la mutualisation.

Exemple

Par exemple définissons une fonction nommée mafonction, et enregistrée dans un fichier mafonction.m :

%% mafonction.m
% Fabien Baillon et Jean-Louis Dirion - Nov.2014
%
% Ceci est un petit exemple de fonction

function [s1,s2] = mafonction(e1,e2)
    s1 = e1 .* e2;
    s2 = sin(s1);
end

Remarque

Comme pour les scripts, il est important de choisir des noms de fonctions pertinents, ce qui n'est pas le cas pour cet exemple !

On peut déclarer une fonction avec autant de paramètres d'entrée ou de sortie que l'on veut, voire aucun.

Les paramètres d'entrée déclarés dans la définition de la fonction sont obligatoires à l'utilisation (ils ne peuvent pas être optionnels).

Par contre, par défaut, seule la première sortie est donnée par MATLAB à l'appel de la fonction. Les autres sorties sont par défaut optionnelles.

Exemple

%% stat.m
% Fabien Baillon et Jean-Louis Dirion - Novembre 2014
%
% La fonction stat permet de calculer la valeur moyenne et la déviation standard
% d'un tableau de valeur x
%
% entrée : x, tableau de valeurs
% sorties : moyenne, valeur moyenne du tableau x
%           devstd, déviation standard

function [moyenne,devstd] = stat(x)
    n = length(x);
    moyenne = sum(x)/n;
    devstd = sqrt(sum((x-moyenne).^2/n));
end

Ainsi, si l'on entre les commandes suivantes :

>> s=[1 2 12 3 -2 23 2 6 5 7 3 20];
>> stat(s)

on obtient :

 
ans =
    6.8333

Par contre, si l'on souhaite récupérer toutes les sorties de la fonction, il faut préciser les variables dans lesquelles on souhaite récupérer les valeurs de sortie de la fonction :

>> [moy,dev]=stat(s)

et l'on obtient alors :

 
moy =
    6.8333
dev =
    7.3805

Remarque

Lors de la définition d'une fonction, il est important de bien choisir l'ordre des variables de sortie, par ordre d'importance. Il est ainsi toujours possible de récupérer les premières variables de sortie, en ignorant les suivantes.

Conseil

Lorsque l'on définit une fonction dans un fichier, il est préférable de mettre un ; à la fin de chaque commande constituant la fonction. Ainsi, on évitera l'affichage de résultats intermédiaires.

Attention cependant à ne pas en mettre sur la première ligne.

Conseil

Lorsque l'on définit une fonction, il est préférable d'utiliser systématiquement les opérateurs terme à terme .* ./ et .^ au lieu de * / et ^, si l'on veut que cette fonction puisse s'appliquer à des scalaires, mais aussi à des tableaux.