Borrar filtros
Borrar filtros

Comparing first n digits

4 visualizaciones (últimos 30 días)
wesso Dadoyan
wesso Dadoyan el 25 de Oct. de 2017
Comentada: Rik el 25 de Oct. de 2017
Hi ,
I have two columns of numbers A and B. A is 9 digits and B is 8 digits. How can I find the row in B that matches A(i) in a loop (i=1:length(A))
  3 comentarios
wesso Dadoyan
wesso Dadoyan el 25 de Oct. de 2017
example A(2)=654356105 B is column vector that contains in row 20 number 65435610. B(20) matches A(2) since the first 8 digits of A(2)=B(20) how can I find row 20 in B?
Rik
Rik el 25 de Oct. de 2017
I would recommend not using a loop. If you have stored the number in a number format, just divide the A by 10 and floor it to convert to 8 digits. If you have it as a string, just remove the last character.
Then you can use ismember to do the work. ismember can be slow, so looking for alternative methods can be worthwhile if that is the bottleneck in your code.

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 25 de Oct. de 2017
[tf, Bidx] = ismember(fix(A/10), B);
Now, tf(K) tells you whether A(K) had a match in B or not, and if tf(K) is true then Bidx(K) tells you which entry in B matched.

Más respuestas (0)

Categorías

Más información sobre Data Type Identification 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