如何在matlab中存储parfor循环中的计算?

时间:2015-12-14 15:25:29

标签: matlab

我使用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并在以后使用它?

1 个答案:

答案 0 :(得分:2)

为了最大限度地减少数据传输开销,parfor将变量切换为位,并将每个循环迭代仅传递给它真正需要的信息。如果您将In_Fold_Error指定为空,parfor认为这不是一个合理的可切片变量。

相反,如果您在代码的开头写In_Fold_Error = NaN(numRows, numFolds)(这仍然是一个好习惯),每个折叠都会得到一列In_Fold_Error来处理,并且可以适当地分配结果