Main MRPT website > C++ reference
MRPT logo
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes

mrpt::math::CMatrixTemplate< T > Class Template Reference


Detailed Description

template<class T>
class mrpt::math::CMatrixTemplate< T >

This template class provides the basic functionality for a general 2D any-size, resizable container of numerical or non-numerical elements.

NOTES:

Note:
Memory blocks for each row are 16-bytes aligned (since MRPT 0.7.0).
See also:
CMatrixTemplateNumeric

Definition at line 58 of file CMatrixTemplate.h.

#include <mrpt/math/CMatrixTemplate.h>

Inheritance diagram for mrpt::math::CMatrixTemplate< T >:
Inheritance graph
[legend]

List of all members.

Public Types

typedef T value_type
 The type of the matrix elements.
typedef T & reference
typedef const T & const_reference
typedef std::size_t size_type
typedef std::ptrdiff_t difference_type

Public Member Functions

template<size_t N>
void ASSERT_ENOUGHROOM (size_t r, size_t c) const
 Checks whether the rows [r-N,r+N] and the columns [c-N,c+N] are present in the matrix.
void fillAll (const T &val)
void swap (CMatrixTemplate< T > &o)
 Swap with another matrix very efficiently (just swaps a pointer and two integer values).
 CMatrixTemplate (const CMatrixTemplate &m)
 Constructors.
 CMatrixTemplate (size_t row=1, size_t col=1)
 CMatrixTemplate (const CMatrixTemplate &m, const size_t cropRowCount, const size_t cropColCount)
 Copy constructor & crop from another matrix.
template<typename V , size_t N>
 CMatrixTemplate (size_t row, size_t col, V(&theArray)[N])
 Constructor from a given size and a C array.
template<typename V >
 CMatrixTemplate (size_t row, size_t col, const V &theVector)
 Constructor from a given size and a STL container (std::vector, std::list,...) with the initial values.
virtual ~CMatrixTemplate ()
 Destructor.
CMatrixTemplateoperator= (const CMatrixTemplate &m)
 Assignment operator from another matrix.
template<typename V , size_t N>
CMatrixTemplateoperator= (V(&theArray)[N])
 Assignment operator for initializing from a C array (The matrix must be set to the correct size before invoking this asignament)
size_t getRowCount () const
 Number of rows in the matrix.
size_t getColCount () const
 Number of columns in the matrix.
CMatrixTemplateSize size () const
 Get a 2-vector with [NROWS NCOLS] (as in MATLAB command size(x))
void setSize (size_t row, size_t col, bool zeroNewElements=false)
 Changes the size of matrix, maintaining the previous contents.
void resize (const CMatrixTemplateSize &siz, bool zeroNewElements=false)
 This method just checks has no effects in this class, but raises an exception if the expected size does not match.
T & operator() (size_t row, size_t col)
 Subscript operator to get/set individual elements.
const T & operator() (size_t row, size_t col) const
 Subscript operator to get individual elements.
T & operator() (size_t ith)
 Subscript operator to get/set an individual element from a row or column matrix.
operator() (size_t ith) const
 Subscript operator to get/set an individual element from a row or column matrix.
void set_unsafe (size_t row, size_t col, const T &v)
 Fast but unsafe method to write a value in the matrix.
const T & get_unsafe (size_t row, size_t col) const
 Fast but unsafe method to read a value from the matrix.
T & get_unsafe (size_t row, size_t col)
 Fast but unsafe method to get a reference from the matrix.
T * get_unsafe_row (size_t row)
 Fast but unsafe method to obtain a pointer to a given row of the matrix (Use only in time critical applications)
const T * get_unsafe_row (size_t row) const
 Fast but unsafe method to obtain a pointer to a given row of the matrix (Use only in critical applications)
CMatrixTemplate< T > operator() (const size_t row1, const size_t row2, const size_t col1, const size_t col2) const
 Subscript operator to get a submatrix.
void extractSubmatrix (const size_t row1, const size_t row2, const size_t col1, const size_t col2, CMatrixTemplate< T > &out) const
 Get a submatrix, given its bounds.
template<class Derived >
void extractSubmatrix (const size_t row1, const size_t row2, const size_t col1, const size_t col2, Eigen::MatrixBase< Derived > &out) const
void extractRows (size_t firstRow, size_t lastRow, CMatrixTemplate< T > &out) const
 Gets a series of contiguous rows.
void extractColumns (size_t firstCol, size_t lastCol, CMatrixTemplate< T > &out) const
 Gets a series of contiguous columns.
void extractCol (size_t nCol, std::vector< T > &out, int startingRow=0) const
 Returns a given column to a vector (without modifying the matrix)

Exceptions:
std::exceptionOn index out of bounds.

void extractCol (size_t nCol, CMatrixTemplate< T > &out, int startingRow=0) const
 Gets a given column to a vector (without modifying the matrix)

Exceptions:
std::exceptionOn index out of bounds.

void appendRow (const std::vector< T > &in)
 Appends a new row to the MxN matrix from a 1xN vector.
void appendCol (const std::vector< T > &in)
 Appends a new column to the matrix from a vector.
void insertCol (size_t nCol, const std::vector< T > &in)
 Inserts a column from a vector, replacing the current contents of that column.
void getAsVector (std::vector< T > &out) const
 Returns a vector containing the matrix's values.

Protected Member Functions

void realloc (size_t row, size_t col, bool newElementsToZero=false)
 Internal use only: It reallocs the memory for the 2D matrix, maintaining the previous contents if posible.

Protected Attributes

T ** m_Val
size_t m_Rows
size_t m_Cols

Member Typedef Documentation

template<class T>
typedef const T& mrpt::math::CMatrixTemplate< T >::const_reference

Definition at line 64 of file CMatrixTemplate.h.

template<class T>
typedef std::ptrdiff_t mrpt::math::CMatrixTemplate< T >::difference_type

Definition at line 66 of file CMatrixTemplate.h.

template<class T>
typedef T& mrpt::math::CMatrixTemplate< T >::reference

Definition at line 63 of file CMatrixTemplate.h.

template<class T>
typedef std::size_t mrpt::math::CMatrixTemplate< T >::size_type

Definition at line 65 of file CMatrixTemplate.h.

template<class T>
typedef T mrpt::math::CMatrixTemplate< T >::value_type

The type of the matrix elements.

Definition at line 62 of file CMatrixTemplate.h.


Constructor & Destructor Documentation

template<class T>
mrpt::math::CMatrixTemplate< T >::CMatrixTemplate ( const CMatrixTemplate< T > &  m) [inline]

Constructors.

Definition at line 146 of file CMatrixTemplate.h.

template<class T>
mrpt::math::CMatrixTemplate< T >::CMatrixTemplate ( size_t  row = 1,
size_t  col = 1 
) [inline]

Definition at line 151 of file CMatrixTemplate.h.

template<class T>
mrpt::math::CMatrixTemplate< T >::CMatrixTemplate ( const CMatrixTemplate< T > &  m,
const size_t  cropRowCount,
const size_t  cropColCount 
) [inline]

Copy constructor & crop from another matrix.

Definition at line 158 of file CMatrixTemplate.h.

template<class T>
template<typename V , size_t N>
mrpt::math::CMatrixTemplate< T >::CMatrixTemplate ( size_t  row,
size_t  col,
V(&)  theArray[N] 
) [inline]

Constructor from a given size and a C array.

The array length must match cols x row.

  const double numbers[] = {
    1,2,3,
    4,5,6 };
         CMatrixDouble   M(3,2, numbers);

Definition at line 177 of file CMatrixTemplate.h.

template<class T>
template<typename V >
mrpt::math::CMatrixTemplate< T >::CMatrixTemplate ( size_t  row,
size_t  col,
const V &  theVector 
) [inline]

Constructor from a given size and a STL container (std::vector, std::list,...) with the initial values.

The vector length must match cols x row.

Definition at line 191 of file CMatrixTemplate.h.

template<class T>
virtual mrpt::math::CMatrixTemplate< T >::~CMatrixTemplate ( ) [inline, virtual]

Destructor.

Definition at line 203 of file CMatrixTemplate.h.


Member Function Documentation

template<class T>
void mrpt::math::CMatrixTemplate< T >::appendCol ( const std::vector< T > &  in) [inline]

Appends a new column to the matrix from a vector.

The length of the vector must match the number of rows of the matrix, unless it is (0,0).

Exceptions:
std::exceptionOn size mismatch.
See also:
extractCol
appendRow

Definition at line 536 of file CMatrixTemplate.h.

template<class T>
void mrpt::math::CMatrixTemplate< T >::appendRow ( const std::vector< T > &  in) [inline]

Appends a new row to the MxN matrix from a 1xN vector.

The lenght of the vector must match the width of the matrix, unless it's empty: in that case the matrix is resized to 1xN.

    CMatrixDouble  M(0,0);
    vector_double  v(7),w(7);
    // ...
    M.appendRow(v);
    M.appendRow(w);
Exceptions:
std::exceptionOn incorrect vector length.
See also:
extractRow
appendCol

Definition at line 507 of file CMatrixTemplate.h.

template<class T>
template<size_t N>
void mrpt::math::CMatrixTemplate< T >::ASSERT_ENOUGHROOM ( size_t  r,
size_t  c 
) const [inline]

Checks whether the rows [r-N,r+N] and the columns [c-N,c+N] are present in the matrix.

Definition at line 125 of file CMatrixTemplate.h.

template<class T>
void mrpt::math::CMatrixTemplate< T >::extractCol ( size_t  nCol,
CMatrixTemplate< T > &  out,
int  startingRow = 0 
) const [inline]

Gets a given column to a vector (without modifying the matrix)

Exceptions:
std::exceptionOn index out of bounds.

Definition at line 479 of file CMatrixTemplate.h.

template<class T>
void mrpt::math::CMatrixTemplate< T >::extractCol ( size_t  nCol,
std::vector< T > &  out,
int  startingRow = 0 
) const [inline]

Returns a given column to a vector (without modifying the matrix)

Exceptions:
std::exceptionOn index out of bounds.

Definition at line 461 of file CMatrixTemplate.h.

template<class T>
void mrpt::math::CMatrixTemplate< T >::extractColumns ( size_t  firstCol,
size_t  lastCol,
CMatrixTemplate< T > &  out 
) const [inline]

Gets a series of contiguous columns.

Exceptions:
std::logic_errorOn index out of bounds
See also:
extractColumn
extractRows

Definition at line 453 of file CMatrixTemplate.h.

template<class T>
void mrpt::math::CMatrixTemplate< T >::extractRows ( size_t  firstRow,
size_t  lastRow,
CMatrixTemplate< T > &  out 
) const [inline]

Gets a series of contiguous rows.

Exceptions:
std::logic_errorOn index out of bounds
See also:
extractRow
extractColumns

Definition at line 443 of file CMatrixTemplate.h.

template<class T>
void mrpt::math::CMatrixTemplate< T >::extractSubmatrix ( const size_t  row1,
const size_t  row2,
const size_t  col1,
const size_t  col2,
CMatrixTemplate< T > &  out 
) const [inline]

Get a submatrix, given its bounds.

See also:
extractSubmatrixSymmetricalBlocks

Definition at line 410 of file CMatrixTemplate.h.

Referenced by mrpt::math::CMatrixTemplate< TPoint3D >::operator()().

template<class T>
template<class Derived >
void mrpt::math::CMatrixTemplate< T >::extractSubmatrix ( const size_t  row1,
const size_t  row2,
const size_t  col1,
const size_t  col2,
Eigen::MatrixBase< Derived > &  out 
) const [inline]

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 424 of file CMatrixTemplate.h.

template<class T>
void mrpt::math::CMatrixTemplate< T >::fillAll ( const T &  val) [inline]

Fill all the elements with a given value (Note: named "fillAll" since "fill" will be used by child classes)

Definition at line 131 of file CMatrixTemplate.h.

template<class T>
T& mrpt::math::CMatrixTemplate< T >::get_unsafe ( size_t  row,
size_t  col 
) [inline]

Fast but unsafe method to get a reference from the matrix.

Definition at line 373 of file CMatrixTemplate.h.

template<class T>
const T& mrpt::math::CMatrixTemplate< T >::get_unsafe ( size_t  row,
size_t  col 
) const [inline]

Fast but unsafe method to read a value from the matrix.

Definition at line 362 of file CMatrixTemplate.h.

template<class T>
T* mrpt::math::CMatrixTemplate< T >::get_unsafe_row ( size_t  row) [inline]

Fast but unsafe method to obtain a pointer to a given row of the matrix (Use only in time critical applications)

Definition at line 384 of file CMatrixTemplate.h.

template<class T>
const T* mrpt::math::CMatrixTemplate< T >::get_unsafe_row ( size_t  row) const [inline]

Fast but unsafe method to obtain a pointer to a given row of the matrix (Use only in critical applications)

Definition at line 395 of file CMatrixTemplate.h.

template<class T>
void mrpt::math::CMatrixTemplate< T >::getAsVector ( std::vector< T > &  out) const [inline]

Returns a vector containing the matrix's values.

Definition at line 564 of file CMatrixTemplate.h.

template<class T>
size_t mrpt::math::CMatrixTemplate< T >::getColCount ( ) const [inline]

Number of columns in the matrix.

See also:
getRowCount, getColCount, nr, nc

Definition at line 248 of file CMatrixTemplate.h.

Referenced by mrpt::math::CMatrixTemplate< TPoint3D >::ASSERT_ENOUGHROOM(), and mrpt::math::CMatrixTemplateObjects< T >::operator=().

template<class T>
size_t mrpt::math::CMatrixTemplate< T >::getRowCount ( ) const [inline]

Number of rows in the matrix.

See also:
getRowCount, getColCount, nr, nc

Definition at line 243 of file CMatrixTemplate.h.

Referenced by mrpt::math::CMatrixTemplate< TPoint3D >::ASSERT_ENOUGHROOM(), and mrpt::math::CMatrixTemplateObjects< T >::operator=().

template<class T>
void mrpt::math::CMatrixTemplate< T >::insertCol ( size_t  nCol,
const std::vector< T > &  in 
) [inline]

Inserts a column from a vector, replacing the current contents of that column.

Exceptions:
std::exceptionOn index out of bounds
See also:
extractCol

Definition at line 551 of file CMatrixTemplate.h.

template<class T>
CMatrixTemplate<T> mrpt::math::CMatrixTemplate< T >::operator() ( const size_t  row1,
const size_t  row2,
const size_t  col1,
const size_t  col2 
) const [inline]

Subscript operator to get a submatrix.

Definition at line 401 of file CMatrixTemplate.h.

template<class T>
T& mrpt::math::CMatrixTemplate< T >::operator() ( size_t  ith) [inline]

Subscript operator to get/set an individual element from a row or column matrix.

Exceptions:
std::exceptionIf the object is not a column or row matrix.

Definition at line 296 of file CMatrixTemplate.h.

template<class T>
const T& mrpt::math::CMatrixTemplate< T >::operator() ( size_t  row,
size_t  col 
) const [inline]

Subscript operator to get individual elements.

Definition at line 284 of file CMatrixTemplate.h.

template<class T>
T mrpt::math::CMatrixTemplate< T >::operator() ( size_t  ith) const [inline]

Subscript operator to get/set an individual element from a row or column matrix.

Exceptions:
std::exceptionIf the object is not a column or row matrix.

Definition at line 324 of file CMatrixTemplate.h.

template<class T>
T& mrpt::math::CMatrixTemplate< T >::operator() ( size_t  row,
size_t  col 
) [inline]

Subscript operator to get/set individual elements.

Definition at line 273 of file CMatrixTemplate.h.

template<class T>
CMatrixTemplate& mrpt::math::CMatrixTemplate< T >::operator= ( const CMatrixTemplate< T > &  m) [inline]

Assignment operator from another matrix.

Definition at line 206 of file CMatrixTemplate.h.

template<class T>
template<typename V , size_t N>
CMatrixTemplate& mrpt::math::CMatrixTemplate< T >::operator= ( V(&)  theArray[N]) [inline]

Assignment operator for initializing from a C array (The matrix must be set to the correct size before invoking this asignament)

         CMatrixDouble   M(3,2);
  const double numbers[] = {
    1,2,3,
    4,5,6 };
  M = numbers;

Refer also to the constructor with initialization data CMatrixTemplate::CMatrixTemplate

Definition at line 226 of file CMatrixTemplate.h.

template<class T>
void mrpt::math::CMatrixTemplate< T >::realloc ( size_t  row,
size_t  col,
bool  newElementsToZero = false 
) [inline, protected]
template<class T>
void mrpt::math::CMatrixTemplate< T >::resize ( const CMatrixTemplateSize siz,
bool  zeroNewElements = false 
) [inline]

This method just checks has no effects in this class, but raises an exception if the expected size does not match.

Definition at line 266 of file CMatrixTemplate.h.

template<class T>
void mrpt::math::CMatrixTemplate< T >::set_unsafe ( size_t  row,
size_t  col,
const T &  v 
) [inline]

Fast but unsafe method to write a value in the matrix.

Definition at line 351 of file CMatrixTemplate.h.

template<class T>
void mrpt::math::CMatrixTemplate< T >::setSize ( size_t  row,
size_t  col,
bool  zeroNewElements = false 
) [inline]
template<class T>
CMatrixTemplateSize mrpt::math::CMatrixTemplate< T >::size ( ) const [inline]

Get a 2-vector with [NROWS NCOLS] (as in MATLAB command size(x))

Definition at line 251 of file CMatrixTemplate.h.

template<class T>
void mrpt::math::CMatrixTemplate< T >::swap ( CMatrixTemplate< T > &  o) [inline]

Swap with another matrix very efficiently (just swaps a pointer and two integer values).

Definition at line 138 of file CMatrixTemplate.h.

Referenced by mrpt::math::CMatrixTemplate< TPoint3D >::swap().


Member Data Documentation

template<class T>
size_t mrpt::math::CMatrixTemplate< T >::m_Cols [protected]
template<class T>
size_t mrpt::math::CMatrixTemplate< T >::m_Rows [protected]
template<class T>
T** mrpt::math::CMatrixTemplate< T >::m_Val [protected]



Page generated by Doxygen 1.7.3 for MRPT 0.9.4 SVN: at Sat Mar 26 06:16:28 UTC 2011