Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在matlab中获取parfor中的错误,但不在for循环中_Matlab_Parallel Processing_Parfor - Fatal编程技术网

在matlab中获取parfor中的错误,但不在for循环中

在matlab中获取parfor中的错误,但不在for循环中,matlab,parallel-processing,parfor,Matlab,Parallel Processing,Parfor,我正在尝试matlab并行处理,在此期间,我试图将这一点应用到我的代码中。下面是代码 matlabpool open 2 pop = create_population(match_matrix,PopSize); ftns = zeros(PopSize,1); parfor i=1:PopSize ftns(i) = get_fitness(pop{i}); end matlabpool close 我得到的错误如下 Error using parallel_function (l

我正在尝试matlab并行处理,在此期间,我试图将这一点应用到我的代码中。下面是代码

matlabpool open 2
pop = create_population(match_matrix,PopSize);
ftns = zeros(PopSize,1);
parfor i=1:PopSize
    ftns(i) = get_fitness(pop{i});
end
matlabpool close
我得到的错误如下

Error using parallel_function (line 589)

In an assignment  A(I) = B, the number of elements in B and I must be the same.

Error stack:
SWIFTga>(parfor body) at 127

Error in SWIFTga (line 126)
    parfor i=1:PopSize

如果我将parfor替换为,则不会出现错误。请告诉我可能出了什么问题……

我试了很多次,终于找到了问题所在。实际上,我在访问名为inside parfor body的函数中的全局变量。从matlab文档中发现,我们无法访问parfor中的全局变量,因为存在同步问题。我必须将代码从全局变量更改为参数传递。感谢大家花时间回答我的问题。

该错误表明get_fitness的输出不是标量值。如果看不到get_fitness和create_population中的代码,很难判断问题出在哪里。get_fitness提供标量值,我在parfor之前手动检查了设置断点。当我在for循环中实现它时,即使它也不会给出任何错误。在for循环之后,所有元素都会填充标量值;disp(测试);为了证明您得到了预期的结果,我打印了输入参数,然后打印了输出测试。输入正常,但输出为空[]。这就是它显示错误的原因。但是,当我使用相同的输入参数调用函数get_fitness(arg)时,它不会显示任何错误,并返回我期望的值。并行处理是否受函数调用的影响?