Matlab 根据非零行数对矩阵进行排序 < >我想根据行中的非零元素排序矩阵行,考虑下面的例子: a = [0 0 2;2 1 4;2 5 0]

Matlab 根据非零行数对矩阵进行排序 < >我想根据行中的非零元素排序矩阵行,考虑下面的例子: a = [0 0 2;2 1 4;2 5 0],matlab,matrix,Matlab,Matrix,但这应该是个好主意 a = 2 1 4 2 5 0 0 0 2 最后,以下是我得出的结论 for i = 1:3 vec(i) = sum(a(i,:)==0);%to get number of nonzero elementsin each row end a = [a vec.'] a = sortrows(a,4) % sorting according to number of nonzero elements

但这应该是个好主意

a =

 2     1     4
 2     5     0
 0     0     2
最后,以下是我得出的结论

 for i = 1:3
    vec(i) = sum(a(i,:)==0);%to get number of nonzero elementsin each row
 end
 a = [a vec.']
 a = sortrows(a,4) % sorting according to number of nonzero elements 
 a = [a(:,1:3)]

上面的代码可以工作,但有人有更优雅的方法吗?

您可以使用以下方法:

[~,I] = sort(sum(a~=0,2), 'descend');
a = a(I,:);
结果:

 a =

 2     1     4
 2     5     0
 0     0     2

谢谢,这是一个更好的方法!