Zoeken…


Basis voorbeeld

Het volgende MATLAB-script laat zien hoe een basisfunctie te definiëren en aan te roepen:

myFun.m :

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

terminal :

    >> res = myFun(10, 20)

    res =

        30

Meerdere uitgangen

Het volgende MATLAB-script laat zien hoe u meerdere uitgangen in één functie kunt retourneren:

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

MATLAB retourneert echter alleen de eerste waarde wanneer deze is toegewezen aan een enkele variabele

    >> res = myFun(10, 20)

    res =

            30

Het volgende voorbeeld laat zien hoe u een specifieke uitvoer krijgt

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

    res =

            200

smal, smal

In de hoofdtekst van een functie geven nargin en nargout respectievelijk het werkelijke aantal invoer en uitvoer aan dat in de oproep is geleverd.

We kunnen bijvoorbeeld de uitvoering van een functie regelen op basis van het aantal opgegeven invoer.

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

Op een vergelijkbare manier kunnen we de uitvoering van een functie regelen op basis van het aantal uitvoerparameters.

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow