2012-04-10 25 views
1

現在、私はfunction1.mfunction2.mfunction3.m、...、function10.mという名前の関数をいくつか持っています。各機能は互いに独立しています。私は1つの実行ですべての機能を実行したいです複数の関数を実行する

現在、私のコードはこのようなものです、それは1つずつ機能を実行します。私はevalparforに動作しないことを知っているよう

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

私が知りたいのですがparforの代わりforにコードを書き換える方法が、あります。

答えて

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 
0

あなたはforまたはparforループを使用して、関数ハンドルのセル配列を作成するために、すべてのevalを使用する必要はありません。次に、functionsセル配列に格納されている各関数ハンドルを呼び出すだけです。

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 
関連する問題