【发布时间】:2016-11-28 19:09:36
【问题描述】:
如果该行中的第一个元素包含在数组中,我正在尝试删除该行。
我有矩阵:
A = [ 1 2; 1 5; 2 3; 3 4; 3 5; 4 5 ];
和数组
B = [1,2,3]
在前。我正在将 A 克隆到 X
X = A
在选择之后我应该得到:
X = [4 5]
我尝试过这样做:
X(:, 1 == any(B)) = [];
【问题讨论】:
如果该行中的第一个元素包含在数组中,我正在尝试删除该行。
我有矩阵:
A = [ 1 2; 1 5; 2 3; 3 4; 3 5; 4 5 ];
和数组
B = [1,2,3]
在前。我正在将 A 克隆到 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), :);
【讨论】: