2015-12-14 55 views
-1

我正在使用parfor循環,我想保存計算結果,但不幸的是我沒有成功。這是我的努力。有人可以幫助我嗎?如何在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

請考慮閱讀有關[切片變量](http://fr.mathworks.com/help/distcomp/sliced-variables.html?refresh=true)的文檔 – Ikaros

回答

2

爲了最大限度地減少數據傳輸開銷,parfor將切片變量循環爲位,並且每次循環迭代只處理它真正需要的信息。如果您將In_Fold_Error指定爲空,則parfor不認爲這是合理的切片變量。

如果您在代碼的開頭編寫In_Fold_Error = NaN(numRows, numFolds)(無論如何,這是一個很好的做法),每次摺疊都會得到一列In_Fold_Error,並且可以適當地分配結果。

+0

我試過了,但不起作用 – user51661

相關問題