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


1

请考虑以下代码

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'。为什么?

Answers:


0

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

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

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

但是你还没有描述你想达到的目标。请提供更多详情。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.