可能的重复: 如何在 MATLAB 中根据一列对二维数组进行排序? 将一个矩阵与另一个矩阵排序
我有一个包含 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
谢谢大家!
示例数据:
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