【发布时间】:2013-01-23 14:26:19
【问题描述】:
考虑以下示例:
dat1 = 1;
dat2 = 2;
Variables = {'dat1','dat2'};
a = cellfun(@(x)exist(x,'var'),Variables);
for i = 1:length(Variables);
a2(i) = exist(Variables{i},'var');
end
为什么“a”和“a2”返回不同的值,即为什么使用 cellfun 没有说明变量存在于工作区中?我错过了什么?
【问题讨论】:
-
哇,真的很奇怪。我已经检查了函数表达式(使用
@):1. 可以访问环境中的变量-并且- 2. 保留正确的参数类型。两者都是真的,这真的很奇怪。在我看来,您刚刚在cellfun或exist中发现了错误!恭喜:) -
@Kate:你缺少的是每个匿名函数都有自己的工作区(也花了我一段时间)。请参阅下面的答案。