Erstellen von Funktionen in Dateien
Sowohl mit Skripten als auch mit Funktionen können Sie Sequenzen von Befehlen wiederverwenden, indem Sie sie in Programmdateien speichern. Skripte sind die einfachste Art von Programmen, da sie Befehle genau so speichern, wie Sie sie in der Befehlszeile eingeben würden. Funktionen bieten mehr Flexibilität, in erster Linie weil Sie Eingabewerte übertragen und Ausgabewerte zurücksenden können. Zum Beispiel berechnet die Funktion namens fact
die Fakultät einer Zahl (n
) und gibt das Ergebnis (f
) zurück.
function f = fact(n) f = prod(1:n); end
Diese Art von Funktion muss in einer Datei definiert werden, nicht in der Befehlszeile. Oft wird eine Funktion in ihrer eigenen Datei gespeichert. In diesem Fall ist es am besten, den gleichen Namen für die Funktion und die Datei zu verwenden (in diesem Beispiel fact.m
), da MATLAB® das Programm mit dem Dateinamen assoziiert. Speichern Sie die Datei entweder im aktuellen Ordner oder in einem Ordner im MATLAB-Suchpfad.
Sie können die Funktion von der Befehlszeile aus aufrufen, indem Sie die gleichen Syntaxregeln verwenden, die für Funktionen gelten, die mit MATLAB eingerichtet wurden. Berechnen Sie z. B. die Fakultät von 5.
x = 5; y = fact(5)
y = 120
Außerdem können Funktionen gespeichert werden, indem man sie in eine Skriptdatei aufnimmt. Erstellen Sie zum Beispiel eine Datei namens mystats.m
mit ein paar Befehlen und zwei Funktionen, fact
und perm
. Das Skript berechnet die Permutation von (3,2).
x = 3; y = 2; z = perm(x,y) function p = perm(n,r) p = fact(n)/fact(n-r); end function f = fact(n) f = prod(1:n); end
Vor R2024a: Lokale Funktionen in Skripten müssen am Ende der Datei definiert werden, nach der letzten Zeile des Skriptcodes.
Rufen Sie das Skript über die Befehlszeile auf.
mystats
z = 6
Syntax für die Funktionsdefinition
Die erste Zeile jeder Funktion ist die Definitionsanweisung, die die folgenden Elemente enthält:
| Verwenden Sie Kleinbuchstaben für das Schlüsselwort. |
Ausgabeargumente (optional) | Falls Ihre Funktion nur eine Ausgabe liefert, können Sie den Namen der Ausgabe nach dem function myOutput = myFunction(x) Falls Ihre Funktion mehr als eine Ausgabe liefert, schließen Sie die Namen der Ausgaben in eckige Klammern ein. function [one,two,three] = myFunction(x) Wenn es keine Ausgabe gibt, brauchen Sie nichts tun. function myFunction(x) Sie können aber auch leere eckige Klammern setzen. function [] = myFunction(x) |
Funktionsname (erforderlich) | Für Funktionsnamen gelten dieselben Regeln wie für Variablennamen. Sie müssen mit einem Buchstaben beginnen und können Buchstaben, Ziffern und Unterstriche enthalten. Hinweis Um Verwechslungen zu vermeiden, verwenden Sie sowohl für die Funktionsdatei als auch für die erste Funktion innerhalb der Datei denselben Namen. MATLAB assoziiert Ihr Programm mit dem Dateinamen, nicht mit dem Funktionsnamen. Skriptdateien können nicht denselben Namen wie eine Funktion in der Datei haben. |
Eingabeargumente (optional) | Wenn Ihre Funktion Eingaben akzeptiert, schließen Sie deren Namen nach dem Funktionsnamen in Klammern ein. Trennen Sie Eingaben mit Kommas. function y = myFunction(one,two,three) Wenn es keine Eingaben gibt, können Sie die Klammern weglassen. |
Tipp
Wenn Sie eine Funktion mit mehreren Eingabe- oder Ausgabeargumenten definieren, führen Sie alle erforderlichen Argumente zuerst auf. Diese Reihenfolge ermöglicht es Ihnen, Ihre Funktion ohne Angabe optionaler Argumente aufzurufen.
Inhalt von Funktionen und Dateien
Der Funktionskörper kann gültige MATLAB-Ausdrücke, Kontrollflussanweisungen, Kommentare, Leerzeilen und verschachtelte Funktionen enthalten. Alle Variablen, die Sie innerhalb einer Funktion erstellen, werden in einem funktionsspezifischen Workspace gespeichert, der vom Basis-Workspace getrennt ist.
Programmdateien können mehrere Funktionen enthalten. Wenn die Datei nur Funktionsdefinitionen enthält, ist die erste Funktion die Hauptfunktion und die Funktion, die MATLAB mit dem Dateinamen assoziiert. Funktionen, die der Hauptfunktion folgen oder in Skriptcode enthalten sind, werden als lokale Funktionen bezeichnet. Lokale Funktionen sind nur innerhalb der Datei verfügbar.
Beenden von Anweisungen
Funktionen enden entweder mit einer end
-Anweisung, dem Ende der Datei oder der Definitionszeile bei einer lokalen Funktion, je nachdem, was zuerst kommt. Die end
-Anweisung ist erforderlich:
Wenn eine Funktion in der Datei eine verschachtelte Funktion (eine Funktion, die vollständig in ihrer übergeordneten Funktion enthalten ist) 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.
Verwenden Sie end
, auch wenn es manchmal optional ist, da dies für eine bessere Lesbarkeit des Codes sorgt.
Siehe auch
Themen
- Dateien und Ordner, auf die MATLAB zugreift
- Base and Function Workspaces
- Types of Functions
- Add Functions to Scripts