Public Member Functions | Private Attributes | Friends | List of all members
PLMD::Matrix< T > Class Template Reference

This class stores a full matrix and allows one to do some simple matrix operations. More...

#include <Matrix.h>

Inheritance diagram for PLMD::Matrix< T >:
Inheritance graph
[legend]

Public Member Functions

 Matrix (const unsigned nr=0, const unsigned nc=0)
 
 Matrix (const Matrix< T > &t)
 
void resize (const unsigned nr, const unsigned nc)
 Resize the matrix. More...
 
unsigned nrows () const
 Return the number of rows. More...
 
unsigned ncols () const
 Return the number of columns. More...
 
operator() (const unsigned &i, const unsigned &j) const
 Return element i,j of the matrix. More...
 
T & operator() (const unsigned &i, const unsigned &j)
 Return a referenre to element i,j of the matrix. More...
 
Matrix< T > & operator= (const T &v)
 Set all elements of the matrix equal to the value of v. More...
 
Matrix< T > & operator= (const Matrix< T > &m)
 Set the Matrix equal to another Matrix. More...
 
Matrix< T > & operator= (const std::vector< T > &v)
 Set the Matrix equal to the value of a standard vector - used for readin. More...
 
Matrix< T > operator+= (const T &v)
 Add v to all elements of the Matrix. More...
 
Matrix< T > operator*= (const T &v)
 Multiply all elements by v. More...
 
Matrix< T > & operator+= (const Matrix< T > &m)
 Matrix addition. More...
 
Matrix< T > operator-= (const T &v)
 Subtract v from all elements of the Matrix. More...
 
Matrix< T > & operator-= (const Matrix< T > &m)
 Matrix subtraction. More...
 
unsigned isSymmetric () const
 Test if the matrix is symmetric or not. More...
 
Row operator[] (unsigned i)
 access element (with [][] syntax) More...
 
Const_row operator[] (unsigned i) const
 access element (with [][] syntax) More...
 

Private Attributes

unsigned sz
 Number of elements in matrix (nrows*ncols) More...
 
unsigned rw
 Number of rows in matrix. More...
 
unsigned cl
 Number of columns in matrix. More...
 
std::vector< T > data
 The data in the matrix. More...
 

Friends

template<typename U >
Matrix< U > operator* (U &, const Matrix< U > &)
 Multiply matrix by scalar. More...
 
template<typename U >
void mult (const Matrix< U > &, const Matrix< U > &, Matrix< U > &)
 Matrix matrix multiply. More...
 
template<typename U >
void mult (const Matrix< U > &, const std::vector< U > &, std::vector< U > &)
 Matrix times a std::vector. More...
 
template<typename U >
void mult (const std::vector< U > &, const Matrix< U > &, std::vector< U > &)
 std::vector times a Matrix More...
 
template<typename U >
void transpose (const Matrix< U > &, Matrix< U > &)
 Matrix transpose. More...
 
template<typename U >
Logoperator<< (Log &, const Matrix< U > &)
 Output the entire matrix on a single line. More...
 
template<typename U >
void matrixOut (Log &, const Matrix< U > &)
 Output the Matrix in matrix form. More...
 
template<typename U >
int diagMat (const Matrix< U > &, std::vector< double > &, Matrix< double > &)
 Diagonalize a symmetric matrix - returns zero if diagonalization worked. More...
 
template<typename U >
int pseudoInvert (const Matrix< U > &, Matrix< double > &)
 Calculate the Moore-Penrose Pseudoinverse of a matrix. More...
 
template<typename U >
int logdet (const Matrix< U > &, double &)
 Calculate the logarithm of the determinant of a symmetric matrix - returns zero if succesfull. More...
 
template<typename U >
int Invert (const Matrix< U > &, Matrix< double > &)
 Invert a matrix (works for both symmetric and assymetric matrices) - returns zero if sucesfull. More...
 
template<typename U >
void cholesky (const Matrix< U > &, Matrix< U > &)
 Do a cholesky decomposition of a matrix. More...
 
template<typename U >
void chol_elsolve (const Matrix< U > &, const std::vector< U > &, std::vector< U > &)
 Solve a system of equations using the cholesky decomposition. More...
 

Detailed Description

template<typename T>
class PLMD::Matrix< T >

This class stores a full matrix and allows one to do some simple matrix operations.

Constructor & Destructor Documentation

◆ Matrix() [1/2]

template<typename T>
PLMD::Matrix< T >::Matrix ( const unsigned  nr = 0,
const unsigned  nc = 0 
)
inline

◆ Matrix() [2/2]

template<typename T>
PLMD::Matrix< T >::Matrix ( const Matrix< T > &  t)
inline

Member Function Documentation

◆ isSymmetric()

template<typename T>
unsigned PLMD::Matrix< T >::isSymmetric ( ) const
inline

Test if the matrix is symmetric or not.

◆ ncols()

template<typename T>
unsigned PLMD::Matrix< T >::ncols ( ) const
inline

Return the number of columns.

◆ nrows()

template<typename T>
unsigned PLMD::Matrix< T >::nrows ( ) const
inline

Return the number of rows.

◆ operator()() [1/2]

template<typename T>
T PLMD::Matrix< T >::operator() ( const unsigned &  i,
const unsigned &  j 
) const
inline

Return element i,j of the matrix.

◆ operator()() [2/2]

template<typename T>
T& PLMD::Matrix< T >::operator() ( const unsigned &  i,
const unsigned &  j 
)
inline

Return a referenre to element i,j of the matrix.

◆ operator*=()

template<typename T>
Matrix<T> PLMD::Matrix< T >::operator*= ( const T &  v)
inline

Multiply all elements by v.

◆ operator+=() [1/2]

template<typename T>
Matrix<T> PLMD::Matrix< T >::operator+= ( const T &  v)
inline

Add v to all elements of the Matrix.

◆ operator+=() [2/2]

template<typename T>
Matrix<T>& PLMD::Matrix< T >::operator+= ( const Matrix< T > &  m)
inline

Matrix addition.

◆ operator-=() [1/2]

template<typename T>
Matrix<T> PLMD::Matrix< T >::operator-= ( const T &  v)
inline

Subtract v from all elements of the Matrix.

◆ operator-=() [2/2]

template<typename T>
Matrix<T>& PLMD::Matrix< T >::operator-= ( const Matrix< T > &  m)
inline

Matrix subtraction.

◆ operator=() [1/3]

template<typename T>
Matrix<T>& PLMD::Matrix< T >::operator= ( const T &  v)
inline

Set all elements of the matrix equal to the value of v.

◆ operator=() [2/3]

template<typename T>
Matrix<T>& PLMD::Matrix< T >::operator= ( const Matrix< T > &  m)
inline

Set the Matrix equal to another Matrix.

◆ operator=() [3/3]

template<typename T>
Matrix<T>& PLMD::Matrix< T >::operator= ( const std::vector< T > &  v)
inline

Set the Matrix equal to the value of a standard vector - used for readin.

◆ operator[]() [1/2]

MatrixSquareBracketsAccess< Matrix< T > , T , unsigned , unsigned >::Row PLMD::MatrixSquareBracketsAccess< Matrix< T > , T , unsigned , unsigned >::operator[] ( unsigned  i)
inherited

access element (with [][] syntax)

◆ operator[]() [2/2]

MatrixSquareBracketsAccess< Matrix< T > , T , unsigned , unsigned >::Const_row PLMD::MatrixSquareBracketsAccess< Matrix< T > , T , unsigned , unsigned >::operator[] ( unsigned  i) const
inherited

access element (with [][] syntax)

◆ resize()

template<typename T>
void PLMD::Matrix< T >::resize ( const unsigned  nr,
const unsigned  nc 
)
inline

Resize the matrix.

Friends And Related Function Documentation

◆ chol_elsolve

template<typename T>
template<typename U >
void chol_elsolve ( const Matrix< U > &  ,
const std::vector< U > &  ,
std::vector< U > &   
)
friend

Solve a system of equations using the cholesky decomposition.

◆ cholesky

template<typename T>
template<typename U >
void cholesky ( const Matrix< U > &  ,
Matrix< U > &   
)
friend

Do a cholesky decomposition of a matrix.

◆ diagMat

template<typename T>
template<typename U >
int diagMat ( const Matrix< U > &  ,
std::vector< double > &  ,
Matrix< double > &   
)
friend

Diagonalize a symmetric matrix - returns zero if diagonalization worked.

◆ Invert

template<typename T>
template<typename U >
int Invert ( const Matrix< U > &  ,
Matrix< double > &   
)
friend

Invert a matrix (works for both symmetric and assymetric matrices) - returns zero if sucesfull.

◆ logdet

template<typename T>
template<typename U >
int logdet ( const Matrix< U > &  ,
double &   
)
friend

Calculate the logarithm of the determinant of a symmetric matrix - returns zero if succesfull.

◆ matrixOut

template<typename T>
template<typename U >
void matrixOut ( Log ,
const Matrix< U > &   
)
friend

Output the Matrix in matrix form.

◆ mult [1/3]

template<typename T>
template<typename U >
void mult ( const Matrix< U > &  ,
const Matrix< U > &  ,
Matrix< U > &   
)
friend

Matrix matrix multiply.

◆ mult [2/3]

template<typename T>
template<typename U >
void mult ( const Matrix< U > &  ,
const std::vector< U > &  ,
std::vector< U > &   
)
friend

Matrix times a std::vector.

◆ mult [3/3]

template<typename T>
template<typename U >
void mult ( const std::vector< U > &  ,
const Matrix< U > &  ,
std::vector< U > &   
)
friend

std::vector times a Matrix

◆ operator*

template<typename T>
template<typename U >
Matrix<U> operator* ( U &  ,
const Matrix< U > &   
)
friend

Multiply matrix by scalar.

◆ operator<<

template<typename T>
template<typename U >
Log& operator<< ( Log ,
const Matrix< U > &   
)
friend

Output the entire matrix on a single line.

◆ pseudoInvert

template<typename T>
template<typename U >
int pseudoInvert ( const Matrix< U > &  ,
Matrix< double > &   
)
friend

Calculate the Moore-Penrose Pseudoinverse of a matrix.

◆ transpose

template<typename T>
template<typename U >
void transpose ( const Matrix< U > &  ,
Matrix< U > &   
)
friend

Matrix transpose.

Member Data Documentation

◆ cl

template<typename T>
unsigned PLMD::Matrix< T >::cl
private

Number of columns in matrix.

◆ data

template<typename T>
std::vector<T> PLMD::Matrix< T >::data
private

The data in the matrix.

◆ rw

template<typename T>
unsigned PLMD::Matrix< T >::rw
private

Number of rows in matrix.

◆ sz

template<typename T>
unsigned PLMD::Matrix< T >::sz
private

Number of elements in matrix (nrows*ncols)


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