1

大量のファイルを読み取り、それぞれを処理し、それぞれの結果をファイルに保存したいと考えてい.matます。各ファイルの処理は他とは独立しているので、使ってみてはいかがでしょうかparfor。次の Matlab スクリプト ファイルを作成しました。

load filelist
obj = package.name.SomeObject();
matlabpool local 5
parfor i=1:length(filelist)
    result = obj.compute(filelist{i});
    [~, name, ~] = fileparts(filelist{i});
    save(['~/path/' name], 'result');
end % file loop
matlabpool close

コンピューターで実行しようとすると、Matlab プールが初期化されますが ( connected to 5 workers)、次のエラー メッセージが表示されます。

Error using parallel_function (line 589)
Undefined function or variable "cleaner".

Error in readfiles (line 14)
parfor i=1:length(filelist)

Error in run (line 64)
evalin('caller', [script ';']);

どこに問題があるか知っていますか?

4

1 に答える 1

1

理由はわかりませんが (この問題に関連している可能性があります)、コードを関数内に囲み、その関数を呼び出すことで問題が解決しました (スクリプト ファイルを で呼び出すのではなくrun script.m)。また、parsave関数を作成する必要がありました (こちらの説明を参照してください)。

于 2013-06-06T08:29:28.060 に答える