【问题标题】:removing rows from matrix based on specific conditions根据特定条件从矩阵中删除行
【发布时间】:2014-01-28 11:57:33
【问题描述】:

我有一个 65536x8 矩阵,其中包含所有可能的值组合 - 45 90 135 180(8 列)。

我需要删除所有不包含所有四个值的行(每行不能缺少任何这些值)。

这是我尝试过的(不工作):

>> orient(orient(numel(orient(:,1))) == 45 && 90 && 135 && 180,:)

ans =

   Empty matrix: 0-by-8

在 MATLAB 中是否有一些有效的方法可以做到这一点?

【问题讨论】:

    标签: matlab matrix conditional


    【解决方案1】:

    这应该让你知道如何去做:

    A = [1 1 1
         1 1 2
         1 1 3
         1 2 1
         1 2 2
         1 2 3
         1 3 1
         1 3 2 
         1 3 3
         2 1 1
         2 1 2
         2 1 3];
    
    
    A(any((A == 1)') & any((A == 2)') & any((A == 3)'),:)
    
    ans =
    
       1   2   3
       1   3   2
       2   1   3
    

    或者一般使用循环(只有 4 个数字,这应该很快):

    rows = true(size(A,1),1);              %// Initialization
    U = unique(A);                         %// List of numbers
    for n = 1:size(U,1)
        rows = rows & any((A == U(n))')';
    end
    A(rows,:)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多