How to sort one array based on the order of a second array?
1 次查看(过去 30 天)
显示 更早的评论
Hi,
This seems like a very simple problem, but I can't seem to get it to work with the answers already available.
I have 2 string arrays:
A=["1a","1b","1c","1d","1e","2a","2b","2c","2d","2e"];
B=["A1_2a","U1_1c","Z1_2d","I1_1e","T1_1a","F1_2b","O1_1d","P1_2c","J1_2e","S1_1b"];
Let's say A is a newly sorted array from a previously disordered array (e.g. Q=["1c","2a","1e","2d","1b","2c","2e","1a","2b","1d"];)
How do I sort B, based on how Q was sorted?
The goal is to produce the array below
C=["T1_1a","S1_1b","U1_1c","O1_1d","I1_1e","A1_2a","F1_2b","P1_2c","Z1_2d","J1_2e"];
Thanks in advance.
0 个评论
采纳的回答
Stephen23
2021-1-22
As far as I can tell, the order of Q is irrelevant.
A = ["1a","1b","1c","1d","1e","2a","2b","2c","2d","2e"]; % sorted
B = ["A1_2a","U1_1c","Z1_2d","I1_1e","T1_1a","F1_2b","O1_1d","P1_2c","J1_2e","S1_1b"];
[~,X] = ismember(A,extractAfter(B,'_'));
C = B(X)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Multidimensional Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!