Borrar filtros
Borrar filtros

Why is Matlab not abled to run this as a parfor loop?

1 visualización (últimos 30 días)
Matthias
Matthias el 19 de Abr. de 2013
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?
Edit: Since the Codeblock-function doesn't seem to work: http://pastebin.com/FUHFe61T
  2 comentarios
Sean de Wolski
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.
Matthias
Matthias el 19 de Abr. de 2013
I had a little typo. It is supposed to be randi(10) not rand(10).

Iniciar sesión para comentar.

Respuesta aceptada

Friedrich
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:

Más respuestas (0)

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!

Translated by