基于另一个向量在matlab中排序矩阵

时间:2014-11-21 21:28:43

标签: arrays matlab matrix vector

我有一个2D矩阵,想要根据另外两个向量对行和列进行排序,即一个用于排序行,另一个用于在MATLAB中对列进行排序

示例:A(要订购的矩阵)

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

行向量(排序矩阵A行的顺序)

1
4
2
3

列向量

1 5 4 2 3

修改A

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

2 个答案:

答案 0 :(得分:2)

怎么样:

ModifiedA=A(RowVector,ColumnVector);

注意:Matab的索引从1而不是0开始,相应地调整您的索引向量。

答案 1 :(得分:1)

在MATLAB中,您可以使用sort的第二个输出来获取MATLAB正在寻找的基于1的索引(在这种情况下,您可以刚刚添加1,但使用sort甚至可以工作如果行和列向量不连续)。

[~,rowIdx] = sort(rowVector);
[~,colIdx] = sort(colVector);

然后您可以将索引操作应用于矩阵:

modifiedA = A(rowIdx, colIdx);