Hauptinhalt

evalin

Auswerten eines MATLAB-Ausdrucks im angegebenen Workspace

Beschreibung

evalin(workspace,expression) wertet den von expression dargestellten MATLAB®-Code mithilfe der Variablen im angegebenen Workspace aus.

Hinweis

Überlegungen zur Sicherheit: Beim Aufrufen von evalin mit einer nicht vertrauenswürdigen Benutzereingabe validieren Sie die Eingabe, um eine unerwartete Ausführung des Codes zu vermeiden. Beispiele für nicht vertrauenswürdige Benutzereingaben sind Daten von einem Benutzer, den Sie möglicherweise nicht kennen, oder aus einer Quelle, die Sie nicht kontrollieren können. Wenn Sie sich mit diesem Problem befassen müssen, sollten Sie diese Ansätze in Betracht ziehen:

  • Validieren Sie Eingaben in evalin. Suchen Sie zunächst nach zulässigen Operationen. Anschließend, wenn weitere Operationen ermittelt wurden, verbieten Sie die Ausführung.

  • Ersetzen Sie evalin durch eine Alternative. Weitere Informationen finden Sie unter Alternatives to the eval Function.

Überlegungen zur Leistung: In den meisten Fällen ist die Verwendung der Funktion evalin auch weniger effizient als die Verwendung anderer MATLAB-Funktionen und -Sprachkonstrukte, und der resultierende Code kann schwerer zu lesen und zu debuggen sein. Ziehen Sie eine Alternative zu evalin in Betracht.

Beispiel

[output1,...,outputN] = evalin(workspace,expression) gibt die Ausgaben von expression in den angegebenen Variablen zurück. Damit diese Syntax gültig ist, muss der Ausdruck output1,...,outputN = expression ebenfalls gültig sein.

Beispiel

Beispiele

alle reduzieren

Verwenden Sie die Funktion evalin, um den Wert einer Variable im MATLAB Basis-Workspace abzurufen und in einer neuen Variable zu speichern.

Definieren Sie var als 5x5-Matrix, die von der Funktion magic zurückgegeben wird.

var = magic(5);

Rufen Sie den Wert der Variable var im MATLAB Basis-Workspace ab und speichern Sie ihn in der Variable v.

v = evalin('base','var')
v =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

Eingabeargumente

alle reduzieren

Workspace, in dem der Ausdruck ausgewertet werden soll, angegeben als 'base' oder 'caller'.

Der MATLAB Basis-Workspace ist der Workspace, der über die MATLAB-Befehlszeile sichtbar ist (wenn nicht im Debugger-Modus). Der Caller-Workspace ist der Workspace der Funktion, die die aktuell laufende Funktion aufgerufen hat. Die Basis- und Caller-Workspaces sind im Kontext einer Funktion, die über die MATLAB-Befehlszeile aufgerufen wird, äquivalent.

Hinweis

Wenn Sie evalin('caller',expression) im MATLAB-Debugger vewenden, nachdem Sie Ihren lokalen Workspace-Kontext mit dbup oder dbdown geändert haben, wertet MATLAB den Ausdruck im Kontext der Funktion aus, die sich im Stack des aktuellen Workspace-Kontextes eine Ebene höher befindet.

Der auszuwertende Ausdruck, angegeben als Zeichenvektor oder Zeichenfolgenskalar. expression muss ein gültiger MATLAB-Ausdruck sein und darf keine MATLAB-Schlüsselwörter enthalten. Ob ein Wort ein MATLAB-Schlüsselwort ist, können Sie mithilfe der Funktion iskeyword bestimmen.

Beispiel: evalin('base','magic(5)')

Ausgabeargumente

alle reduzieren

Ausgaben des ausgewerteten Ausdrucks, zurückgegeben als beliebiger MATLAB-Datentyp.

Einschränkungen

  • evalin('caller',expression) findet nur Variablen im Workspace des Callers, keine Funktionen im Caller. Daher können Sie evalin nicht als Handle für eine im Caller definierte Funktion verwenden.

  • evalin sollte nicht rekursiv zur Auswertung eines Ausdrucks verwendet werden, da es ansonsten zu unerwartetem Verhalten kommen können.

  • Wenn Sie evalin in einer anonymen Funktion, einer verschachtelten Funktion oder in einer Funktion verwenden, die eine verschachtelte Funktion enthält, werden durch den ausgewerteten Ausdruck (expression) keine Variablen erstellt.

Tipps

  • Damit der MATLAB-Parser Ihren Code genauer überprüfen kann, um nicht abgefangene Fehler und andere unerwartete Verhaltensweisen zu vermeiden, schließen Sie in die Eingabe für die Funktion evalin keine Ausgabeargumente ein. Beispielsweise wird empfohlen, die Anweisung evalin('base',['output = ',expression]) nicht zu verwenden.

    Geben Sie stattdessen Ausgabeargumente für die Funktion evalin an, um die Ergebnisse des ausgewerteten Ausdrucks zu speichern. Beispiel:

      output = evalin('base',expression)

Versionsverlauf

Eingeführt vor R2006a