Parfor and symmetric matrix
    조회 수: 7 (최근 30일)
  
       이전 댓글 표시
    
Hi,
I need to fill in a matrix. Since it is symmetrical, the two for loops look like this
for i = 1 : m
    for j = i : n
    operation on the matrix ....
    end
end
The other elements of the matrix are filled in by using "permute" (it is a 3D matrix). 
I am now modifying the code to make it parallelizable. I tried with the parfor like this
parfor i = 1 : m
    for j = i : n
    operation on the matrix ....
    end
end
At running time, I get the error because matlab does not know the value of "i". I guess this is because the two "for" are not independent. 
My question is:
- is there a way to fill in a symmetric matrix by exploiting the symmetry, and using the parfor? Or shall I ignore the symmetry, have the second "for" starting from 1, and getting rid of "permute" ?
댓글 수: 0
답변 (1개)
  Matt J
      
      
 2021년 8월 12일
        
      편집: Matt J
      
      
 2021년 8월 12일
  
      [I,J]=ndgrid(1:m,1:n);
keep=J>=I;
I=I(keep);
J=J(keep);
parfor k=1:numel(I)
    i=I(k);
    j=J(k);
    operation on the matrix ....
end
댓글 수: 4
참고 항목
카테고리
				Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

