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

In most cases, using the evalin function is less efficient than using other MATLAB functions and language constructs, and the resulting code can be more difficult to read and debug. For more information, see Alternatives to the eval Function.

example

[output1,...,outputN] = evalin(workspace,expression) returns the outputs from expression in the specified variables.

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('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)

Introduced before R2006a