从数组中排除元素

dr_*_*_rk 13 matlab vector

我有一个列向量:

A = [1; 2; 3; 4; 4; 5; 5; 7]; 
Run Code Online (Sandbox Code Playgroud)

我希望排除A第二个矩阵中的元素B:

B = [4; 5]
Run Code Online (Sandbox Code Playgroud)

最终结果应该是:

A = [1; 2; 3; 7]
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*sen 20

我会用Afilt=A(~ismember(A,B));.这将返回A其中没有的所有元素B.

  • 或者:`A(成员(A,B))= [];` (4认同)

Eit*_*n T 6

您可以将值与bsxfun:

A = A(all(bsxfun(@ne, A(:), B(:).'), 2))
Run Code Online (Sandbox Code Playgroud)

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

A(all(abs(bsxfun(@minus, A(:), B(:).')) >= eps, 2))
Run Code Online (Sandbox Code Playgroud)

相反的eps,你可以设置你想要的任何容忍阈值.