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

5 次查看(过去 30 天)
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 个评论
Stephen23
Stephen23 2022-9-8
"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.

请先登录,再进行评论。

采纳的回答

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

更多回答(1 个)

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

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

产品


版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by