Sorting matrix with specifications for the order
2 次查看(过去 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!