MATLAB 中有关 eval() 的奇怪行为

MATLAB 中有关 eval() 的奇怪行为

考虑以下代码

x = zeros(3,3);
eval(str3)
g = @(x) eval(str3)
g(x)
g(zeros(3,3))

MATLAB 将按eval(str3)预期进行评估,但抱怨其他两个声称他们是Undefined function for input arguments of type 'double'。为什么?

答案1

我可以理解为什么 Matlab 会抛出错误。str3在您的示例中未定义,但根据您的描述,我可以确定它str3已在您的工作区中定义并包含一个字符串。在第 3 行,您创建了一个独立于的函数,x该函数评估str3您执行第 3 行之前的内容,每次调用时g都会计算。我认为您的第 3 行没有反映您的意图。

我认为你尝试做的事情是这样的:

    g = @(x) eval(x);
    g('x = zeros(3,3)')

但您还没有描述您想要实现的目标。请提供更多详细信息。

相关内容