在MatLab中找到每行2D矩阵的排序索引并填充新矩阵

时间:2012-08-24 15:48:57

标签: matlab sorting matrix indexing populate

我有一个挑战来订购我的矩阵。提供的函数如sortrows以相反的方式工作......

采用这个2D矩阵

M =
     40    45    68
     50    65    58
     60    55    48
     57    67    44    
                      ,

目标是找到表示每行排序索引(排名)的矩阵O,即:

O =

     1     2     3
     1     3     2
     3     2     1
     2     3     1
                       .

因此,对于第二行50是最小的元素(1),65是最大的(3),而58是第二大的(2),因此行向量{ {1}}。

2 个答案:

答案 0 :(得分:3)

[~,sorted_inds] = sort(M,2);

会做的。

答案 1 :(得分:0)

我认为您正在寻找常规sort函数的第二个输出:

[~,I] = sort(M,2)

此语法压缩实际排序的矩阵Msorted,并返回索引I,以便

for j = 1:n, Msorted(j,:) = M(I(j,:),j); end

输入doc sort以获取更多信息。