【问题标题】:Fast columns sorting of matrix refering another vector in matlabmatlab中引用另一个向量的矩阵的快速列排序
【发布时间】:2013-01-16 14:52:36
【问题描述】:

我正在尝试根据 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];

所以第一个向量的索引与列的索引相同 所以我们根据向量的值对列进行排序。

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    在 Matlab 中,sort function 返回两个变量,第一个是排序后的向量/矩阵,第二个是一组索引,可以与原始数据组合以生成排序值。

    A = [ 5 4 1 2 3 ];
    
    [A_sorted1, idx] = sort(A);
    
    A_sorted2 = A(idx);
    

    A_sorted1A_sorted2 是等价的。

    如果b 中的行数等于a 中的元素数,那么您可以简单地使用:

    [~, idx] = sort(a);
    b_sorted = b(idx,:);
    

    如果您想按列排序,请使用:

    b_sorted = b(:,idx);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多