【发布时间】:2015-08-05 13:54:21
【问题描述】:
在previous question 中,一位用户询问有关迭代匿名函数元胞数组的问题。我想知道是否有一种方法可以在不显式使用 for 循环的情况下评估一组函数。
例如,以下代码创建了一个(简单)函数数组,对它们进行评估以获得固定值并存储结果:
fcnList = {@(x) (x+1), @(x) (x+2)};
a = 2;
for i = 1:numel(fcnList)
y(i) = fcnList{i}(a);
end
有没有办法在不循环的情况下做到这一点?
【问题讨论】:
-
您是对的,可能很少有使用案例可以显着加快执行速度。不过,它是在一个项目中出现的,我认为问一下也无妨。
-
为了避免
for循环或cellfun(或多或少与循环相同),您可以使用 vector 定义 single 函数 或 元胞数组 输出:fcn = @(x) [x+1, x+2];或fcn = @(x) {x+1, x+2};。然后fcn(a)为您提供包含结果的向量或元胞数组。 -
@LuisMendo 这真的很有用。请将此添加为答案。
-
@RyanJ.Smith 感谢您的评论。完成
标签: matlab vectorization cell-array