我正在尝试根据a中的另一个向量值对矩阵的列进行排序 在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];
因此第一个向量的索引与列的索引相同 因此,我们根据向量的值对列进行排序。
答案 0 :(得分:4)
在Matlab中,sort
function返回两个变量,第一个是排序的矢量/矩阵,第二个是一组索引,可以与原始数据组合以产生排序值。
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);