(revised) What is the right way to apply parallel.pool.Constant on functional handle?
조회 수: 10 (최근 30일)
이전 댓글 표시
(original question) I use parfor-loop to process through rows of table/array. In each iteration, a function handle is called to do that. But this leads to a warning message that the function handle is 'a broadcast variabe' and might 'result in unnecessary communication overhead.' Is there a solution to avoid that?
(revised question) I tried parallel.pool.Constant(function_handle), and it generates an error message when calling the function: "Error using [my iteration function]. Unable to use a value of type string as an index." What is the right way to use parallel.pool.Constant(function_handle)?
function res = iteration(f, A)
% f is a function handle
C = cell(height(A),1);
parfor row = 1:height(A)
C{row} = f(A{row,:}); % f is a broadcast variable
end
res = vertcat(C{:});
end
댓글 수: 4
Walter Roberson
2023년 7월 27일
function res = iteration(f, T)
% f is a function handle
C = cell(height(T),1);
%%%%%% adding this line would generate an error message
fh = parallel.pool.Constant(f);
parfor row = 1:height(T)
C{row} = fh.Value(T{row,:});
end
res = vertcat(C{:});
end
Note: see also rowfun
채택된 답변
추가 답변 (0개)
참고 항목
카테고리
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!