blob: 4f143610e784e2fe781ff6691a0d1eb27f07e624 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
function C = mysymsetdiff(A,B)
% MYSYMSETDIFF Symmetric set difference of two sets of positive integers (much faster than built-in setdiff)
% C = mysetdiff(A,B)
% C = (A\B) union (B\A) = { things that A and B don't have in common }
if isempty(A)
ma = 0;
else
ma = max(A);
end
if isempty(B)
mb = 0;
else
mb = max(B);
end
if ma==0
C = B;
elseif mb==0
C = A;
else % both non-empty
m = max(ma,mb);
bitsA = sparse(1, m);
bitsA(A) = 1;
bitsB = sparse(1, m);
bitsB(B) = 1;
C = find(xor(bitsA, bitsB));
end
|