【问题标题】:Find rows in matrix with a value in the first column在矩阵中查找第一列中具有值的行
【发布时间】:2018-10-06 03:13:51
【问题描述】:

我有矩阵A

A=[ 1 2 3;
    3 4 5;
    1 6 7; 
    2 2 1 ]

我需要矩阵B,其中行来自A,第一列有1:

B=[ 1 2 3;
    1 6 7 ]

【问题讨论】:

    标签: matlab matrix find rows


    【解决方案1】:

    你可以使用逻辑索引

    B = A( A(:,1) == 1, : )
    

    这表示“A 的所有行的所有列,其中A 的列1 等于1”。

    【讨论】:

      【解决方案2】:

      您可以使用查找功能来执行此操作。

      clc;
      
      A=[ 1 2 3;
          3 4 5;
          1 6 7; 
          2 2 1 ];
      
      idx = find(A(:,1) == 1)    
      B = A(idx,:)
      

      输出:

      idx =
      
         1
         3
      
      B =
      
         1   2   3
         1   6   7
      

      【讨论】:

      • 这里不需要find函数,你可以用同样的方法使用idx = A(:,1)==1来更快更简单的逻辑索引。但是,此时这个答案与我的earlier solution 完全相同。
      • 我想我是在你发布你的答案时写下我的答案,所以直到我发布之后才出现。我同意逻辑索引更快更简单,但我的解决方案也有效。留下我的答案是否合理还是应该删除?我不确定处理这种情况的正确方法。
      • 是的,很容易做到......如果你离开它并不重要,find 有时也有它的用途,我只是指出相似之处:)
      猜你喜欢
      • 2015-08-30
      • 2022-01-05
      • 2021-10-10
      • 1970-01-01
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多