2013-06-05 66 views
1

我想讀取大量文件,處理它們中的每個文件並將其中的每個文件的結果保存在.mat文件中。每個文件的處理都是獨立於其他文件的,所以我想嘗試使用parfor。我寫了下面Matlab的腳本文件:使用parallel_function(matlabpool&parfor)時出錯

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池intialized(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 ';']); 

你知道問題出在哪裏嗎?

回答

1

我不知道爲什麼(可能與此issue有連接),但是通過將代碼放在函數中並調用該函數(而不是通過調用run script.m的腳本文件)解決了問題。它還需要創建parsave函數(請參閱解釋here)。