# How can I sort a matrix elementwise ?

2 views (last 30 days)
Gayan Lankeshwara on 21 Oct 2019
Commented: Gayan Lankeshwara on 21 Oct 2019
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.

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

#### 1 Comment

Gayan Lankeshwara on 21 Oct 2019
Hi Andrei,
I tried the code and this is what I wanted.
Thank you.

Stephan on 21 Oct 2019
B = sort(reshape(A,[],1))

Gayan Lankeshwara on 21 Oct 2019
Hi Stephan,
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.
Stephan on 21 Oct 2019
[B, idx] = sort(reshape(A,[],1))
[row,col] = ind2sub([size(A,1), size(A,2)],idx)
Gayan Lankeshwara on 21 Oct 2019
Hi Stephan,
This is really what I needed and the inbuilt in2sub function is more powerful I guess.
Thanks.