Sorting matrices

so I have two matrices:
A = [4 6 3 2 9 0 1 5 7 8]
B = [6 5 2 4 0 8 3 7 4 9]
I want to sort matrix A in ascending order, but I want B to correspond with the sorting so that the column match. so if I sort(A), I want B to look like this:
A = [0 1 2 3 4 5 6 7 8 9]
B = [8 3 4 2 6 7 5 4 9 0]
Matrix B can have more than one rows. B is not to be sorted, it just follow the sorting of matrix A. A and B can be in one matrix so as long as I can sort the first row, all the following rows will follow. I would like some ideas about doing this. Thanks.

 Respuesta aceptada

Matt Fig
Matt Fig el 6 de Abr. de 2011

3 votos

[As,I] = sort(A);
Bs = B(I);
To sort along the rows, use the dim argument to SORT.

5 comentarios

Jason
Jason el 6 de Abr. de 2011
This only work if B have one row. I just tried with B having two rows and it combines B into one row. Is there another way to do this if B has more than one rows? like:
B = [6 5 2 4 0 8 3 7 4 9; 6 5 2 4 0 8 3 7 4 9]
Sean de Wolski
Sean de Wolski el 6 de Abr. de 2011
Bs = B(:,I);
Matt Fig
Matt Fig el 6 de Abr. de 2011
Sean de has the correct solution to this further problem. When working with matrices and sorting along dim2, I contains the column indices of the sort for each row.
Thus you must use them that way when indexing into B.
Jason
Jason el 6 de Abr. de 2011
Got it now. Thanks.
Mohamed Helmy
Mohamed Helmy el 26 de Abr. de 2011
Thanksssssssss

Iniciar sesión para comentar.

Más respuestas (1)

Tim Zaman
Tim Zaman el 6 de Abr. de 2011

1 voto

Append A to B so that
i believe the code is C=[A;B] so that:
C = [4 6 3 2 9 0 1 5 7 8;
6 5 2 4 0 8 3 7 4 9]
Then you say "sort(C,1)" so that the sorting is done for the first column
Have fun
PS makeup and layout in this textbox is awful

Categorías

Productos

Etiquetas

Preguntada:

el 6 de Abr. de 2011

Community Treasure Hunt

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

Start Hunting!

Translated by