假设我有一个矩阵A,在下面的表格中.
A =
35 1 6
3 32 0
0 9 0
0 0 0
Run Code Online (Sandbox Code Playgroud)
我想按升序排序,但最后保留零.
我知道我可以inf替换所有零,对它进行排序,并inf再次用零替换s,如本问题所述.
我认为有一种更简单的方法.至少因为我的零已经在底行.我可以一行完成吗?
我想要的是:
A =
3 1 6
35 9 0
0 32 0
0 0 0
Run Code Online (Sandbox Code Playgroud)
谢谢!
关于Eitan答案的开销存在疑问.以下是结果(平均值和热身后):
B = kron(A,ceil(rand(2000)*1000)); % 8000x6000 matrix
C = B;
%% Eitan's solution:
t1 = tic; B(B ~= 0) = nonzeros(sort(B)); toc(t1)
Elapsed time is 1.768782 seconds.
%% From question text:
B = C;
t1 = tic; …Run Code Online (Sandbox Code Playgroud)