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
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
2022-9-8
A = ["cond1","cond2","cond3","cond4"];
b = ["cond4","cond2","cond1","cond3"];
[~,X] = ismember(A,b)
0 个评论
更多回答(1 个)
David Hill
2022-9-8
b=["cond4","cond2","cond1","cond3"];%needs to be string array
[~,idx]=sort(b)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!