Mercurial > octave
diff src/DLD-FUNCTIONS/matrix_type.cc @ 5610:9761b7d24e9e
[project @ 2006-02-09 09:12:02 by dbateman]
author | dbateman |
---|---|
date | Thu, 09 Feb 2006 09:12:03 +0000 |
parents | b4cfbb0ec8c4 |
children | 512d0d11ae39 |
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/matrix_type.cc Thu Feb 09 02:30:00 2006 +0000 +++ b/src/DLD-FUNCTIONS/matrix_type.cc Thu Feb 09 09:12:03 2006 +0000 @@ -157,6 +157,13 @@ retval = octave_value ("Tridiagonal Positive Definite"); else if (typ == SparseType::Hermitian) retval = octave_value ("Positive Definite"); + else if (typ == SparseType::Rectangular) + { + if (args(0).rows() == args(0).columns()) + retval = octave_value ("Singular"); + else + retval = octave_value ("Rectangular"); + } else if (typ == SparseType::Full) retval = octave_value ("Full"); else @@ -284,6 +291,66 @@ } /* + +%!assert(matrix_type(speye(10,10)),"Diagonal"); +%!assert(matrix_type(speye(10,10)([2:10,1],:)),"Permuted Diagonal"); +%!assert(matrix_type([[speye(10,10);sparse(1,10)],[1;sparse(9,1);1]]),"Upper"); +%!assert(matrix_type([[speye(10,10);sparse(1,10)],[1;sparse(9,1);1]](:,[2,1,3:11])),"Permuted Upper"); +%!assert(matrix_type([speye(10,10),sparse(10,1);1,sparse(1,9),1]),"Lower"); +%!assert(matrix_type([speye(10,10),sparse(10,1);1,sparse(1,9),1]([2,1,3:11],:)),"Permuted Lower"); +%!test +%! bnd=spparms("bandden"); +%! spparms("bandden",0.5); +%! a = spdiags(randn(10,3),[-1,0,1],10,10); +%! assert(matrix_type(a),"Tridiagonal"); +%! assert(matrix_type(abs(a')+abs(a)),"Tridiagonal Positive Definite"); +%! spparms("bandden",bnd); +%!test +%! bnd=spparms("bandden"); +%! spparms("bandden",0.5); +%! a = spdiags(randn(10,4),[-2:1],10,10); +%! assert(matrix_type(a),"Banded"); +%! assert(matrix_type(a'*a),"Banded Positive Definite"); +%! spparms("bandden",bnd); +%!test +%! a=[speye(10,10),[sparse(9,1);1];-1,sparse(1,9),1]; +%! assert(matrix_type(a),"Full"); +%! assert(matrix_type(a'*a),"Positive Definite"); +%!assert(matrix_type(speye(10,11)),"Rectangular"); + +%!assert(matrix_type(1i*speye(10,10)),"Diagonal"); +%!assert(matrix_type(1i*speye(10,10)([2:10,1],:)),"Permuted Diagonal"); +%!assert(matrix_type([[speye(10,10);sparse(1,10)],[1i;sparse(9,1);1]]),"Upper"); +%!assert(matrix_type([[speye(10,10);sparse(1,10)],[1i;sparse(9,1);1]](:,[2,1,3:11])),"Permuted Upper"); +%!assert(matrix_type([speye(10,10),sparse(10,1);1i,sparse(1,9),1]),"Lower"); +%!assert(matrix_type([speye(10,10),sparse(10,1);1i,sparse(1,9),1]([2,1,3:11],:)),"Permuted Lower"); +%!test +%! bnd=spparms("bandden"); +%! spparms("bandden",0.5); +%! assert(matrix_type(spdiags(1i*randn(10,3),[-1,0,1],10,10)),"Tridiagonal"); +%! a = 1i*randn(9,1);a=[[a;0],ones(10,1),[0;-a]]; +%! assert(matrix_type(spdiags(a,[-1,0,1],10,10)),"Tridiagonal Positive Definite"); +%! spparms("bandden",bnd); +%!test +%! bnd=spparms("bandden"); +%! spparms("bandden",0.5); +%! assert(matrix_type(spdiags(1i*randn(10,4),[-2:1],10,10)),"Banded"); +%! a = 1i*randn(9,2);a=[[a;[0,0]],ones(10,1),[[0;-a(:,2)],[0;0;-a(1:8,1)]]]; +%! assert(matrix_type(spdiags(a,[-2:2],10,10)),"Banded Positive Definite"); +%! spparms("bandden",bnd); +%!test +%! a=[speye(10,10),[sparse(9,1);1i];-1,sparse(1,9),1]; +%! assert(matrix_type(a),"Full"); +%! assert(matrix_type(a'*a),"Positive Definite"); +%!assert(matrix_type(speye(10,11)),"Rectangular"); + +%!test +%! a = matrix_type(spdiags(randn(10,3),[-1,0,1],10,10),"Singular"); +%! assert(matrix_type(a),"Singular"); + +*/ + +/* ;;; Local Variables: *** ;;; mode: C++ *** ;;; End: ***