rowcomp row compression, range

## Syntax

    [W,rk]=rowcomp(A [,flag [,tol]])

## Arguments

A

  real or complex matrix

flag

  optional character string, with possible values `'svd'` or `'qr'`. The default value is `'svd'`.

tol

  optional real non negative number. The default value is `sqrt(%eps)*norm(A,1)`.

W

  square non-singular matrix (change of basis)

rk

  integer (rank of `A`)

## Description

Row compression of `A`. `Ac = W*A` is a row compressed matrix: i.e. `Ac=[Af;0]` with `Af` full row rank.

`flag` and `tol` are optional parameters: `flag='qr'` or `'svd'` (default `'svd'`).

`tol` is a tolerance parameter.

The `rk` first columns of `W'` span the range of `A`.

The `rk` first (top) rows of `W` span the row range of `A`.

A non zero vector `x` belongs to range(`A`) iff `W*x` is row compressed in accordance with `Ac` i.e the norm of its last components is small w.r.t its first components.

## Examples

    A=rand(5,2)*rand(2,4);              // 4 col. vectors, 2 independent.
    [X,dim]=rowcomp(A);Xp=X';
    svd([Xp(:,1:dim),A])                //span(A) = span(Xp(:,1:dim)
    x=A*rand(4,1);                      //x belongs to span(A)
    y=X*x
    norm(y(dim+1:$))/norm(y(1:dim))     // small

## See also

- colcomp
- fullrf
- fullrfk

## Used Functions

The `rowcomp` function is based on the svd or qr decompositions.