2017-03-23 9 views

答えて

2

あなたがあれば、我々は、行を保持する論理インデックス+ any

data = data(any(data(:,2:4),2),:); 
ここ

の代わりに、行の削除を使用することができます条件が満たされていない。

+1

私はこれが好きです、これは非常にエレガントです。あなたの答えでは、これが逆のアプローチであることを明確にする必要があります(つまり、オールゼロテストが成功した行を破棄するのではなく、オールゼロテストが失敗した行を保持しています)。 –

1
% toy example 
>> a = [1,0,0,1; 
     2,0,2,0; 
     3,0,0,0; 
     4,4,0,4; 
     5,0,0,0; 
     6,0,0,0; 
     7,0,7,0; 
     8,0,0,8; 
     9,0,0,0]; 

% solution 
>> a(sum (a(:, 2:4) == 0, 2) == 3, :) = [] 
a = 
    1 0 0 1 
    2 0 2 0 
    4 4 0 4 
    7 0 7 0 
    8 0 0 8 

すなわち、列2〜列4のゼロ数の合計が3に等しい場合は、その行を削除します。
(すなわちlogical indexing使用)あなたはそのようにそれを行うことができます

1

を:

a(sum((a(:,2:4)==0)')==3,:)=[] 
関連する問題