考虑以下代码
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)')
但您还没有描述您想要实现的目标。请提供更多详细信息。