Mercurial > hg > octave-max
changeset 3269:7c55f5991889
[project @ 1999-09-21 04:15:41 by jwe]
author | jwe |
---|---|
date | Tue, 21 Sep 1999 04:15:46 +0000 |
parents | fdc7dd08cd85 |
children | fe641c25df90 |
files | scripts/general/linspace.m scripts/linear-algebra/pinv.m |
diffstat | 2 files changed, 0 insertions(+), 115 deletions(-) [+] |
line wrap: on
line diff
deleted file mode 100644 --- a/scripts/general/linspace.m +++ /dev/null @@ -1,60 +0,0 @@ -## Copyright (C) 1996, 1997 John W. Eaton -## -## This file is part of Octave. -## -## Octave is free software; you can redistribute it and/or modify it -## under the terms of the GNU General Public License as published by the -## Free Software Foundation; either version 2, or (at your option) any -## later version. -## -## Octave is distributed in the hope that it will be useful, but WITHOUT -## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -## for more details. -## -## You should have received a copy of the GNU General Public License -## along with Octave; see the file COPYING. If not, write to the Free -## Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - -## usage: linspace (x1, x2, n) -## -## Return a vector of n equally spaced points between x1 and x2 -## inclusive. -## -## If the final argument is omitted, n = 100 is assumed. -## -## All three arguments must be scalars. -## -## See also: logspace - -## Author: jwe - -function retval = linspace (x1, x2, n) - - if (nargin == 2) - npoints = 100; - elseif (nargin == 3) - if (length (n) == 1) - npoints = fix (n); - else - error ("linspace: arguments must be scalars"); - endif - else - usage ("linspace (x1, x2 [, n])"); - endif - - if (npoints < 2) - error ("linspace: npoints must be greater than 2"); - endif - - ## In some cases x1 + delta * (npoints - 1) will not be equal to x2, - ## so we cheat and force the last value to be x2. - - if (length (x1) == 1 && length (x2) == 1) - delta = (x2 - x1) / (npoints - 1); - retval = [x1+(0:npoints-2)*delta, x2]; - else - error ("linspace: arguments must be scalars"); - endif - -endfunction
deleted file mode 100644 --- a/scripts/linear-algebra/pinv.m +++ /dev/null @@ -1,55 +0,0 @@ -## Copyright (C) 1996, 1997 John W. Eaton -## -## This file is part of Octave. -## -## Octave is free software; you can redistribute it and/or modify it -## under the terms of the GNU General Public License as published by the -## Free Software Foundation; either version 2, or (at your option) any -## later version. -## -## Octave is distributed in the hope that it will be useful, but WITHOUT -## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -## for more details. -## -## You should have received a copy of the GNU General Public License -## along with Octave; see the file COPYING. If not, write to the Free -## Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - -## usage: pinv (X, tol) -## -## Returns the pseudoinverse of X; singular values less than tol are -## ignored. -## -## If the second argument is omitted, it is assumed that -## -## tol = max (size (X)) * sigma_max (X) * eps, -## -## where sigma_max(X) is the maximal singular value of X. - -## Author: Kurt Hornik (hornik@neuro.tuwien.ac.at> -## Created: March 1993. -## Adapted-By: jwe - -function retval = pinv (X, tol) - - if (nargin < 1 || nargin > 2) - error ("usage: pinv (X [, tol])"); - endif - - [U, S, V] = svd(X); - s = diag(S); - - if (nargin == 1) - tol = max (size (X)) * s (1) * eps; - endif - - r = sum (s > tol); - if (r == 0) - retval = zeros (X'); - else - D = diag (ones (r, 1) ./ s (1:r)); - retval = V (:, 1:r) * D * U (:, 1:r)'; - endif - -endfunction