以前只知道使用parfor
的时候,索引必须是从1开始自然数序列。今天遇到一个情况,死活查不出来怎么回事,因为是对一个cell
进行赋值:
XXXX = cell(1,map.Count)
parfor idx = 1:map.Count
XXXX(idx) = idx;
end
报错内容如下;
错误使用 test2 (line 2)
在 'XXXX' 的工作进程上引发了 UndefinedFunction 错误。这可能是因为在这些工
作进程上无法访问包含 'XXXX' 的文件。使用 addAttachedFiles(pool, files)
指定要附加的必要文件。请参阅 'parallel.Pool/addAttachedFiles'的相关文档以获取
更多详细信息。
一开始以为是我写parfor
的时候对cell
没处理好,后来才知道问题出在索引的数据类型
上,应该是double
型,但containers.Map
的Count
方法返回的值是uint64
,在parfor
中会出问题。
把代码改成下面就没问题了
XXXX = cell(1,map.Count)
parfor idx = 1:double(map.Count)
XXXX(idx) = idx;
end