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: ***