Suche…


Basisbeispiel

Das folgende MATLAB-Skript zeigt, wie eine Basisfunktion definiert und aufgerufen wird:

myFun.m :

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

terminal :

    >> res = myFun(10, 20)

    res =

        30

Mehrere Ausgänge

Das folgende MATLAB-Skript zeigt, wie Sie mehrere Ausgaben in einer einzigen Funktion zurückgeben:

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 liefert jedoch nur den ersten Wert, wenn es einer einzelnen Variablen zugewiesen wird

    >> res = myFun(10, 20)

    res =

            30

Das folgende Beispiel zeigt, wie Sie eine bestimmte Ausgabe erhalten

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

    res =

            200

nargin, nargout

Im Rumpf einer Funktion geben nargin und nargout jeweils die tatsächliche Anzahl der Ein- und Ausgänge an, die in dem Anruf bereitgestellt werden.

Wir können zum Beispiel die Ausführung einer Funktion basierend auf der Anzahl der bereitgestellten Eingaben steuern.

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

Auf ähnliche Weise können wir die Ausführung einer Funktion basierend auf der Anzahl der Ausgabeparameter steuern.

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow