0
我想删除该行,如果该行中的第一个元素包含在数组中。Matlab删除矩阵行,如果第一个元素在数组中
我已经矩阵:
A = [ 1 2; 1 5; 2 3; 3 4; 3 5; 4 5 ];
和数组
B = [1,2,3]
在恩。我克隆到X
X = A
和选择后,我应该得到:
X = [4 5]
我试着做这样的事情:
X(:, 1 == any(B)) = [];
我想删除该行,如果该行中的第一个元素包含在数组中。Matlab删除矩阵行,如果第一个元素在数组中
我已经矩阵:
A = [ 1 2; 1 5; 2 3; 3 4; 3 5; 4 5 ];
和数组
B = [1,2,3]
在恩。我克隆到X
X = A
和选择后,我应该得到:
X = [4 5]
我试着做这样的事情:
X(:, 1 == any(B)) = [];
您可以使用ismember
来检查第一列A
(A(:,1)
)中的值是否在B
中,然后使用生成的逻辑阵列选择A
的行不在B
中,并将它们分配到X
。
X = A(~ismember(A(:,1), B),:);
更新
如果你想检查第一或第二元素是B
你可以做以下
X = A(~any(ismember(A:,1:2), B), 2), :);
或者更简单地说,如果你只打算到有两列
X = A(~any(ismember(A, B), 2), :);
啊,谢谢! – sphynx
另外,是否可以检查第1或第2个元素是否为成员? – sphynx
@sphynx你只想要连续的第一个或第二个或* any *元素? – Suever