我有一个列向量:
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循环的情况下完成,但不确定如何?
您可以将值与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,你可以设置你想要的任何容忍阈值.