diff toolboxes/FullBNT-1.0.7/KPMtools/mysymsetdiff.m @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolboxes/FullBNT-1.0.7/KPMtools/mysymsetdiff.m	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,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