How do I compare two shuffled vectors, and get the indexes of one as it appears in the other?

10 visualizaciones (últimos 30 días)
I have two vectors of strings, one is a shuffled version of the other. I want to get a new vector that has the indexes of the elements in the first vector, as they appear in the second.
So, for example, for the following two vectors:
A=["cond1","cond2","cond3","cond4"];
b=["cond4","cond2","cond1","cond3"];
I'd want to get the following output
ans = 3 2 4 1
I.e. telling me that the first element in A is in position 3 in B, the second is in position 2, and so on.
  2 comentarios
Stephen23
Stephen23 el 8 de Sept. de 2022
"I have two vectors of strings,"
But what you showed us are character vectors. Because square brackets are a concatenation operator, your example data:
A = ['cond1','cond2','cond3','cond4'];
is exactly equivalent to this:
A = 'cond1cond2cond3cond4';
Perhaps you really meant to show us string arrays, not the character arrays that you actually gave us.

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 8 de Sept. de 2022
A = ["cond1","cond2","cond3","cond4"];
b = ["cond4","cond2","cond1","cond3"];
[~,X] = ismember(A,b)
X = 1×4
3 2 4 1

Más respuestas (1)

David Hill
David Hill el 8 de Sept. de 2022
b=["cond4","cond2","cond1","cond3"];%needs to be string array
[~,idx]=sort(b)
idx = 1×4
3 2 4 1

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by