Ich muss einen Code parallelisieren, um Zeit zu sparen. Ich habe eine Schleife intern zu einer anderen Schleife, und ich möchte die externe parallelisieren (weil ich denke, dass es so der Code schneller ist). Mein Code sieht wie folgt aus:Zwei-Schleifen-Fehler mit Parfor in der externen für
A = rand(1000,1);
B = rand(1000,1);
Biggers = zeros(1000,1000);
parfor i = 1:size(A,1)
for j= 1:1:size(B,1)
if B(i,1) > A(j,1)
Biggers(i,j) = A(j,1);
end
end
end
aber wenn ich es auf diese Weise laufen bekomme ich den Fehler:
Error: The variable Biggers in a parfor cannot be classified.
See Parallel for Loops in MATLAB, "Overview".
diese Bedingung tritt nicht auf, wenn ich stattdessen die interne Schleife dh parallelisieren, wenn Sie den Code entwerfen wie:
A = rand(1000,1);
B = rand(1000,1);
Biggers = zeros(1000,1000);
for i = 1:size(A,1)
parfor j= 1:1:size(B,1)
if B(i,1) > A(j,1)
Biggers(i,j) = A(j,1);
end
end
end
verstehe ich nicht, warum im ersten Fall Biggers
keine geschnittenen Variable betrachtet wird, da jeder Arbeiter auf einer Linie meiner Variable nur konzentrieren sollte.
Wie kann ich das Problem lösen?