Toast++  1.0.2 (r.539)
Forward and inverse modelling in optical tomography
Public Member Functions | Friends | List of all members
TCoordMatrix< MT > Class Template Reference

Coordinate-storage sparse matrix class. More...

#include <cdmatrix.h>

Inheritance diagram for TCoordMatrix< MT >:
TGenericSparseMatrix< MT > TMatrix< MT >

Public Member Functions

 TCoordMatrix ()
 Creates a coordinate matrix of dimension 0 x 0.
 
 TCoordMatrix (int rows, int cols)
 Creates a coordinate matrix of dimension rows x cols. More...
 
 TCoordMatrix (int rows, int cols, int vals, idxtype *_rowidx, idxtype *_colidx, MT *_data=0)
 
 TCoordMatrix (const TCoordMatrix< MT > &m)
 
MatrixStorage StorageType () const
 Matrix storage class. More...
 
void New (int rows, int cols)
 Reset the matrix dimensions. More...
 
void Unlink ()
 
void Initialise (int nv, idxtype *_rowidx, idxtype *_colidx, MT *data=0)
 
TCoordMatrixoperator= (const TCoordMatrix< MT > &m)
 
MT & operator() (int r, int c)
 
MT Get (int r, int c) const
 Retrieve a matrix element. More...
 
bool Exists (int r, int c) const
 Checks allocation of a matrix element. More...
 
TVector< MT > Row (int r) const
 Returns a vector containing a copy of row `r'. More...
 
TVector< MT > Col (int c) const
 Returns a vector containing a copy of column 'c'. More...
 
int SparseRow (int r, idxtype *ci, MT *rv) const
 Returns a row of the matrix in sparse format. More...
 
void ColScale (const TVector< MT > &scale)
 
void RowScale (const TVector< MT > &scale)
 
MT GetNext (int &r, int &c) const
 
void Ax (const TVector< MT > &x, TVector< MT > &b) const
 
void Ax (const TVector< MT > &x, TVector< MT > &b, int r1, int r2) const
 
void ATx (const TVector< MT > &x, TVector< MT > &b) const
 
void Transpone ()
 
MT & Val (int i)
 
const MT & Val (int i) const
 
void Sort (bool roworder=true) const
 
const idxtype * RowIndex () const
 
const idxtype * ColIndex () const
 
idxtype RowIndex (int i) const
 
idxtype ColIndex (int i) const
 
- Public Member Functions inherited from TGenericSparseMatrix< MT >
 TGenericSparseMatrix ()
 Create a sparse matrix of size 0 x 0.
 
 TGenericSparseMatrix (int rows, int cols, int nv=0, const MT *data=0)
 Create a sparse matrix of logical size rows x cols. More...
 
 TGenericSparseMatrix (int rows, int cols, int nv, MT *data, CopyMode cmode=DEEP_COPY)
 
 TGenericSparseMatrix (const TGenericSparseMatrix< MT > &m)
 Constructs a matrix as a copy of 'm'.
 
virtual ~TGenericSparseMatrix ()
 Destructor.
 
void Initialise (int nv, const MT *data)
 
void Initialise (int nv, MT *data, CopyMode cmode)
 
void Zero ()
 
int nVal () const
 
MT & Val (int i)
 
MT * ValPtr ()
 
const MT * ValPtr () const
 
virtual void Add (int r, int c, const MT &val)
 
TGenericSparseMatrixoperator*= (const MT &sc)
 
TVector< MT > operator* (const TVector< MT > &x) const
 
TVector< MT > ATx (const TVector< MT > &x) const
 
double FillFraction () const
 
virtual void Display (std::ostream &os) const
 
virtual void PrintFillinGraph (const char *fname, int maxdim=600, bool binary=true, bool antialias=true)
 
virtual void ExportRCV (std::ostream &os)
 Write sparse matrix to ASCII output stream. More...
 
- Public Member Functions inherited from TMatrix< MT >
 TMatrix ()
 Create a matrix of size 0 x 0.
 
 TMatrix (int nrows, int ncols)
 Create a matrix of logical size nrows x ncols. More...
 
 TMatrix (const TMatrix< MT > &m)
 Create a matrix as a copy of another matrix. More...
 
virtual ~TMatrix ()
 Destroy the matrix. More...
 
int Dim (RC rc) const
 Return a matrix dimension. More...
 
int nRows () const
 Return number of rows of the matrix. More...
 
int nCols () const
 Return number of columns of the matrix. More...
 
bool isSparse () const
 Return sparse storage flag. More...
 
bool isFull () const
 Return dense storage flag. More...
 
MT operator() (int r, int c) const
 Matrix element access (read only) More...
 
virtual void SetRow (int r, const TVector< MT > &row)
 Substitute a row of the matrix. More...
 
virtual TVector< MT > Diag () const
 Returns the matrix diagonal as a vector. More...
 
virtual TVector< MT > ColNorm () const
 Returns vector of column norms. More...
 
TVector< MT > operator* (const TVector< MT > &x) const
 
TVector< MT > ATx (const TVector< MT > &x) const
 
virtual MT RowMult (int r, MT *x) const
 
void Export (std::ostream &os) const
 Write matrix to ASCII stream. More...
 
void Print (std::ostream &os=std::cout, int n=80) const
 
void PrintNzeroGraph (char *fname)
 
virtual int pcg (const TVector< MT > &b, TVector< MT > &x, double &tol, TPreconditioner< MT > *precon=0, int maxit=0) const
 
virtual void pcg (const TVector< MT > *b, TVector< MT > *x, int nrhs, double tol, int maxit=0, TPreconditioner< MT > *precon=0, IterativeSolverResult *res=0) const
 
virtual int bicgstab (const TVector< MT > &b, TVector< MT > &x, double &tol, TPreconditioner< MT > *precon=0, int maxit=0) const
 
virtual void bicgstab (const TVector< MT > *b, TVector< MT > *x, int nrhs, double tol, int maxit=0, TPreconditioner< MT > *precon=0, IterativeSolverResult *res=0) const
 
template<>
int pcg (const FVector &b, FVector &x, double &tol, TPreconditioner< float > *precon, int maxit) const
 
template<>
void pcg (const FVector *b, FVector *x, int nrhs, double tol, int maxit, TPreconditioner< float > *precon, IterativeSolverResult *res) const
 
template<>
int bicgstab (const FVector &b, FVector &x, double &tol, TPreconditioner< float > *precon, int maxit) const
 
template<>
void bicgstab (const FVector *b, FVector *x, int nrhs, double tol, int maxit, TPreconditioner< float > *precon, IterativeSolverResult *res) const
 

Friends

class TCompRowMatrix< MT >
 
TCoordMatrix< MT > cath (const TCoordMatrix< MT > &A, const TCoordMatrix< MT > &B)
 Concatenate two matrices horizontally. More...
 
TCoordMatrix< MT > catv (const TCoordMatrix< MT > &A, const TCoordMatrix< MT > &B)
 Concatenate two matrices vertically. More...
 
std::istream & operator>> (std::istream &is, TCoordMatrix< MT > &m)
 
std::ostream & operator<< (std::ostream &os, const TCoordMatrix< MT > &m)
 

Additional Inherited Members

- Public Types inherited from TMatrix< MT >
enum  RC { ROW, COL }
 
- Static Public Member Functions inherited from TGenericSparseMatrix< MT >
static void GlobalSelectIterativeSolver (IterativeMethod method)
 
static void GlobalSelectIterativeSolver_complex (IterativeMethod method)
 
static IterativeMethod GetGlobalIterativeSolver ()
 
static IterativeMethod GetGlobalIterativeSolver_complex ()
 
- Protected Member Functions inherited from TGenericSparseMatrix< MT >
void Append (MT v=0)
 
- Protected Attributes inherited from TGenericSparseMatrix< MT >
MT * val
 
int nbuf
 
int nval
 
- Protected Attributes inherited from TMatrix< MT >
int rows
 
int cols
 

Detailed Description

template<class MT>
class TCoordMatrix< MT >

Coordinate-storage sparse matrix class.

This matrix class represents its data by a data array 'val' of length nz, a column index array 'colidx' of length nz, and a row index array 'rowidx' of length nz, where nz is the number of allocated elements. Elements can be stored unsorted, which makes it easier to dynamically re-allocate storage space, but reduces efficiency of various methods. Sorting can be applied once the matrix structure is fixed to improve performance.

Constructor & Destructor Documentation

template<class MT>
TCoordMatrix< MT >::TCoordMatrix ( int  rows,
int  cols 
)

Creates a coordinate matrix of dimension rows x cols.

Parameters
rowsnumber of matrix rows
colsnumber of matrix columns
Note
No data block is allocated, i.e. all matrix elements have a value of zero.

Member Function Documentation

template<class MT>
TVector<MT> TCoordMatrix< MT >::Col ( int  c) const
virtual

Returns a vector containing a copy of column 'c'.

Parameters
ccolumn index (>= 0)
Returns
vector containing column c
Note
Sparse matrix types expand to a dense column, with missing entries filled with zeros, so this can be used as a "scatter" operation.
See Also
Row

Implements TMatrix< MT >.

template<class MT>
bool TCoordMatrix< MT >::Exists ( int  r,
int  c 
) const
virtual

Checks allocation of a matrix element.

Parameters
rrow index (>= 0)
ccolumn index (>= 0)
Returns
true if memory space is allocated for the element, false if not.

Implements TGenericSparseMatrix< MT >.

template<class MT>
MT TCoordMatrix< MT >::Get ( int  r,
int  c 
) const
virtual

Retrieve a matrix element.

Parameters
rmatrix row (0 <= r < nRows())
cmatrix column (0 <= c < nCols())
Returns
matrix element (*this)r,c
Note
This is a read operation and returns the element value. For writing operations, use Put() or operator().
See Also
operator()

Implements TGenericSparseMatrix< MT >.

template<class MT>
void TCoordMatrix< MT >::New ( int  nrows,
int  ncols 
)
virtual

Reset the matrix dimensions.

Parameters
nrowsnumber of matrix rows
ncolsnumber of matrix columns
Note
This method unlinks the matrix from its current data block by calling Unlink(), then resets its logical dimensions by calling TMatrix::New().
To allocate a new data block for the matrix after New(), use Initialise().
See Also
Unlink, Initialise, TMatrix::New

Reimplemented from TGenericSparseMatrix< MT >.

template<class MT>
TVector<MT> TCoordMatrix< MT >::Row ( int  r) const
virtual

Returns a vector containing a copy of row `r'.

Parameters
rrow index (>= 0)
Returns
vector containing row r
Note
Sparse matrix types expand to a dense row, with missing entries filled with zeros, so this can be used as a "scatter" operation.
See Also
SparseRow, SetRow

Implements TMatrix< MT >.

template<class MT>
int TCoordMatrix< MT >::SparseRow ( int  r,
idxtype *  colidx,
MT *  val 
) const
virtual

Returns a row of the matrix in sparse format.

Returns a list of column indices and values for all allocated entries of row r. This is only really useful for sparse matrix types. For dense matrices this simply returns the complete row, with indices 0, 1, 2, ... n-1

Parameters
rrow index (>= 0)
colidxpointer to array of column indices
valpointer to array of element values
Returns
Actual number of allocated matrix entries in the row.
Note
The arrays must be allocated by the caller and be of sufficient size.
See Also
Row, SetRow

Implements TMatrix< MT >.

template<class MT>
MatrixStorage TCoordMatrix< MT >::StorageType ( ) const
inlinevirtual

Matrix storage class.

Returns
storage class identifier

Implements TMatrix< MT >.

References MATRIX_COORD.

Friends And Related Function Documentation

template<class MT>
TCoordMatrix<MT> cath ( const TCoordMatrix< MT > &  A,
const TCoordMatrix< MT > &  B 
)
friend

Concatenate two matrices horizontally.

Parameters
Afirst matrix argument
Bsecond matrix argument
Returns
Result of concatenation [A B]
Note
A and B must have the same number of rows.
This method has the functionality of the MATLAB construct C = (A,B)
template<class MT>
TCoordMatrix<MT> catv ( const TCoordMatrix< MT > &  A,
const TCoordMatrix< MT > &  B 
)
friend

Concatenate two matrices vertically.

Parameters
Afirst matrix argument
Bsecond matrix argument
Returns
Result of concatenation

\[ C = \left[ \begin{array}{c} A\\B \end{array} \right] \]

Note
A and B must have the same number of columns
This method has the functionality of the MATLAB construct C = (A;B)

The documentation for this class was generated from the following file: