How to execute for-loop iterations in parallel
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Benjamin Thompson
il 2 Feb 2022
Can you post a working example of sequential MATLAB code that implements your algorithm? You can always set all of X to zeros before the for loop to simplify part of your algorithm. parfor usually cannot write to different locations in a matrix in parallel. You may be able to write the result to an output vector in parfor, then redim the output vector to mxnxp.
Risposte (1)
Ive J
il 2 Feb 2022
Modificato: Ive J
il 2 Feb 2022
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 Commenti
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!