Contenuto principale

evalin

Valutare un'espressione di MATLAB nel workspace specificato

Descrizione

evalin(workspace,expression) valuta il codice MATLAB® rappresentato da expression utilizzando le variabili presenti nel workspace specificato.

Nota

Considerazioni sulla sicurezza: Quando si chiama evalin con un input utente non attendibile, validare l'input onde evitare l'esecuzione di codice inatteso. Esempi di input utente non attendibili sono i dati provenienti da un utente che non si conosce o da una fonte su cui non si ha alcun controllo. Se risultasse necessario affrontare questa problematica, prendere in considerazione questi approcci:

  • Validare gli input su evalin. Per prima cosa, cercare le operazioni consentite. Quindi, se si rilevano altre operazioni, disabilitarne l'esecuzione.

  • Sostituire evalin con un'alternativa. Per maggiori informazioni, vedere Alternatives to the eval Function.

Considerazioni sulle prestazioni: Nella maggior parte dei casi, l'utilizzo della funzione evalin è meno efficiente rispetto all'utilizzo di altre funzioni di MATLAB e costrutti di linguaggio. Inoltre il codice risultante può essere più difficile da leggere e da sottoporre a debug. Considerare di utilizzare un'alternativa su evalin.

esempio

[output1,...,outputN] = evalin(workspace,expression) restituisce gli output di expression nelle variabili specificate. Affinché questa sintassi sia valida, anche l'espressione output1,...,outputN = expression deve essere valida.

esempio

Esempi

comprimi tutto

Utilizzare la funzione evalin per ottenere il valore di una variabile nel workspace di base di MATLAB e memorizzarlo in una nuova variabile.

Definire var come la matrice 5x5 restituita dalla funzione magic.

var = magic(5);

Ottenere il valore della variabile var nel workspace di base di MATLAB e memorizzarlo nella variabile 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

Argomenti di input

comprimi tutto

Workspace in cui valutare l'espressione, specificato come 'base' o 'caller'.

Il workspace di base di MATLAB è il workspace visualizzato dalla riga di comando di MATLAB (quando non si è in modalità debugger). Il workspace del chiamante è il workspace della funzione che ha chiamato la funzione attualmente in esecuzione. Il workspace di base e quello chiamante sono equivalenti nel contesto di una funzione evocata dalla riga di comando di MATLAB.

Nota

Se si utilizza evalin('caller',expression) nel debugger di MATLAB dopo aver modificato il contesto del workspace locale con dbup o dbdown, MATLAB valuta l'espressione nel contesto della funzione che si trova un livello superiore nello stack rispetto al contesto del workspace attuale.

Espressione da valutare, specificata come vettore di caratteri o scalare di stringa. expression deve essere un'espressione valida di MATLAB e non deve include alcuna parola chiave di MATLAB. Per verificare se una parola è una parola chiave di MATLAB, utilizzare la funzione iskeyword.

Esempio evalin('base','magic(5)')

Argomenti di output

comprimi tutto

Output dall'espressione valutata, restituiti come qualsiasi tipo di dati di MATLAB.

Limiti

  • evalin('caller',expression) trova solo le variabili nel workspace del chiamante; non trova le funzioni nel chiamante. Per questo motivo, non è possibile utilizzare evalin per costruire un handle della funzione definita nel chiamante.

  • evalin non dovrebbe essere utilizzato in modo ricorsivo per valutare un'espressione, poiché tale operazione potrebbe causare un comportamento imprevisto.

  • Se si utilizza evalin all'interno di una funzione anonima, di una funzione annidata o di una funzione che contiene una funzione annidata, l'expression valutata non crea alcuna variabile.

Suggerimenti

  • Per consentire al decodificatore di MATLAB di eseguire controlli più rigorosi sul codice ed evitare errori non catturati e altri comportamenti inaspettati, non includere argomenti di output nell'input della funzione evalin. Ad esempio, la dichiarazione evalin('base',['output = ',expression]) non è consigliata.

    Specificare, invece, gli argomenti di output sulla funzione evalin per memorizzare i risultati dell'espressione valutata. Ad esempio:

      output = evalin('base',expression)

Cronologia versioni

Introduzione prima di R2006a