Question about parfor nested loop
    4 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    haonan He
 el 1 de En. de 2021
  
    
    
    
    
    Comentada: haonan He
 el 3 de En. de 2021
            Hi,
I have a question about the nested parfor loop. Please see the following codes:
clc
clear
parfor i=1:3    
    for j=1:3
        if j<2
            B(i,j)=j;
        end
    end
end
The result of this code should be B=[1;1;1], but the Matlab gives B=[1,1,1;1,1,1;1,1,1]. I have been confused by this problem for a long time and thank you in advance if you have some time to look into the problem.
Haonan
7 comentarios
Respuesta aceptada
  Matt J
      
      
 el 2 de En. de 2021
        
      Editada: Matt J
      
      
 el 2 de En. de 2021
  
      So maybe it is the bug of the old versions.
Yes, it appears to be version-related. I get the same thing in R2018a. Regardless, it is not good practice to use parfor to loop over sliced variables whose slices, in this case the B(i,:), are not allocated in advance. This cleaner version, for example, does not have the issue:
clc
clear
B=nan(3); %pre-allocate
parfor i=1:3    
    for j=1:3
        if j<2
            B(i,j)=j;
        end
    end
end
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!





