在matlab中,如果某些列中的元素等于零,则删除整行

时间:2017-03-23 00:45:30

标签: matlab

我是matlab我有一个4列的矩阵。如果第2,3列和第4列中的元素都等于零,我想删除整行。

所以,我想我需要做这样的事情,但我想忽略第一栏:

data(all(data==0,2),:) = [];

3 个答案:

答案 0 :(得分: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

答案 2 :(得分:1)

你可以这样做:

a(sum((a(:,2:4)==0)')==3,:)=[]