我有两个矩阵:
输入:
A = [1,1;2,4;3,9;4,16;5,25];
B = [3,9;4,16;6,26;7,49;5,25];
输出:
A = [1,1;2,4;3,9;4,16;5,25];
B = [6,26;7,49];
我想从A
删除B
的重复元素,反之亦然。以下是我目前的方法,但虽然正确,但速度很慢。
clear all;
clc;
A = [1,1;2,4;3,9;4,16;5,25];
B = [3,9;4,16;6,26;7,49;5,25];
C = B;
L = 0;
for ii = 1:length(A)
for jj = 1:length(B)
if A(ii,1)==B(jj,1) && A(ii,2)==B(jj,2)
C(jj,1)=0;
C(jj,2)=0;
L = L+1;
end
end
end
L
[A B C]
B = zeros(L-1,2);
L = 1;
for ii = 1:length(C)
if C(ii,1)~=0 && C(ii,2)~=0
B(L,1) = C(ii,1);
B(L,2)= C(ii,2);
L = L+1;
end
end
B
我可以使用find
命令吗?或者使用intersect
命令?
感谢大家的帮助。对于具有单列或单行的矩阵,我可以使用find
命令或intersect
命令来完成此操作。
答案 0 :(得分:2)
>> B(~ismember(B, A, 'rows'), :)
和=
6 26
7 49
答案 1 :(得分:1)
尝试intersect
和setdiff
来实现这一目标
答案 2 :(得分:1)
但是,对于使用intersect(A,B)
的单个列,您应该可以使用intersect(A,B,'rows')