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
谢谢,这是一个更好的方法!