Sorting matrix with specifications for the order

Hi,
I have a certain matrix with n rows and 3 columns. I want to sort it according to the sums of the squares of its columns.
For example, let's say my matrix is
0 0 1
0 0 2
1 1 1
Since for the second row we have: 0^2+0^2+2^2 = 4, which is larger than the 3rd row: 1^2+1^2+1^2 = 3. In such a case, I want my matrix to look like:
0 0 1
1 1 1
0 0 2
Thank you for your help, it is very appreciated !

Answers (2)

A=[0 0 1;0 0 2;1 1 1];
[~,idx]=sort(sum(A.^2,2))
out=A(idx,:)

1 Comment

This is faster than the arrayfun approach, but of course this matters for larger matrices only.

Sign in to comment.

Here .. I think this will work ..
A = [0 0 1;0 0 2;1 1 1;0 0 0];
ans = sortrows(A, [3 2 1])

Categories

Asked:

on 19 Nov 2012

Community Treasure Hunt

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

Start Hunting!