使用parallel_function时出错(matlabpool& parfor)

时间:2013-06-05 13:10:24

标签: matlab parallel-processing parfor

我想阅读大量文件,处理每个文件,并将每个文件的结果保存在.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 ';']);

你知道问题出在哪里吗?

1 个答案:

答案 0 :(得分:1)

我不知道为什么(可能存在与此issue的连接),但问题是通过将代码包含在函数内并调用该函数(而不是通过{{调用脚本文件)来解决的。 1}})。它还需要创建run script.m函数(请参阅解释here)。