我有这个问题,我需要在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];
答案 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