我使用parfor循环,我想保存计算结果,但不幸的是我没有成功。这是我的努力。有人可以帮我这个吗?
In_Fold_Error=[];
parfor k=1:length(gamma)
for Fold=1:size(Fold_indices,2)
% bLOCKS OF CODE
% Do the prediction on Kth f;old and compute the error
tmp=zeros(nfolds,Num_Tasks);
% coff
sum((A_Test*coff-Y_Test).^2) ./ size(A_Test,1)
tmp(1,1:end)=sum((A_Test*coff-Y_Test).^2) ./ size(A_Test,1);
tmp;
In_Fold_Error(:,Fold)=tmp;
end
end
我得到的错误是: In_Fold_Error
的有效索引在parfor循环中受到限制。
有没有保存所有迭代的tmp并在以后使用它?
答案 0 :(得分:2)
为了最大限度地减少数据传输开销,parfor
将变量切换为位,并将每个循环迭代仅传递给它真正需要的信息。如果您将In_Fold_Error
指定为空,parfor
认为这不是一个合理的可切片变量。
相反,如果您在代码的开头写In_Fold_Error = NaN(numRows, numFolds)
(这仍然是一个好习惯),每个折叠都会得到一列In_Fold_Error
来处理,并且可以适当地分配结果