Main Content

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

function

Deklarieren von Funktionsname, Eingaben und Ausgaben

Beschreibung

Beispiel

function [y1,...,yN] = myfun(x1,...,xM) deklariert eine Funktion mit dem Namen myfun, die die Eingaben x1,...,xM akzeptiert und die Ausgaben y1,...,yN zurückgibt. Diese Deklarationsanweisung muss die erste ausführbare Zeile der Funktion sein. Gültige Funktionsnamen beginnen mit einem alphabetischen Zeichen und können Buchstaben, Zahlen oder Unterstriche enthalten.

Sie können Ihre Funktion wie folgt speichern:

  • In einer Funktionsdatei, die ausschließlich Funktionsdefinitionen enthält. Der Name der Datei muss dem Namen der ersten Funktion in der Datei entsprechen.

  • In einer Skriptdatei, die Befehle und Funktionsdefinitionen enthält. Funktionen müssen sich am Ende der Datei befinden. Skriptdateien können nicht denselben Namen wie eine Funktion in der Datei haben. Funktionen in Skripts werden ab R2016b unterstützt.

Dateien können mehrere lokale Funktionen oder verschachtelte Funktionen umfassen. Zum Verbessern der Lesbarkeit verwenden Sie das Schlüsselwort end, um das Ende jeder Funktion in einer Datei anzugeben. Das Schlüsselwort end ist in folgenden Fällen erforderlich:

  • Wenn eine beliebige Funktion in der Datei eine verschachtelte Funktion enthält.

  • Wenn die Funktion eine lokale Funktion innerhalb einer Funktionsdatei ist und eine beliebige lokale Funktion in der Datei das Schlüsselwort end verwendet.

  • Wenn die Funktion eine lokale Funktion innerhalb einer Skriptdatei ist.

Beispiele

alle reduzieren

Definieren Sie eine Funktion in einer Datei mit dem Namen calculateAverage.m, die einen Eingabevektor akzeptiert, den Durchschnitt der Werte berechnet und ein einzelnes Ergebnis zurückgibt.

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

Rufen Sie die Funktion über die Befehlszeile auf.

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

Definieren Sie eine Funktion in einer Datei mit dem Namen stat.m, die den Mittelwert und die Standardabweichung eines Eingabevektors zurückgibt.

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

Rufen Sie die Funktion über die Befehlszeile auf.

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

Definieren Sie ein Skript in einer Datei mit dem Namen integrationScript.m, das den Wert des Integranden bei $2\pi/3$ und die Fläche unter der Kurve von 0 bis $\pi$ berechnet. Schließen Sie eine lokale Funktion ein, die den Integranden definiert, $y = \sin(x)^3$.

Hinweis: Ab MATLAB® R2016b können Sie Funktionen in Skripte einschließen.

% 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

Definieren Sie zwei Funktionen in einer Datei mit dem Namen stat2.m, sodass die erste Funktion die zweite aufruft.

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

Die Funktion avg ist eine lokale Funktion. Lokale Funktionen sind nur für andere Funktionen innerhalb derselben Datei verfügbar.

Rufen Sie die Funktion stat2 über die Befehlszeile auf.

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

Definieren Sie eine Funktion, die die Eingabe für einen numerischen Vektor einschränkt, der keine Inf- oder NaN-Elemente enthält. Diese Funktion verwendet das Schlüsselwort arguments, das für MATLAB®-Versionen ab R2019b gültig ist.

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

Im Codeblock arguments weist (1,:) darauf hin, dass x ein Vektor sein muss. Die Validierungsfunktionen, {mustBeNumeric, mustBeFinite}, beschränken die Elemente in x auf numerische Werte, die nicht Inf oder NaN sind. Weitere Informationen finden Sie unter Function Argument Validation.

Wird die Funktion mit einem Vektor aufgerufen, der ein Element enthält, das NaN ist, verletzt dies die Deklaration des Eingabearguments. Diese Verletzung führt dazu, dass die Validierungsfunktion mustBeFinite einen Fehler ausgibt.

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

Versionsverlauf

Eingeführt vor R2006a

alle erweitern