我想根据行中的多个非零元素对矩阵行进行排序,请考虑以下示例
a = [0 0 2;2 1 4;2 5 0]
但是应该是
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)]
上面的代码有效但有没有人有更优雅的方式?
答案 0 :(得分:7)
您可以使用以下方法:
[~,I] = sort(sum(a~=0,2), 'descend');
a = a(I,:);
结果:
a =
2 1 4
2 5 0
0 0 2