function test28 %TEST28 test nesdis % Example: % test28 % See also cholmod_test % Copyright 2006-2023, Timothy A. Davis, All Rights Reserved. % SPDX-License-Identifier: GPL-2.0+ index = ssget ; [ignore f] = sort (index.nnz) ; % f = find (index.nrows < index.ncols) ; % [ignore i] = sort (index.nnz (f)) ; % f = f (i) ; f = f (1:100) ; for i = f try Prob = ssget (i, index) ; A = spones (Prob.A) ; [m n] = size (A) ; if (m < n) A = A*A' ; elseif (m > n) ; A = A'*A ; else A = A+A' ; end % default: do not split connected components [p1 cp1 cmem1] = nesdis (A) ; %#ok % order connected components separately [p2 cp2 cmem2] = nesdis (A, 'sym', [200 1]) ; %#ok c1 = symbfact (A (p1,p1)) ; c2 = symbfact (A (p2,p2)) ; lnz1 = sum (c1) ; lnz2 = sum (c2) ; fprintf ('%35s %8d %8d ', Prob.name, lnz1, lnz2) if (lnz1 == lnz2) fprintf (' 1\n') ; else fprintf (' %8.3f\n', lnz1/lnz2) ; end subplot (2,3,1) ; spy (A) ; subplot (2,3,2) ; spy (A (p1,p1)) ; subplot (2,3,3) ; treeplot (cp1) ; subplot (2,3,5) ; spy (A (p2,p2)) ; subplot (2,3,6) ; treeplot (cp2) ; drawnow catch fprintf ('%4d failed\n', i) ; end end