我在 Matlab 的 parfor 循环中使用结构数组时遇到问题。以下代码有2个我不明白的问题:
s=struct('a',{},'b',{});
if matlabpool('size')==0
matlabpool open local 2
end
for j = 1:2
parfor k=1:4
fprintf('[%d,%d]\n',k,j)
s(j,k).a = k;
s(j,k).b = j;
end
end
matlabpool close
- 它失败并出现错误
Error using parallel_function (line 589) Insufficient number of outputs from right hand side of equal sign to satisfy assignment.
- 在输出时,变量
s
是一个向量,而不是一个数组(它应该是,即使代码在完成之前中断)。
编辑如果我将结构数组初始化为正确的大小,问题就解决了,方法是:
s=struct('a',cell(2,4),'b',cell(2,4));
但是,我仍然很乐意获得有关该问题的见解(例如,它是否像 Oleg Komarov 所建议的那样集结了一个错误)