Mercurial > hg > octave-nkf
diff scripts/linear-algebra/orth.m @ 3141:292ff0bf484b
[project @ 1998-02-03 08:11:07 by jwe]
author | jwe |
---|---|
date | Tue, 03 Feb 1998 08:11:22 +0000 |
parents | 8b262e771614 |
children | f16c2ce14886 |
line wrap: on
line diff
--- a/scripts/linear-algebra/orth.m +++ b/scripts/linear-algebra/orth.m @@ -33,30 +33,36 @@ function retval = orth (A, tol) - [U, S, V] = svd (A); + if (nargin == 1 || nargin == 2) - [rows, cols] = size (A); + [U, S, V] = svd (A); - [S_nr, S_nc] = size (S); + [rows, cols] = size (A); - if (S_nr == 1 || S_nc == 1) - s = S(1); - else - s = diag (S); - endif + [S_nr, S_nc] = size (S); + + if (S_nr == 1 || S_nc == 1) + s = S(1); + else + s = diag (S); + endif - if (nargin == 1) - tol = max (size (A)) * s (1) * eps; - elseif (nargin != 2) - usage ("orth (A [, tol])"); - endif + if (nargin == 1) + tol = max (size (A)) * s (1) * eps; + endif + + rank = sum (s > tol); - rank = sum (s > tol); + if (rank > 0) + retval = -U (:, 1:rank); + else + retval = zeros (rows, 0); + endif - if (rank > 0) - retval = -U (:, 1:rank); else - retval = zeros (rows, 0); + + usage ("orth (a [, tol]"); + endif endfunction