Is there a faster or alternative way to use find()?

2 views (last 30 days)
Dc215905
Dc215905 on 5 Oct 2021
Commented: Dc215905 on 5 Oct 2021
I have two arrays.
size(A,2) = 525
size(B,2) = 4324438.
I'm trying to find the IDX of B that == A(i). I also have to round and take the first IDX just because of the time resolution of the data.
To achieve this I'm currently doing:
IDX =zeros(1,size(A,2));
for i = 1:size(A,2)
idxCueTemp = find(round(B(:),3)==round(A(i),3));
IDX(i) = idxCueTemp(1);
end
This is painfully slow and is taking ~60s to complete.
Is there a better way?
  1 Comment
Matt J
Matt J on 5 Oct 2021
size(A,2) = 525
size(B,2) = 4324438.
Are size(A,1) and size(B,1) irrelevant for some reason?

Sign in to comment.

Accepted Answer

Matt J
Matt J on 5 Oct 2021
Edited: Matt J on 5 Oct 2021
Br=round(B(:),3);
Ar=round(A);
[~,IDX]=ismember(Ar,Br);

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!