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

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

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)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Tags

Asked:

on 5 Oct 2021

Commented:

on 5 Oct 2021

Community Treasure Hunt

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

Start Hunting!