What is f ? And how big is it?
How to fix index in a parfoor loop?
    9 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Andreu Angles Castillo
 el 13 de Sept. de 2018
  
    
    
    
    
    Comentada: Andreu Angles Castillo
 el 18 de Sept. de 2018
            I have the following code and get indexing error
parfor dt=0:round(tmax/step)
  fprintf(1,'\b\b\b\b\b%05.2f',dt);
  for dm=0:dt
     A(dm+1,dt+1) = f(dm,dt);
  end
end
It does not make sense, for me, because each loop of the first for is stand alone in the variable dt. The size of A has been prefixed.
The error messages on the script are:
-The PARFOOR loop cannot run due to the way varaiable 'A' is used. (On line 1)
-Valid indices for 'A' are resticted in PARFOR loops. (On line 4)
Error when run:
Error: The variable A in a parfor cannot be classified. See Parallel for Loops in MATLAB, "Overview".
4 comentarios
  Stephen23
      
      
 el 13 de Sept. de 2018
				@Andreu Angles Castillo: please give the complete error message. This means all of the red text.
  Andreu Angles Castillo
 el 14 de Sept. de 2018
				
      Editada: Andreu Angles Castillo
 el 14 de Sept. de 2018
  
			Respuesta aceptada
  Titus Edelhofer
    
 el 14 de Sept. de 2018
        Hi Andreu,
agreed, it looks as if this case could be handled. But it is fairly easy to work around this by separating the inner loop from the parfor loop:
n = round(tmax/step) + 1;
parfor dt=0:round(tmax/step)
  fprintf(1,'\b\b\b\b\b%05.2f',dt);
  col = zeros(n, 1);
  for dm=0:dt
      col(dm+1) = f(dm, dt);
  end
  A(:, dt+1) = col;
end
Titus
Más respuestas (0)
Ver también
Categorías
				Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


