将Matlab中的Matrix排序为向量

时间:2017-02-19 17:49:14

标签: matlab

我有这个问题,我需要在MATLAB中对矩阵进行排序,我需要在一个向量中对它进行排序,并且有利于行的相等值,我也需要索引。

input: A= [ 9 9 8 ; 9 8 7; 9 7 6];
output: B= [ 9 9 9 9 8 8 7 7 6];
Index= [ 1 4 2 3 7 5 8 6 9];

1 个答案:

答案 0 :(得分:2)

您可以使用行号矢量联系矩阵:

At = A.' % since you want to iterate over the rows you need to transpose the matrix first
r = repmat(1:size(A,1),[size(A,2) 1]);
[A_sorted] = sortrows([At(:) r(:)],-1)

r为您提供A中每个元素的行号的向量(At中的列号)。然后sortrows对第一列的[At r(:)]行进行排序,使第二列中的行号与同一元素对齐。结果是一个2列矩阵,其中第一列是排序向量(之前是矩阵),第二列是A中第一列中元素的原始行:

A_sorted =
     9     1
     9     1
     9     2
     9     3
     8     1
     8     2
     7     2
     7     3
     6     3