How to optimize the following algorithm?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have a large matrix-M, and the rows have been sorted based on the value on some entry. Next I want to identify all rows that can be dominated, i.e., row #i is dominated by #j if j<i and M(j,:)<=M(i,:).
If rows #i is dominated, we can remove row i. I notice that remove row #i takes a lot of time for a large matrix so I set a index() and each time if it is dominated then index(i)=1. At last, M(index)=[]. (remove those dominated rows at last)
I run my code several times, and find out there is a bottleneck-N loops. Below I show some code:
for i=3:N
j=2; %j from i-1 to may be faster!
while j<=i-1
if all(M(j,1:N)<=M(i,1:N))
idx(i)=1;
break;
else
j=j+1;
end
end
end
M(idx)=[];
I am thinking if someone can help me to optimize the code? Can we do better here? Thanks.
2 commentaires
Réponses (0)
Voir également
Catégories
En savoir plus sur Surrogate Optimization 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!