How to execute for-loop iterations in parallel

조회 수: 1 (최근 30일)
Vinit Nagda
Vinit Nagda . 2022년 2월 2일
댓글: Ive J . 2022년 2월 2일
I want to implement parfor to speed up the calculation but I am facing errors.
How can I implement parfor for the following for loop:
I have a 3D matrix X (DIM: mxnxp)
trues=find(X);
for i=1:size(trues,1)
[x,y,z]=ind2sub([m n p],trues(i,1))
if (condition true)
X(x,y,z)=0;
end
end
Is there any other way I can speed up and optimize execution?
Thank you.
  댓글 수: 2
Vinit Nagda
Vinit Nagda 2022년 2월 2일
m=300;n=300;p=50;
X=ones(m,n,p);
trues=find(X);
for i=1:size(trues,1)
[x,y,z]=ind2sub([m n p],trues(i,1));
if (x>y+z)
X(x,y,z)=0;
end
end
@Benjamin Thompson Here is the working example. Although the if condition is different in real problem, but algorithm remains same.

댓글을 달려면 로그인하십시오.

답변 (1개)

Ive J
Ive J 2022년 2월 2일
편집: Ive J 님. 2022년 2월 2일
You don't need even a loop (parfor aside) for this (and I guess you don't even need ind2sub depending on your true purpose here):
m=300; n=300; p=50;
X = ones(m, n, p);
trues = find(X > 0);
[x, y, z] = ind2sub([m n p], trues);
idx = x > y + z;
X(trues(idx)) = 0;
  댓글 수: 2
Ive J
Ive J 2022년 2월 2일
Maybe you can explain the probelm itself then :)

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Parallel for-Loops (parfor)에 대해 자세히 알아보기

태그

제품


릴리스

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by