How to sort one array based on the order of a second array?

2 visualizaciones (últimos 30 días)
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.

Respuesta aceptada

Stephen23
Stephen23 el 22 de En. de 2021
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)
C = 1×10 string array
"T1_1a" "S1_1b" "U1_1c" "O1_1d" "I1_1e" "A1_2a" "F1_2b" "P1_2c" "Z1_2d" "J1_2e"

Más respuestas (0)

Categorías

Más información sobre Shifting and Sorting Matrices en Help Center y File Exchange.

Productos


Versión

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by