diff liboctave/dDiagMatrix.cc @ 8840:c690e3772583

support diagonal matrices in pinv
author Jaroslav Hajek <highegg@gmail.com>
date Mon, 23 Feb 2009 14:54:56 +0100
parents 20dfb885f877
children eb63fbe60fab
line wrap: on
line diff
--- a/liboctave/dDiagMatrix.cc	Mon Feb 23 13:55:44 2009 +0100
+++ b/liboctave/dDiagMatrix.cc	Mon Feb 23 14:54:56 2009 +0100
@@ -303,6 +303,26 @@
   return retval;
 }
 
+DiagMatrix
+DiagMatrix::pseudo_inverse (void) const
+{
+  octave_idx_type r = rows ();
+  octave_idx_type c = cols ();
+  octave_idx_type len = length ();
+
+  DiagMatrix retval (c, r);
+
+  for (octave_idx_type i = 0; i < len; i++)
+    {
+      if (elem (i, i) != 0.0)
+        retval.elem (i, i) = 1.0 / elem (i, i);
+      else
+        retval.elem (i, i) = 0.0;
+    }
+
+  return retval;
+}
+
 // diagonal matrix by diagonal matrix -> diagonal matrix operations
 
 // diagonal matrix by diagonal matrix -> diagonal matrix operations