MATLAB - 根据向量排序矩阵

3

可能是重复问题:
如何在MATLAB中按照一列的顺序对2-D数组进行排序?
使用另一个矩阵对矩阵进行排序

我有一个包含429个值的向量'A'和一个包含429x200个值的矩阵'B'。向量A和矩阵B的行共享相同的索引。我的向量'A'包含值1:1:429,但它们在向量中是随机排序的。我想重新排列A,使其按顺序从1到429进行索引,并且我还想按与新排序的'A'相同的顺序对矩阵'B'中的行进行排序。

这能否快速轻松地完成而不使用for循环?

这里有一个示例以说明我的观点:

A =
    5
    3
    1
    2
    4


 B =
    3   7   0   4   6
    1   2   5   0   8
    4   0   2   0   0
    3   0   1   0   5
    2   2   3   4   4


sortedA = 

1
2
3
4
5

sortedB =

4   0   2   0   0
3   0   1   0   5
1   2   5   0   8
2   2   3   4   4
3   7   0   4   6

谢谢大家!

1个回答

2

示例数据:

A = [ 5, 3, 1, 2, 4 ]';

B = [ 3, 7, 0, 4, 6; 1, 2, 5, 0, 8; 4, 0, 2, 0, 0; 3, 0, 1, 0, 5; 2, 2, 3, 4, 4 ]

对矩阵进行排序:

[sortedA,IX] = sort(A);

sortedB = B(IX,:);

sortedA =
 1
 2
 3
 4
 5

sortedB =
 4     0     2     0     0
 3     0     1     0     5
 1     2     5     0     8
 2     2     3     4     4
 3     7     0     4     6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接