MATLAB - 基于排序掀起了矩阵向量的排序[复制](MATLAB - Sort a matri

2019-07-17 11:39发布

可能重复:
我怎样才能在MATLAB 2-d阵列相对于排序,一列?
排序与另一矩阵的矩阵

我有429个的值的矢量“A”和429x200值的矩阵“B”。 A和B的行共享相同的指数。 我的向量“A”包含的值1:1:429,但他们在整个向量随机排序。 我想重新排列,使其索引,以便从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

谢谢大家!

Answer 1:

示例数据:

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


文章来源: MATLAB - Sort a matrix based off how a vector is sorted [duplicate]