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