Incremental SVD Package
. > seqkl.m

seqkl

PURPOSE ^

SEQKL Dynamic Rank Sequential Karhunen-Loeve

SYNOPSIS ^

function varargout = seqkl(varargin)

DESCRIPTION ^

 SEQKL    Dynamic Rank Sequential Karhunen-Loeve

 Description:
  This function implements the dynamic-rank Sequential Karhunen-Loeve,
  making one pass to approximate the dominant SVD U*S*V' and (optionally)
  later passes improve on it.

 Synopsis:
  S = SEQKL(A) returns a vector S with approximations for the largest 6 singular 
  values of the matrix A. The elements of S are guaranteed to be non-negative 
  and sorted ascending.
 
  [U,S] = SEQKL(A) returns a matrix U with orthonormal columns approximating
  the left singular vectors corresponding to the approximate singular values in 
  S. S is a diagonal matrix with non-negative and non-decreasing elements.

  [U,S,V] = SEQKL(A) returns a matrix V with orthonormal columns approximating
  the right singular vectors.
 
  [U,S,V,O] = SEQKL(A) returns a structure O with statstics from the computation
  of U, S and V.
 
  [...] = SEQKL(A,K) computes approximations for the largest K singular values
  of A.
 
  [...] = SEQKL(A,KMAX,THRESH) computes approximations for up to KMAX of the
  largest singular values satisfying the relative threshhold THRESH, as follows:
            If OPTS.ttype == 'rel', preserve all singular values such that
               sigma >= thresh*min(sigma)    if whch == 'L'
               sigma <= thresh*min(sigma)    if whch == 'S'
            If OPTS.ttype == 'abs', preserve all singular values such that
               sigma >= thresh               if whch == 'L'
               sigma <= thresh               if whch == 'S'
 
  [...] = SEQKL(A,K,...,'S') computes approximations for the smallest 
  singular values.

  [...] = SEQKL(A,K,...,OPTS) allows the specification of other options, as
  listed below.
   
 Optional input:
   opts.numpasses   - number of times to pass through A
   opts.mode        - Update mode, default='auto2'
        'restart'   - compute SVD of A*W, W=[V Vperp], using last V
        'sda'       - IncSVD-based, implicit steepest descent on A'*A, variant A
        'sdb'       - IncSVD-based, implicit steepest descent on A'*A, variant B
   opts.thresh      - Tolerance for determining rank at each step. See above.
   opts.ttype       - Rank threshhold type: 'abs' or 'rel'. See above. 
                      Default='rel'
   opts.reortho     - perform two-steps of classical Gram-Schmidt during SVD update
                      Default='yes'
   opts.snaps       - array of snapshot requests, by number columns processed
   opts.kstart      - number of columns used to initial decomp (lmax)
   opts.kmin        - minimum rank tracked by method, default=1
   opts.extrak      - extra dimension tracked.
                      applied after thresh-chosen k, before accounting for kmax.
   opts.finalttype  - final pass: same as opts.ttype, default=opts.ttype
   opts.finalthresh - final pass: same as opts.fthresh, default=opts.fthresh
   opts.finalkmin   - final pass: same as opts.kmin, default=opts.kmin
   opts.finalkmax   - final pass: same as opts.kmax, default=kmax
   opts.lmin        - minimum value for l at each step, default=1
   opts.lmax        - maximum value for l at each step, default=kmax/sqrt(2)
   opts.disp        - print while running or not, default=0 
           0  -  silent
           1  -  one-liners
           2  -  chatty
   opts.debug: debugging checks and output [{0} | 1]. Expensive!!!
   opts.paramtest: parameter test          [{0} | 1]
           do not actually run the algorithm, but instead test parameters,
           set the defaults, and return them in a struct
           Example: params = seqkl(A,kmax,thresh,opts);
   opts.[USV]    - initial factorization for starting multipass method:
          .U    - initial left vectors    (m by o) 
          .S    - initial left vectors    (o by 1) 
          .V    - initial left vectors    (n by o)

 Example:
  data = randn(1000,100);
  [U,S,V,OPS] = seqkl(data,10,.20,'S');

 See also EIG, SVD, RSVD

CROSS-REFERENCE INFORMATION ^

This function calls:
This function is called by:

Generated on Fri 11-Apr-2008 15:16:44 by m2html © 2003