Arrays 基于另一向量的matlab排序矩阵
我有一个2D矩阵,希望根据两个其他向量对行和列进行排序,即一个用于对行进行排序,另一个用于在MATLAB中对列进行排序 示例:A(矩阵到订单) 行向量(矩阵A的行排序顺序) 和列向量Arrays 基于另一向量的matlab排序矩阵,arrays,matlab,matrix,vector,Arrays,Matlab,Matrix,Vector,我有一个2D矩阵,希望根据两个其他向量对行和列进行排序,即一个用于对行进行排序,另一个用于在MATLAB中对列进行排序 示例:A(矩阵到订单) 行向量(矩阵A的行排序顺序) 和列向量 1 5 4 2 3 修改的 0 4 3 1 2 3 8 0 1 2 1 7 9 1 8 2 2 6 3 4 那么: ModifiedA=A(RowVector,ColumnVector); 注意:Matab的索引从1开始,而不是从0开始,相应地调
1 5 4 2 3
修改的
0 4 3 1 2
3 8 0 1 2
1 7 9 1 8
2 2 6 3 4
那么:
ModifiedA=A(RowVector,ColumnVector);
注意:Matab的索引从
1
开始,而不是从0
开始,相应地调整索引向量。在MATLAB中,您可以使用排序的第二个输出
来获得MATLAB正在查找的基于1的索引(在本例中,您可以只添加1,但即使行和列向量不连续,使用sort
也有效)
然后可以对矩阵应用索引操作:
modifiedA = A(rowIdx, colIdx);
实际上,阅读代码比问题描述更有意义……很遗憾,需要回答才能澄清OP的问题-+1。在Matlab中,索引从1开始,索引向量将返回当前格式的错误。不需要对这些向量调用排序。OP已经提供了每个维度的顺序eds需要在中排序,因此排序是多余的。
ModifiedA=A(RowVector,ColumnVector);
[~,rowIdx] = sort(rowVector);
[~,colIdx] = sort(colVector);
modifiedA = A(rowIdx, colIdx);