我是matlab我有一个4列的矩阵。如果第2,3列和第4列中的元素都等于零,我想删除整行。
所以,我想我需要做这样的事情,但我想忽略第一栏:
data(all(data==0,2),:) = [];
答案 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,:)=[]