speed up the code
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Jan
le 23 Juil 2018
Modifié(e) : Jan
le 23 Juil 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?
Réponse acceptée
Jan
le 23 Juil 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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!