How increase calculate speed in for loop
Afficher commentaires plus anciens
Hi all.
I have a problem in my code about too long calculate time.
This is my part of code
=============================================
Depth=5000;
Num_Alines=400;
Num_Bscan=300;
Alines=180
half=Alines/2;
ReconImage=zeros(Depth,Num_Alines,Num_Bscan);
for i=1:Depth
Sampledist2=Sampledist;
Sampledist2(Sampledist2==Sampledist2(i,round(half),round(half)))=1;
Sampledist2(Sampledist2~=1)=0;
Sampledist2=Sampledist2*D313; %D313 is one data not array.
for j=round(half):Num_Alines-round(half)
for k=round(half):Num_Bscan-round(half)
ReconImage(:,1+j-round(half):j+round(half),1+k-round(half):k+round(half))=ReconImage(:,1+j-round(half):j+round(half),1+k-round(half):k+round(half))+fftimage(i,j,k).*Sampledist2/1000;
end
end
end
=============================================================================
In my code, Sampledist is (Depth,Alines,Alines) size aray.
Ultimately, I want sum "fftimage(i,j,k).*Sampledist2/1000" to "ReconImage" array. But in my code, 'for k=~' part spend 0.8 sec during one cycle. So actually, expected spend time is up to ten thousands hours.
I never agree my code is the best.
When i search to increase calculation, i found 'parfor' but i can't apply that because for loop refer the result.(underline)
Anyone have nice idea?
Thank you.
Kim.
1 commentaire
Jan
le 14 Sep 2021
What is "Sampledist"?
Réponses (1)
Start with a simplification of the code:
Depth = 5000;
Num_Alines = 400;
Num_Bscan = 300;
Alines = 180
h = round(Alines / 2); % Call round() once only
R = zeros(Depth, Num_Alines, Num_Bscan);
for i = 1:Depth
S = Sampledist;
S(S == S(i, h, h)) = 1;
S(S ~= 1) = 0;
S = S * D313 / 1000;
for j = h:Num_Alines - h
for k = h:Num_Bscan - h
R(:, 1+j-h:j+h, 1+k-h:k+h) = ...
R(:, 1+j-h:j+h, 1+k-h:k+h) + fftimage(i,j,k) .* S;
end
end
end
Please provide some values for Sampledist and fftimage - maybe produced by rand().
Catégories
En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!