speed up the code

1 view (last 30 days)
Tiki Tiki
Tiki Tiki on 23 Jul 2018
Commented: Jan on 3 Aug 2018
hi everyone.
can you help me speed up this code?
tic
InputOverlap = magic(64)
SDR_Overlap = InputOverlap;
SDR = (zeros (64,64)) ;
Radius = 2;
InputOverlap = [InputOverlap(:,1:Radius) InputOverlap InputOverlap(:,end+1-Radius:end)];
InputOverlap = [InputOverlap(1:Radius,:) ; InputOverlap ; InputOverlap(end+1-Radius:end,:) ];
for r=1:64
for c=1:64
Neighbour= InputOverlap(r:r+2*Radius,c:c+2*Radius);
Kmax = max(Neighbour(:)) ;
if (SDR_Overlap(r,c)>0)&(SDR_Overlap(r,c)>= Kmax)
SDR(r,c) = 1;
else
SDR(r,c) = 0;
end
end
end
toc
Thanks.
  2 Comments
Jan
Jan on 23 Jul 2018
Edited: Jan on 23 Jul 2018
Start with omitting:
else
SDR(r,c) = 0;
SDR is initialized to zero already.
The editor should show a hint that && is more efficient than &. Consider these MLint messages.
The main part of your code happens before the loop. Most of all displaying the magic matrix is slow. I guess, you want to measure the time inside the loop only, don't you?
Tiki Tiki
Tiki Tiki on 26 Jul 2018
Yes. My problem is time in the loop. I remove SDR(r,c) = 0 by setting it is zeros before loop.
But time consumes still high. How can I remove loop in this case?
Please help me. Thank.

Sign in to comment.

Accepted Answer

Jan
Jan on 23 Jul 2018
This is slightly faster:
tic
for r = 1:64
for c = 1:64
Neighbour = InputOverlap(r:r+2*Radius, c:c+2*Radius);
Kmax = max(Neighbour(:));
SDR(r,c) = (SDR_Overlap(r,c) >= Kmax);
end
end
toc
Is the SDR_Overlap(r,c)>0 test useful?
  2 Comments
Tiki Tiki
Tiki Tiki on 26 Jul 2018
Yes. it is a little faster. i also remove SDR_Overlap(r,c)>0. but this code still consume much time.
so i need optimze more. Can you help me how to remove loop in this case?
I have gpu. but dont undertand to use it.
Jan
Jan on 3 Aug 2018
Use movmax to replace the loops.
Does the padding of the input matrix belong to the problem? With movmax and 'EndPoints' set to 'shrink' you can omit the padding.
can you post some real input data? Especially the dimensions matter.

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!