Main Content

evalin

Evaluate MATLAB expression in specified workspace

Description

example

evalin(workspace,expression) evaluates the MATLAB® code represented by expression using the variables in the specified workspace.

Note

Security Considerations: When calling evalin with untrusted user input, validate the input to avoid unexpected code execution. Examples of untrusted user input are data coming from a user you might not know or from a source you have no control over. If you need to address this concern, consider these approaches:

  • Validate inputs to evalin. First, search for allowed operations. Then, if you find other operations, disallow execution.

  • Replace evalin with an alternative. For more information, see Alternatives to the eval Function.

Performance Considerations: In most cases, using the evalin function is also less efficient than using other MATLAB functions and language constructs, and the resulting code can be more difficult to read and debug. Consider using an alternative to evalin.

example

[output1,...,outputN] = evalin(workspace,expression) returns the outputs from expression in the specified variables. In order for this syntax to be valid the expression, output1,...,outputN = expression, must also be valid.

Examples

collapse all

Use the evalin function to get the value of a variable in the MATLAB base workspace and store it in a new variable.

Define var as the 5-by-5 matrix returned by the magic function.

var = magic(5);

Get the value of the variable var in the MATLAB base workspace and store it in the 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

Input Arguments

collapse all

Workspace in which to evaluate expression, specified as 'base' or 'caller'.

The MATLAB base workspace is the workspace that is seen from the MATLAB command line (when not in the debugger). The caller workspace is the workspace of the function that called the currently running function. The base and caller workspaces are equivalent in the context of a function that is invoked from the MATLAB command line.

Note

If you use evalin('caller',expression) in the MATLAB debugger after having changed your local workspace context with dbup or dbdown, MATLAB evaluates the expression in the context of the function that is one level up in the stack from your current workspace context.

Expression to evaluate, specified as a character vector or string scalar. expression must be a valid MATLAB expression and must not include any MATLAB keywords. To determine whether a word is a MATLAB keyword, use the iskeyword function.

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

Output Arguments

collapse all

Outputs from evaluated expression, returned as any MATLAB data type.

Limitations

  • evalin('caller',expression) finds only variables in the caller's workspace; it does not find functions in the caller. For this reason, you cannot use evalin to construct a handle to a function that is defined in the caller.

  • evalin cannot be used recursively to evaluate an expression. For example, statement evalin('caller','evalin(''caller'',''x'')') is invalid.

  • If you use evalin within an anonymous function, nested function, or function that contains a nested function, the evaluated expression does not create any variables.

Tips

  • To allow the MATLAB parser to perform stricter checks on your code and avoid untrapped errors and other unexpected behaviors, do not include output arguments in the input to the evalin function. For example, the statement evalin('base',['output = ',expression]) is not recommended.

    Instead, specify output arguments to the evalin function to store the results of the evaluated expression. For example:

      output = evalin('base',expression)

Version History

Introduced before R2006a