Main Content

function

Déclarer le nom, les entrées et les sorties d'une fonction

Description

exemple

function [y1,...,yN] = myfun(x1,...,xM) déclare une fonction intitulée myfun qui accepte les entrées x1,...,xM et renvoie les sorties y1,...,yN. Cette instruction de déclaration doit être la première ligne exécutable de la fonction. Les noms de fonctions valides commencent par un caractère alphabétique et peuvent contenir des lettres, des chiffres ou des underscores.

Il est possible d’enregistrer vos fonctions :

  • Dans un fichier de fonctions contenant uniquement des définitions de fonctions. Le nom du fichier doit correspondre au nom de la première fonction dans le fichier.

  • Dans un fichier de scripts contenant des commandes et des définitions de fonctions. Les fonctions doivent se trouver à la fin du fichier. Les fichiers de scripts ne peuvent pas porter le nom d’une fonction qui s’y trouve. Les fonctions sont supportées dans les scripts à partir de la version R2016b.

Les fichiers peuvent inclure plusieurs fonctions locales ou fonctions imbriquées. Pour des questions de lisibilité, utilisez le mot clé end pour indiquer la fin de chaque fonction dans le fichier. Le mot clé end est requis lorsque :

  • Une des fonctions du fichier contient une fonction imbriquée.

  • La fonction est une fonction locale au sein d’un fichier de fonctions, et qu’une des fonctions du fichier utiliser le mot clé end.

  • La fonction est une fonction locale au sein d’un fichier de scripts.

Exemples

réduire tout

Définissez une fonction dans un fichier nommé calculateAverage.m qui accepte un vecteur en entrée, calcule la moyenne des valeurs et renvoie un seul résultat.

function ave = calculateAverage(x)
    ave = sum(x(:))/numel(x); 
end

Appelez la fonction depuis la ligne de commande.

z = 1:99;
ave = calculateAverage(z)
ave =
    50

Définissez une fonction dans un fichier nommé stat.m qui renvoie la moyenne et l’écart-type d’un vecteur en entrée.

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

Appelez la fonction depuis la ligne de commande.

values = [12.7, 45.4, 98.9, 26.6, 53.1];
[ave,stdev] = stat(values)
ave =
   47.3400
stdev =
   29.4124

Définissez un script dans un fichier nommé integrationScript.m qui calcule la valeur de l’intégrande à $2\pi/3$ ainsi que la zone se trouvant sous la courbe de 0 à $\pi$. Ajoutez une fonction locale qui définit l’intégrande $y = \sin(x)^3$.

Remarque : La possibilité d'inclure des fonctions dans des scripts requiert la version R2016b de MATLAB® ou les suivantes.

% Compute the value of the integrand at 2*pi/3.
x = 2*pi/3;
y = myIntegrand(x)

% Compute the area under the curve from 0 to pi.
xmin = 0;
xmax = pi;
f = @myIntegrand;
a = integral(f,xmin,xmax)

function y = myIntegrand(x)
    y = sin(x).^3;
end
y =

    0.6495


a =

    1.3333

Définissez deux fonctions dans un fichier nommé stat2.m, où la première appelle la deuxième.

function [m,s] = stat2(x)
    n = length(x);
    m = avg(x,n);
    s = sqrt(sum((x-m).^2/n));
end

function m = avg(x,n)
    m = sum(x)/n;
end

La fonction avg est une fonction locale. Les fonctions locales sont uniquement disponibles pour les autres fonctions au sein du même fichier.

Appelez la fonction stat2 depuis la ligne de commande.

values = [12.7, 45.4, 98.9, 26.6, 53.1];
[ave,stdev] = stat2(values)
ave =
   47.3400
stdev =
   29.4124

Définissez une fonction qui restreint l’entrée à un vecteur numérique ne contenant aucun élément Inf ou NaN. Cette fonction utilise le mot clé arguments, qui est valide pour les versions R2019b ou ultérieures de MATLAB®.

function [m,s] = stat3(x)
    arguments
        x (1,:) {mustBeNumeric, mustBeFinite}
    end
    n = length(x);
    m = avg(x,n);
    s = sqrt(sum((x-m).^2/n));
end

function m = avg(x,n)
    m = sum(x)/n;
end

Dans le bloc de code arguments, (1,:) indique que x doit être un vecteur. Les fonctions de validation {mustBeNumeric, mustBeFinite} restreignent les éléments dans x à des valeurs numériques qui ne sont pas Inf ou NaN. Pour plus d’informations, consultez Function Argument Validation.

Le fait d’appeler la fonction avec un vecteur contenant un élément NaN constitue une violation de la déclaration d’argument de l’entrée. Cette violation produit une erreur provoquée par la fonction de validation mustBeFinite.

values = [12.7, 45.4, 98.9, NaN, 53.1];
[ave,stdev] = stat3(values)
Invalid input argument at position 1. Value must be finite.

Historique des versions

Introduit avant R2006a

développer tout