Sorting matrix with specifications for the order
조회 수: 16 (최근 30일)
이전 댓글 표시
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 !
댓글 수: 0
답변 (2개)
Azzi Abdelmalek
2012년 11월 19일
A=[0 0 1;0 0 2;1 1 1];
[~,idx]=sort(sum(A.^2,2))
out=A(idx,:)
댓글 수: 1
Jan
2012년 11월 19일
This is faster than the arrayfun approach, but of course this matters for larger matrices only.
Yowh
2012년 11월 19일
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])
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!