【问题标题】:sorting matrix in matlab based on another vector基于另一个向量在matlab中排序矩阵
【发布时间】:2014-11-21 21:28:43
【问题描述】:

我有一个二维矩阵,想根据另外两个向量对行和列进行排序,即一个用于在 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

【问题讨论】:

  • Matlab 中的索引从 1 开始,您的索引向量将以其当前格式返回错误。

标签: arrays matlab matrix vector


【解决方案1】:

怎么样:

ModifiedA=A(RowVector,ColumnVector);

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

【讨论】:

  • 实际上阅读代码比问题描述更有意义......很遗憾,它需要一个答案来澄清 OP 的要求 - +1。
【解决方案2】:

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

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

然后你可以对矩阵应用索引操作:

modifiedA = A(rowIdx, colIdx);

【讨论】:

  • 不需要对这些向量调用排序。 OP已经提供了每个维度需要排序的顺序,所以排序是多余的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 2016-09-19
  • 2010-11-03
  • 1970-01-01
相关资源
最近更新 更多