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

initial commit to HG from Changeset: 646 (e263d8a21543) added further path and more save "camirversion.m"
author Daniel Wolff
date Fri, 19 Aug 2016 13:07:06 +0200
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	Fri Aug 19 13:07:06 2016 +0200
@@ -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