如何将包含类定义的文件夹添加到matlab parpool对象

如何将包含类定义的文件夹添加到matlab parpool对象,matlab,parallel-processing,matlabpool,Matlab,Parallel Processing,Matlabpool,我想使用Matlab的parfor来加速代码的某些部分。执行所需的某些函数驻留在包含类定义的目录中。因此,我将必需的目录和必需的文件添加到池对象中,如下所示: % instantiate parallel pool object poolobj = gcp; % add file containing class definition poolobj.addAttachedFiles(fullfile(pwd,'@Gaussian','Gaussian.m')); % add specific

我想使用Matlab的
parfor
来加速代码的某些部分。执行所需的某些函数驻留在包含类定义的目录中。因此,我将必需的目录和必需的文件添加到池对象中,如下所示:

% instantiate parallel pool object
poolobj = gcp; 
% add file containing class definition
poolobj.addAttachedFiles(fullfile(pwd,'@Gaussian','Gaussian.m'));
% add specific methods required in parfor loop
poolobj.addAttachedFiles(fullfile(pwd,'@Gaussian','logpredictive.m'));
我通过检查
poolobj
AttachedFiles
字段中是否包含必需的文件来确认。但是,当我运行
parfor
时,Matlab会抛出一个错误:

An UndefinedFunction error was thrown on the workers for 'logpredictive'.
This might be because the file containing 'logpredictive' is not
accessible on the workers.  Use addAttachedFiles(pool, files) to specify
the required files to be attached.  See the documentation for
'parallel.Pool/addAttachedFiles' for more details.

编辑:

根据下面的答案,我尝试添加整个目录,但没有成功:

poolobj.addAttachedFiles(fullfile(pwd,'@Gaussian'));
该函数可以接受文件夹名和文件名,因此您只需执行以下操作:

poolobj.addAttachedFiles(fullfile(pwd, '@Gaussian'));
该函数可以接受文件夹名和文件名,因此您只需执行以下操作:

poolobj.addAttachedFiles(fullfile(pwd, '@Gaussian'));

嗯,很奇怪,我确实试过了,它对我有效。添加文件后,
pctrunall which
会说什么?运行此命令会显示包含类定义的正确文件。我不知道为什么它仍然不起作用。此外,在出现错误之前,它还会抛出一个警告:
warning:Gaussian类的元素与当前构造函数定义不匹配。元素已转换为结构。>在remoteParallelFunction(第37行)中的parallel.internal.pool.deserialize(第9行)
Hm,奇怪的是,我确实尝试过,它对我有效。添加文件后,
pctrunall which
会说什么?运行此命令会显示包含类定义的正确文件。我不知道为什么它仍然不起作用。此外,在出现错误之前,它还会抛出一个警告:
warning:Gaussian类的元素与当前构造函数定义不匹配。元素已转换为结构。>在remoteParallelFunction(第37行)中的parallel.internal.pool.deserialize(第9行)