speed up the code

1 visualizzazione (ultimi 30 giorni)
Tiki Tiki
Tiki Tiki il 23 Lug 2018
Commentato: Jan il 3 Ago 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 Commenti
Jan
Jan il 23 Lug 2018
Modificato: Jan il 23 Lug 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 il 26 Lug 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.

Accedi per commentare.

Risposta accettata

Jan
Jan il 23 Lug 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 Commenti
Tiki Tiki
Tiki Tiki il 26 Lug 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 il 3 Ago 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.

Accedi per commentare.

Più risposte (0)

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by