2016-05-18 4 views
0

klassifiziert werden Ich habe folgendes für Schleifeinnerhalb eine parfor Schleife:Fehler parfor in Matlab // Die Variable in einem parfor verwendet, kann nicht

for j1=1:NN 
    for j2=1:NN 
      HF(j1,j2)=hf(mod((j1-j2),NN)+1); 
    end 
end 

ich die Fehlermeldung, die besagt:

Die Variable HF in einem Parfor kann nicht klassifiziert werden.

Ich verwende oder definiere HF nicht außerhalb der Parfor-Schleife oder anderswo. Jede Iteration erstellt ihre eigene Version von HF.

Wie kann ich dieses Problem beheben?

+0

@Suever Ich lese diese Antwort .. Sie erstellen mehrere Kopien einer Matrix, die existiert. In meinem Fall wird HF in jeder Parfor-Schleife mit unterschiedlicher Länge/Größe erstellt. – HappyBee

+0

Sie müssen mehr Code zeigen, um bessere Hilfe zu bekommen. Initiieren Sie 'HF' tatsächlich außerhalb der oben gezeigten Schleife? – Suever

Antwort

1

Weil Sie nicht HF außerhalb der Schleife initialisiert wird, wenn Ihr Code Parsen, denkt MATLAB, dass Sie Variable HF aus dem parfor ein geteilt werden zu ändern. Dies ist problematisch, da mehrere Worker die gleichen Daten nicht ändern können. Dies führt zu dem Fehler, den Sie sehen.

Um dies zu beheben, müssen Sie explizit HF außerhalb Ihrer Schleife vorbelegt MATLAB helfen herauszufinden, dass jede Iteration durch die parfor Schleife auf einem verschiedenenHF arbeitet.

HF = zeros(NN, NN); 

for j1=1:NN 
    for j2=1:NN 
     HF(j1,j2)=hf(mod((j1-j2),NN)+1); 
    end 
end 
Verwandte Themen