How to speed up find and unique
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I did the profiling where unique and find take the most of time.
I use find as I want to know the row and column index of the 1 elements in a. For unique, I only need the index.
a=randi([0 1], 20000,8736);
temp=randi(8737, 4000,1000);
for i=1000
[aa0,aa00]=find(a(:,temp(:,i))==1);
[~,aa001,~]=unique(aa00);
end
May I know how to speed up? Thank you.
2 Commenti
Walter Roberson
il 26 Apr 2018
I think your aa001 should be equivalent to
aa001 = find(diff([0; aa0]));
which is an abbreviation for
aa001 = [1; find(diff(aa0) ~= 0)];
which is looking for the places where aa0 changes.
Potentially faster would be
aa001 = [1; find(aa0(1:end-1) ~= aa0(2:end))];
but with the two intermediate arrays you would really have to do a timing test to be sure which variation was faster.
Risposte (0)
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!