Recherche…


Exemple de base

Le script MATLAB suivant montre comment définir et appeler une fonction de base:

myFun.m :

    function [out1] = myFun(arg0, arg1)
        out1 = arg0 + arg1;
    end

terminal :

    >> res = myFun(10, 20)

    res =

        30

Plusieurs sorties

Le script MATLAB suivant montre comment renvoyer plusieurs sorties en une seule fonction:

myFun.m :

    function [out1, out2, out3] = myFun(arg0, arg1)
        out1 = arg0 + arg1;
        out2 = arg0 * arg1;
        out3 = arg0 - arg1;
    end

terminal :

    >> [res1, res2, res3] = myFun(10, 20)

    res1 =

            30

    res2 =

            200

    res3 =
            -10

Cependant, MATLAB ne renverra que la première valeur lorsqu'il est assigné à une seule variable

    >> res = myFun(10, 20)

    res =

            30

L'exemple suivant montre comment obtenir une sortie spécifique

    >> [~, res] = myFun(10, 20)

    res =

            200

nargin, nargout

Dans le corps d'une fonction, nargin et nargout indiquent respectivement le nombre réel d'entrées et de sorties fournies dans l'appel.

Nous pouvons par exemple contrôler l'exécution d'une fonction en fonction du nombre d'entrées fournies.

myVector.m :

function [res] = myVector(a, b, c)
    % Roughly emulates the colon operator

    switch nargin
        case 1
            res = [0:a];
        case 2
            res = [a:b];
        case 3
            res = [a:b:c];
        otherwise
            error('Wrong number of params');
    end
end

Terminal:

>> myVector(10)

ans =

    0    1    2    3    4    5    6    7    8    9   10

>> myVector(10, 20)

ans =

   10   11   12   13   14   15   16   17   18   19   20

>> myVector(10, 2, 20)

ans =

   10   12   14   16   18   20

De la même manière, nous pouvons contrôler l'exécution d'une fonction en fonction du nombre de paramètres de sortie.

myIntegerDivision :

function [qt, rm] = myIntegerDivision(a, b)
    qt = floor(a / b);

    if nargout == 2
        rm = rem(a, b);
    end
end

terminal :

>> q = myIntegerDivision(10, 7)

q = 1

>> [q, r] = myIntegerDivision(10, 7)

q = 1
r = 3


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow