Mercurial > octave-nkf
diff test/test_diag_perm.m @ 8965:42aff15e059b
Implement diag \ sparse and sparse / diag.
Not pretty, but somewhat efficient and preserves sparsity.
author | Jason Riedy <jason@acm.org> |
---|---|
date | Mon, 09 Mar 2009 17:49:14 -0400 |
parents | f4f4d65faaa0 |
children | 1bba53c0a38d |
line wrap: on
line diff
--- a/test/test_diag_perm.m Mon Mar 09 17:49:13 2009 -0400 +++ b/test/test_diag_perm.m Mon Mar 09 17:49:14 2009 -0400 @@ -157,3 +157,38 @@ %! A(4, 1) = Inf; %! assert (Dr * A * Dc, A .* kron (dr, dc), eps); +## sparse inverse row scaling with a zero factor +%!test +%! n = 8; +%! A = sprand (n, n, .5); +%! scalefact = rand (n, 1); +%! Dr = diag (scalefact); +%! scalefact(n-1) = Inf; +%! Dr(n-1, n-1) = 0; +%! assert (full (Dr \ A), full (A) ./ repmat (scalefact, 1, n)); + +## narrow sparse inverse row scaling +%!test +%! n = 8; +%! A = sprand (n, n, .5); +%! scalefact = rand (n-2, 1); +%! Dr = diag (scalefact, n, n-2); +%! assert (full (Dr \ A), Dr \ full(A)) + +## sparse inverse column scaling with a zero factor +%!test +%! n = 11; +%! A = sprand (n, n, .5); +%! scalefact = rand (1, n); +%! Dc = diag (scalefact); +%! scalefact(n-1) = Inf; +%! Dc(n-1, n-1) = 0; +%! assert (full (A / Dc), full(A) / Dc) + +## short sparse inverse column scaling +%!test +%! n = 7; +%! A = sprand (n, n, .5); +%! scalefact = rand (1, n-2) + I () * rand(1, n-2); +%! Dc = diag (scalefact, n-2, n); +%! assert (full (A / Dc), full(A) / Dc)