具有现有工作空间函数的

时间:2016-04-18 05:55:45

标签: matlab anonymous-function

希望我能尽可能清楚地说明这一点,因为我自己很困惑。我汇总了一个简单的例子来促进讨论。

a = @(c) 1 + c;
fcn = str2func('@(x) x+a(x)');

这将返回错误,因为" str2func"调用a时,不会保留工作空间变量fcn。这在documentation中突出显示。是否有解决这个问题的方法?

注意:在字符串中硬编码a不是可接受的答案。

1 个答案:

答案 0 :(得分:2)

要允许在fcn中评估自定义函数句柄,可以将其作为输入参数传递:

a = @(c) 1 + c;
fcn = str2func('@(x,a) x+a(x)');

>> fcn(3,a)
ans =
     7

如果您希望fcn只有一个参数,则需要分两步进行定义:

a = @(c) 1 + c;
tmp = str2func('@(x,a) x+a(x)');
fcn = @(x)tmp(x,a);