Why is Matlab not abled to run this as a parfor loop?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
I want to run a loop like this as a parfor loop. In my eyes it shouldn't matter in which order the different iterations are called. 'a' is only used as reduction variable.
a = zeros(1,5);
parfor i= 1:1000
dts = randi(10)-1;
if dts == 0
a(1) = a(1) + 2;
elseif dts <= 5
a(dts) = a(dts) +1;
end
end
This is the error, which i get:
Error using Test (line 2) Error: The variable a in a parfor cannot be classified.
See Parallel for Loops in MATLAB, "Overview". Why wouldn't Matlab allow this program? How do i fix it?
2 comentarios
Sean de Wolski
el 19 de Abr. de 2013
That doesn't even work with a regular for-loop. That should always be the first step: making sure it works with a regular loop.
Respuesta aceptada
Friedrich
el 19 de Abr. de 2013
Editada: Friedrich
el 19 de Abr. de 2013
Hi,
MATLAB thinks a is a sliced variable and you get troubles with the indices here. I think in such a case its better to use a Reduction Variable like this:
X = zeros(1,5);
parfor i= 1:1000
a = zeros(1,5);
dts = randi(10)-1;
if dts == 0
a(1) = (a(1) + 2);
elseif dts <= 5
a(dts) = a(dts) +1;
end
X = X + a;
end
For more information about variable types see here:
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!