MATLAB Answers

0

How can I sort a matrix elementwise ?

Asked by Gayan Lankeshwara on 21 Oct 2019
Latest activity Commented on by 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.

  0 Comments

Sign in to comment.

Products


Release

R2019b

2 Answers

Answer by Andrei Bobrov
on 21 Oct 2019
 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.


Answer by Stephan
on 21 Oct 2019

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.
Stephan
on 21 Oct 2019
[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.