从数组中排除元素

时间:2013-05-29 14:30:55

标签: matlab vector

我有一个列向量:

A = [1; 2; 3; 4; 4; 5; 5; 7]; 

我希望排除第二个矩阵AB的元素:

B = [4; 5]

最终结果应为:

A = [1; 2; 3; 7]

我非常确定使用MATLAB优雅的语法,这可以在不编写for循环的情况下完成,但不确定如何?

3 个答案:

答案 0 :(得分:20)

我会使用Afilt=A(~ismember(A,B));。这将返回A中不在B内的所有{{1}}元素。

答案 1 :(得分:6)

您可以将值与bsxfun进行比较:

A = A(all(bsxfun(@ne, A(:), B(:).'), 2))

如果你需要处理浮点数(ismember失败的话),这种方法特别好:

A(all(abs(bsxfun(@minus, A(:), B(:).')) >= eps, 2))

您可以设置所需的任何容差阈值,而不是eps

答案 2 :(得分:2)

编辑:如果要删除第4行和第5行,如果要删除带有四个和五个行的行,请检查其他答案。

这很简单

A = [1; 2; 3; 4; 4; 5; 5; 7];     
B = [4; 5];

A(B)=[];