How to speed up find and unique
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Walter Roberson
am 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.
Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!