Main Content

evalin

Evaluar una expresión de MATLAB en un área de trabajo especificada

Descripción

evalin(workspace,expression) evalúa el código de MATLAB® representado por expression mediante las variables del área de trabajo especificada.

Nota

Consideraciones de seguridad: Al llamar a evalin con una entrada del usuario que no es fiable, valide la entrada para evitar que se ejecute código de forma inesperada. Algunos ejemplos de entradas del usuario que no son fiables son los datos de un usuario que desconoce o de una fuente sobre la que no ejerce control alguno. Si necesita abordar este problema, considere estos enfoques:

  • Valide las entradas de evalin. Primero, busque las operaciones permitidas. Después, si encuentra otras operaciones, deshabilite la ejecución.

  • Reemplace evalin por una alternativa. Para obtener más información, consulte Alternativas a la función eval.

Consideraciones de rendimiento: En la mayoría de los casos, utilizar la función evalin también es menos eficiente que utilizar otras funciones y estructuras del lenguaje de MATLAB, y el código resultante puede ser más difícil de leer y depurar. Considere utilizar una alternativa a evalin.

ejemplo

[output1,...,outputN] = evalin(workspace,expression) devuelve las salidas de expression en las variables especificadas. Para que esta sintaxis sea válida, la expresión output1,...,outputN = expression también debe ser válida.

ejemplo

Ejemplos

contraer todo

Utilice la función evalin para obtener el valor de una variable en el área de trabajo básica de MATLAB y almacenarlo en una nueva variable.

Defina var como la matriz de 5 por 5 devuelta por la función magic.

var = magic(5);

Obtenga el valor de la variable var en el área de trabajo básica de MATLAB y almacénelo en la 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

Argumentos de entrada

contraer todo

Área de trabajo en la que se desea evaluar la expresión, especificada como 'base' o 'caller'.

El área de trabajo básica de MATLAB es el área de trabajo que se ve desde la línea de comandos de MATLAB (cuando no se está en el depurador). El área de trabajo desde la que se hace la llamada (caller) es el área de trabajo de la función que llamó a la que se está ejecutando en ese momento. Las áreas de trabajo básica y de llamada (caller) son equivalentes en el contexto de una función que se invoca desde la línea de comandos de MATLAB.

Nota

Si utiliza evalin('caller',expression) en el depurador de MATLAB después de haber cambiado el contexto de su área de trabajo local con dbup o dbdown, MATLAB evalúa la expresión en el contexto de la función que está un nivel por encima en la pila del contexto de su área de trabajo actual.

Expresión que se desea evaluar, especificada como vector de caracteres o escalar de cadena. expression debe ser una expresión de MATLAB válida y no debe incluir ninguna palabra clave de MATLAB. Para determinar si una palabra es una palabra clave de MATLAB, utilice la función iskeyword.

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

Argumentos de salida

contraer todo

Salidas de la expresión evaluada, devueltas como cualquier tipo de datos de MATLAB.

Limitaciones

  • evalin('caller',expression) solo encuentra variables en el área de trabajo desde la que se hace la llamada y no encuentra funciones en la misma. Por este motivo, no se puede utilizar evalin para crear el identificador de una función que está definida en la llamada.

  • evalin no debería utilizarse de forma recursiva para evaluar una expresión, y hacerlo puede provocar un comportamiento inesperado.

  • Si utiliza evalin en una función anónima, una función anidada o una función que contiene una función anidada, la expression evaluada no crea ninguna variable.

Sugerencias

  • Para permitir al analizador de MATLAB realizar comprobaciones del código más estrictas y evitar errores sin detectar y otros comportamientos inesperados, no incluya argumentos de salida en la entrada de la función evalin. Por ejemplo, no se recomienda la instrucción evalin('base',['output = ',expression]).

    En su lugar, especifique argumentos de salida de la función evalin para guardar los resultados de la expresión evaluada. Por ejemplo:

      output = evalin('base',expression)

Historial de versiones

Introducido antes de R2006a