13

我有一个列向量:

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

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

B = [4; 5]

最终结果应该是:

A = [1; 2; 3; 7]

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

4

3 回答 3

20

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

于 2013-05-29T14:35:35.243 回答
6

您可以将值与bsxfun

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

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

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

代替eps,您可以设置所需的任何容差阈值。

于 2013-05-29T14:40:03.413 回答
2

编辑:如果你想删除第 4 行和第 5 行,就是这样,如果你想删除四行和五行,请检查其他答案。

就这么简单

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

A(B)=[];
于 2013-05-29T14:32:13.297 回答