Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个列向量:
A = [1; 2; 3; 4; 4; 5; 5; 7];
我希望排除A第二个矩阵中的元素B:
A
B
B = [4; 5]
最终结果应该是:
A = [1; 2; 3; 7]
我很确定使用 MATLAB 优雅的语法,这可以在不编写for循环的情况下完成,但不知道如何?
for
我会用Afilt=A(~ismember(A,B));. 这将返回所有A不在的元素B。
Afilt=A(~ismember(A,B));
您可以将值与bsxfun:
bsxfun
A = A(all(bsxfun(@ne, A(:), B(:).'), 2))
如果您需要处理浮点数(ismember失败),这种方法特别好:
ismember
A(all(abs(bsxfun(@minus, A(:), B(:).')) >= eps, 2))
代替eps,您可以设置所需的任何容差阈值。
eps
编辑:如果你想删除第 4 行和第 5 行,就是这样,如果你想删除四行和五行,请检查其他答案。
就这么简单
A = [1; 2; 3; 4; 4; 5; 5; 7]; B = [4; 5]; A(B)=[];