merge(p,x,y) --- form a partition from p by combining x and y's parts. If x or y are out of range, p is returned.
0001 function q = merge(p,x,y) 0002 % merge(p,x,y) --- form a partition from p by combining x and y's parts. 0003 % If x or y are out of range, p is returned. 0004 0005 q = p; 0006 n = nv(p); 0007 0008 if (x<1) | (x>n) | (y<1) | (y>n) | (x==y) 0009 return 0010 end 0011 0012 rx = find(p.array(:,x)); 0013 ry = find(p.array(:,y)); 0014 0015 if rx == ry 0016 return 0017 end 0018 0019 % merge row ry into row rx 0020 q.array(rx,:) = q.array(rx,:) | q.array(ry,:); 0021 0022 % remove row ry 0023 0024 idx = [1:ry-1,ry+1:np(p)]; 0025 q.array = q.array(idx,:); 0026 q.array = sortrows(q.array);