1

function1.m現在、 、function2.mfunction3.m、 ...という名前の関数がいくつかありますfunction10.m。各機能は互いに独立しています。すべての機能を 1 回の実行で実行したい

現在、私のコードはこのようなもので、関数を1つずつ実行しています。

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

では機能しないことがわかっているので、parforの代わりに でコードを書き直す方法があることを知りたいです。forevalparfor

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 に答える