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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
function test28
%TEST28 test nesdis
% Example:
% test28
% See also cholmod_test
% Copyright 2007, Timothy A. Davis, http://www.suitesparse.com
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
|