Mercurial > hg > octave-nkf
diff liboctave/fDiagMatrix.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/fDiagMatrix.cc +++ b/liboctave/fDiagMatrix.cc @@ -303,6 +303,26 @@ return retval; } +FloatDiagMatrix +FloatDiagMatrix::pseudo_inverse (void) const +{ + octave_idx_type r = rows (); + octave_idx_type c = cols (); + octave_idx_type len = length (); + + FloatDiagMatrix retval (c, r); + + for (octave_idx_type i = 0; i < len; i++) + { + if (elem (i, i) != 0.0f) + retval.elem (i, i) = 1.0f / elem (i, i); + else + retval.elem (i, i) = 0.0f; + } + + return retval; +} + // diagonal matrix by diagonal matrix -> diagonal matrix operations // diagonal matrix by diagonal matrix -> diagonal matrix operations