Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

evalin

在指定的工作区中计算 MATLAB 表达式

说明

示例

evalin(workspace,expression) 使用指定工作区中的变量计算 expression 表示的 MATLAB® 代码。

注意

安全注意事项:当使用不可信用户输入调用 evalin 时,请验证输入以避免意外的代码执行。例如,来自您可能不认识的用户的输入或您无法控制的来源的数据就属于不可信用户输入。如果您需要解决此问题,请考虑以下方法:

  • 验证 evalin 的输入。首先,搜索允许的操作。然后,如果发现其他操作,禁止执行。

  • 用替代项替换 evalin。有关详细信息,请参阅eval 函数的替代方法

性能方面的考虑:在大多数情况下,使用 evalin 函数的效率还低于使用其他 MATLAB 函数和语言构造的效率,生成的代码可能更难阅读和调试。考虑使用 evalin 的替代项。

示例

[output1,...,outputN] = evalin(workspace,expression) 在指定的变量中返回 expression 的输出。要使此语法有效,表达式 output1,...,outputN = expression 也必须有效。

示例

全部折叠

使用 evalin 函数获取 MATLAB 基础工作区中的变量的值,并将其存储在新变量中。

var 定义为 magic 函数返回的 5×5 矩阵。

var = magic(5);

在 MATLAB 基础工作区中获取变量 var 的值,并将其存储在变量 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

输入参数

全部折叠

在其中计算表达式的工作区,指定为 'base''caller'

MATLAB 基础工作区是从 MATLAB 命令行看到的工作区(不在调试器中时)。调用方工作区是调用当前运行函数的函数工作区。基础工作区和调用方工作区在从 MATLAB 命令行调用的函数上下文中是等效的。

注意

在用 dbupdbdown 更改本地工作区上下文后,如果在 MATLAB 调试器中使用 evalin('caller',expression),则 MATLAB 在从当前工作区上下文堆栈中高一级的函数上下文中计算表达式。

要计算的表达式,指定为字符向量或字符串标量。expression 必须为有效的 MATLAB 表达式,并且不能包含任何 MATLAB 关键字。要确定某词语是否为 MATLAB 关键字,请使用 iskeyword 函数。

示例: evalin('base','magic(5)')

输出参数

全部折叠

计算的表达式的输出,以任何 MATLAB 数据类型形式返回。

局限性

  • evalin('caller',expression) 只计算调用方工作区中的变量,它不计算调用方中的函数。因此,不能使用 evalin 构造调用方中定义的函数句柄。

  • evalin 不可递归用于计算表达式。例如,语句 evalin('caller','evalin(''caller'',''x'')') 无效。

  • 如果在匿名函数、嵌套函数或包含嵌套函数的函数中使用 evalin,则计算的 expression 不会创建任何变量。

提示

  • 为了让 MATLAB 解析器对您的代码执行更严格的检查并避免未捕捉到的错误和其他意外行为,请不要在 evalin 函数的输入中包含输出参数。例如,不推荐使用语句 evalin('base',['output = ',expression])

    在这种情况下,请为 evalin 函数指定输出参数,以存储计算的表达式的结果。例如:

      output = evalin('base',expression)

版本历史记录

在 R2006a 之前推出