Is there a function in MATLAB that sorts a bidimensional array?

1.9k Views Asked by At

Is there a function in MATLAB that sorts a bidimensional array?

This is how I would like to sort it:

The matrix:

$\left(\begin{array}{c c c} 9 & 4 & 7\\ 1 & 5 & 2\\ 3 & 6 & 8 \end{array}\right) $

will become:

$\left(\begin{array}{c c c} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9 \end{array}\right) $

1

There are 1 best solutions below

3
On BEST ANSWER

It should be possible by vectorizing of the original matrix and subsequent reshaping

>> A = [9 4 7; 1 5 2; 3 6 8 ]

>> reshape(sort(A(:)),size(A))'

If you need to know original indices, function sort is able to return them. But it returns indices of vectorized matrix and therefore ind2sub has to be used

A = [9 4 7; 1 5 2; 3 6 8 ];
[t,indices]=sort(A(:));
[I,J] = ind2sub(size(A),indices);
row_orig = reshape(I,size(A))';
col_orig = reshape(J,size(A))';
sorted = reshape(t,size(A))';