我正在尝试在 matlab 中快速根据另一个向量值对矩阵的列进行排序。假设我有一个参考向量:
a = [1 8 3];
我想按行排序的矩阵
b =[2 3 4
5 6 4
1 2 1];
a
如果排序的 a 是,我想要基于向量的结果
a = [8 3 1]
排序矩阵现在将是
b = [3 4 2
6 4 5
2 1 1];
所以第一个向量的索引与列的索引相同所以我们根据向量的值对列进行排序。
在 Matlab 中,该sort
函数返回两个变量,第一个是排序的向量/矩阵,第二个是一组索引,可以与原始数据组合以生成排序值。
A = [ 5 4 1 2 3 ];
[A_sorted1, idx] = sort(A);
A_sorted2 = A(idx);
A_sorted1
并且A_sorted2
是等价的。
如果行数b
等于元素数,a
则可以简单地使用:
[~, idx] = sort(a);
b_sorted = b(idx,:);
如果您想按列排序,请使用:
b_sorted = b(:,idx);