2014-09-21 77 views
2

分類我有一個parfor loop這樣的:變量`X`在PARFOR不能在MATLAB

parfor i=1:20 

for j=1:5 
%% Some codes 

[~,~,~,AUC]=perfcurve(testTargets,testOutputs,'1'); 

AUC_T(i)=AUC; 

end 

%% averaging between AUC_Ts in outputs of j=1:5 

end 

我有這段代碼運行後,此錯誤:

The variable AUC_T in a parfor cannot be classified. 
See Parallel for Loops in MATLAB, "Overview". 

我想存儲AUC值並使用它parfor loop。什麼是問題,我該如何解決它?

感謝

+0

您之前使用過parfor嗎?如果沒有,你可能想閱讀文檔或摘要:http://blogs.mathworks.com/loren/2009/10/02/using-parfor-loops-getting-up-and-running/#12 – 2014-09-21 21:52:14

回答

0

我找到了解決辦法:

parfor i=1:20 

for j=1:5 
%% Some codes 

[~,~,~,AUC]=perfcurve(testTargets,testOutputs,'1'); 

AUC_T(i,j)=AUC; 

end 

end 

%% averaging between AUC_T values 

我們應該在parfor循環之後設置平均值。

謝謝Michael Graczyk爲你的通訊和答案。

0

很難肯定的說沒有能夠看到更多的代碼,但你也許可以通過使用電池陣列存儲結果解決您的問題:

parfor i=1:20 
    ... 
    AUC_T{i}=AUC; 
end 

或者更簡單地說,可以明確的結果形狀:

AUC_T(i, :) = AUC; 
+0

它沒有解決問題。我正在'parfor'循環中訓練一個神經網絡。我可以用'Net {m} = trained_net'存儲'訓練過的網絡',但是我只有'AUC'纔有這個問題! – user2991243 2014-09-21 22:00:25

+0

+我在主要問題中增加了更多信息。謝謝。 – user2991243 2014-09-21 22:06:11