How can I sort a matrix elementwise ?

Hi, I need to sort a matrix elementwise and get the results to a single vector without losing the index of each element.
For example,
A = [3, 4 ; 6, 2]
The sorted vector should be ,
B = [2;3;4;6]
without losing the information of each and every element in the original matrix.
Thank you.

 Accepted Answer

A = [3, 4 ; 6, 2];
[m,~] = size(A);
[B,i] = sort(A(:));
index = [mod(i-1,m) + 1, ceil(i/m)];

1 Comment

Hi Andrei,
I tried the code and this is what I wanted.
Thank you.

Sign in to comment.

More Answers (1)

B = sort(reshape(A,[],1))

3 Comments

Hi Stephan,
Thank you for your answer.
But I actually need is something like this.
A = [3, 4 ; 6, 2]
The sorted vector should be ,
B = [2;3;4;6]
without losing the information of each and every element in the original matrix.
After I sorted the matrix and put the elements in a vector, I need to find the original index for each and every element in the sorted vector.
For example, in B=[2;3;4;6]
I need to tell element 6 is the A(2,1) element.
Actually this is kind of sorting with preserving the index.
If I just sort it, I cannot backtrack the original index of the each and every element.
Thanks.
[B, idx] = sort(reshape(A,[],1))
[row,col] = ind2sub([size(A,1), size(A,2)],idx)
Hi Stephan,
This is really what I needed and the inbuilt in2sub function is more powerful I guess.
Thanks.

Sign in to comment.

Categories

Products

Release

R2019b

Community Treasure Hunt

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

Start Hunting!