(par)for k=1:N end; select for or parfor loop without code replication
    조회 수: 4 (최근 30일)
  
       이전 댓글 표시
    
I like to use for-loop or parfor-loop with function input flag. One way to do that is using if-else with code replication. I wonder is there a cleverer way?
% solution based on code replication
function foo(parflag)
if parflg==true
    parfor k=1:3
      % processing codes
    end
else 
    for k=1:3
        % copy of processing codes
    end
end
end
%% wondering how to make this idea work?
function hoo(parflag)
if parflag==true
    forString = str2func('parfor')
else
    forString = str2func('for')
end
forString k=1:3
    % processing codes
end
end
댓글 수: 0
채택된 답변
  Matt J
      
      
 2023년 8월 23일
        
      편집: Matt J
      
      
 2023년 8월 23일
  
      You can avoid replicating the loop code as follows. 
numWorkers={}; % or whatever
if ~parflag
    numWorkers={0};
end
parfor (k=1:3, numWorkers{:})
  % processing codes
end
Be mindful, though, that parfor loops have stronger requirements on the code structure, and you would be limiting yourself to that, even when running serially.
댓글 수: 13
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Parallel for-Loops (parfor)에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



