Azzera filtri
Azzera filtri

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

10 visualizzazioni (ultimi 30 giorni)
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 Commento
Matt J
Matt J il 5 Ott 2021
size(A,2) = 525
size(B,2) = 4324438.
Are size(A,1) and size(B,1) irrelevant for some reason?

Accedi per commentare.

Risposta accettata

Matt J
Matt J il 5 Ott 2021
Modificato: Matt J il 5 Ott 2021
Br=round(B(:),3);
Ar=round(A);
[~,IDX]=ismember(Ar,Br);

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by