Matlab parfor传记人物对象的错误:来自非结构数组对象的结构内容引用

时间:2019-01-09 11:12:08

标签: matlab parallel-processing parfor

我正在努力使用简单的Matlab parfor。我正在使用表示感兴趣的图的biograph对象。由于我必须计算很多最短路径并且节点数很大,因此我认为使用parfor加快计算速度会很好。

代码就是这样简单。为了举例说明,假设我们要计算从节点1、2和3到节点2的最短路径。

cm = [0 1 1 0 0;1 0 0 1 1;1 0 0 0 0;0 0 0 0 1;1 0 1 0 0];
ids = {'M30931','L07625','K03454','M27323','M15390'};
bg = biograph(cm,ids);
workers = 3;
parpool('local', workers)
parfor i=1:3
 [dist, pth, ~] = bg.shortestpath(i, 2);      
end

出现以下错误:

  

从非结构化数组对象引用结构内容。

我已经尝试调用“ bg.shortestpath(i,2);”作为功​​能,但没有用。可能与传记对象被Matlab视为指针这一事实有关,这意味着如果执行,

bg2 = bg

,然后修改bg2的任何参数,更改也将反映在bg中。

我知道我可以在循环外部计算“ bg.allshortestpaths”,然后从循环内部从那里提取最短路径距离,但是路径本身将不可用。

我已经阅读了有关此错误的一些相关问题,但我不完全知道这些问题与我的传记对象数据结构之间的关系。很抱歉,如果这是一个重复的问题,但是我对并行计算工具箱并不热衷,我对如何处理此错误感到不知所措。也许有人可以指出我正确的方向。

我正在使用MatlabR2017b。 预先感谢您抽出宝贵的时间给我一些建议。

此致

Gabriel

0 个答案:

没有答案