【问题标题】:How can i change the elements of a column in a matrix based on the changes in another column?如何根据另一列中的更改更改矩阵中列的元素?
【发布时间】:2020-06-09 14:20:38
【问题描述】:

我有一个 5x2 的矩阵,看起来像这样:

1  0.25
2  0.125
3  0.0625
4  0.0625
5  0.5

我的问题是,当我对第二列进行排序时,矩阵会变为这种形式:

1  0.5
2  0.25
3  0.125
4  0.0625
5  0.0625

我需要根据第二列中所做的更改来更改第一列,因为我基本上希望将第一列的每个元素分配给第二列的元素。像这样:

5   0.5
1  0.25
2  0.125
3  0.0625
4  0.0625

我该怎么做?

【问题讨论】:

    标签: matlab sorting matrix


    【解决方案1】:

    所以你想根据第二列对行进行降序排序?

    sortrows(a,2,'descend')
    
    ans =
    
        5.0000    0.5000
        1.0000    0.2500
        2.0000    0.1250
        3.0000    0.0625
        4.0000    0.0625
    

    【讨论】:

    • 看起来里面没有带有“descend”的命令排序。但是我稍微改变了我的代码,它工作得很好。非常感谢!
    • @ΓιάννηςΓιαννάκος 那你一定是旧版本的 MATLAB,我试过了
    【解决方案2】:

    使用sortrows(matrix,2),或[~,idx] = sort(matrix(:,2));matrix = matrix(idx,:)

    顾名思义,前者按行对矩阵进行排序。后者使用sort() 的第二个输出,这是已排序的索引,允许您使用索引更改每行的整个矩阵。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多