1

目前我有几个函数,名为function1.m, function2.m, function3.m, ..., function10.m。每个功能都是相互独立的。我想在一次执行中运行所有功能

目前,我的代码是这样的,它一个一个地运行函数。

for i = 1 : 10
  result = eval(sprintf('function%d.m',i));
  fprintf('%d ', result);
end

我想知道有没有办法重写代码parfor而不是for,因为我知道这evalparfor.

4

2 回答 2

1

在正常循环中使用eval来填充函数句柄的单元数组?

functions = cell(10, 1);
for i=1:10
  functions{i} = eval(sprintf('@()function%d', i));
end
parfor i=1:10
  result = functions{i}();
  ...
end
于 2012-04-10T08:58:58.927 回答
0

您根本不需要使用or循环eval来创建函数句柄的元胞数组。然后您需要做的就是调用存储在元胞数组中的每个函数句柄。forparforfunctions

functions = cell(1, 10);

parfor i = 1:10
    functions{i} = str2func([ 'function', num2str(i) ]);
end

parfor i = 1:10
    result = functions{i}();
    fprintf('%d ', result);
end
于 2012-04-10T11:49:53.187 回答