Borrar filtros
Borrar filtros

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

10 visualizaciones (últimos 30 días)
Dc215905
Dc215905 el 5 de Oct. de 2021
Comentada: Dc215905 el 5 de Oct. de 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 comentario
Matt J
Matt J el 5 de Oct. de 2021
size(A,2) = 525
size(B,2) = 4324438.
Are size(A,1) and size(B,1) irrelevant for some reason?

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 5 de Oct. de 2021
Editada: Matt J el 5 de Oct. de 2021
Br=round(B(:),3);
Ar=round(A);
[~,IDX]=ismember(Ar,Br);

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by