Main MRPT website > C++ reference
MRPT logo
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
mrpt::math::CMatrixTemplate Class Reference

Detailed Description

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).
For a complete introduction to Matrices and vectors in MRPT, see: http://www.mrpt.org/Matrices_vectors_arrays_and_Linear_Algebra_MRPT_and_Eigen_classes
See also:
CMatrixTemplateNumeric

#include <mrpt/math/CMatrixTemplate.h>

Inheritance diagram for mrpt::math::CMatrixTemplate:
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

Definition at line 66 of file CMatrixTemplate.h.

Definition at line 68 of file CMatrixTemplate.h.

Definition at line 65 of file CMatrixTemplate.h.

Definition at line 67 of file CMatrixTemplate.h.

The type of the matrix elements.

Definition at line 64 of file CMatrixTemplate.h.


Constructor & Destructor Documentation

mrpt::math::CMatrixTemplate::CMatrixTemplate ( const CMatrixTemplate m) [inline]

Constructors.

Definition at line 148 of file CMatrixTemplate.h.

mrpt::math::CMatrixTemplate::CMatrixTemplate ( size_t  row = 1,
size_t  col = 1 
) [inline]

Definition at line 153 of file CMatrixTemplate.h.

mrpt::math::CMatrixTemplate::CMatrixTemplate ( const CMatrixTemplate m,
const size_t  cropRowCount,
const size_t  cropColCount 
) [inline]

Copy constructor & crop from another matrix.

Definition at line 160 of file CMatrixTemplate.h.

template<typename V , size_t N>
mrpt::math::CMatrixTemplate::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 179 of file CMatrixTemplate.h.

template<typename V >
mrpt::math::CMatrixTemplate::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 193 of file CMatrixTemplate.h.

virtual mrpt::math::CMatrixTemplate::~CMatrixTemplate ( ) [inline, virtual]

Destructor.

Definition at line 205 of file CMatrixTemplate.h.


Member Function Documentation

void mrpt::math::CMatrixTemplate::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 538 of file CMatrixTemplate.h.

void mrpt::math::CMatrixTemplate::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 509 of file CMatrixTemplate.h.

template<size_t N>
void mrpt::math::CMatrixTemplate::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 127 of file CMatrixTemplate.h.

void mrpt::math::CMatrixTemplate::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 463 of file CMatrixTemplate.h.

void mrpt::math::CMatrixTemplate::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 481 of file CMatrixTemplate.h.

void mrpt::math::CMatrixTemplate::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 455 of file CMatrixTemplate.h.

void mrpt::math::CMatrixTemplate::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 445 of file CMatrixTemplate.h.

void mrpt::math::CMatrixTemplate::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 412 of file CMatrixTemplate.h.

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

template<class Derived >
void mrpt::math::CMatrixTemplate::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 426 of file CMatrixTemplate.h.

void mrpt::math::CMatrixTemplate::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 133 of file CMatrixTemplate.h.

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

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

Definition at line 364 of file CMatrixTemplate.h.

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

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

Definition at line 375 of file CMatrixTemplate.h.

T* mrpt::math::CMatrixTemplate::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 386 of file CMatrixTemplate.h.

const T* mrpt::math::CMatrixTemplate::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 397 of file CMatrixTemplate.h.

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

Returns a vector containing the matrix's values.

Definition at line 566 of file CMatrixTemplate.h.

size_t mrpt::math::CMatrixTemplate::getColCount ( ) const [inline]

Number of columns in the matrix.

See also:
getRowCount, getColCount, nr, nc

Definition at line 250 of file CMatrixTemplate.h.

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

size_t mrpt::math::CMatrixTemplate::getRowCount ( ) const [inline]

Number of rows in the matrix.

See also:
getRowCount, getColCount, nr, nc

Definition at line 245 of file CMatrixTemplate.h.

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

void mrpt::math::CMatrixTemplate::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 553 of file CMatrixTemplate.h.

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

Subscript operator to get/set individual elements.

Definition at line 275 of file CMatrixTemplate.h.

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

Subscript operator to get individual elements.

Definition at line 286 of file CMatrixTemplate.h.

T& mrpt::math::CMatrixTemplate::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 298 of file CMatrixTemplate.h.

T mrpt::math::CMatrixTemplate::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 326 of file CMatrixTemplate.h.

CMatrixTemplate<T> mrpt::math::CMatrixTemplate::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 403 of file CMatrixTemplate.h.

CMatrixTemplate& mrpt::math::CMatrixTemplate::operator= ( const CMatrixTemplate m) [inline]

Assignment operator from another matrix.

Reimplemented in mrpt::math::CMatrixB.

Definition at line 208 of file CMatrixTemplate.h.

Referenced by mrpt::math::CMatrixB::operator=().

template<typename V , size_t N>
CMatrixTemplate& mrpt::math::CMatrixTemplate::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 228 of file CMatrixTemplate.h.

void mrpt::math::CMatrixTemplate::realloc ( size_t  row,
size_t  col,
bool  newElementsToZero = false 
) [inline, protected]
void mrpt::math::CMatrixTemplate::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 268 of file CMatrixTemplate.h.

void mrpt::math::CMatrixTemplate::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 353 of file CMatrixTemplate.h.

void mrpt::math::CMatrixTemplate::setSize ( size_t  row,
size_t  col,
bool  zeroNewElements = false 
) [inline]

Changes the size of matrix, maintaining the previous contents.

Definition at line 262 of file CMatrixTemplate.h.

Referenced by mrpt::math::CMatrixTemplate< TPoint3D >::resize(), and mrpt::poses::CPose2DGridTemplate< double >::getAsMatrix().

CMatrixTemplateSize mrpt::math::CMatrixTemplate::size ( ) const [inline]

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

Definition at line 253 of file CMatrixTemplate.h.

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

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

Definition at line 140 of file CMatrixTemplate.h.

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


Member Data Documentation




Page generated by Doxygen 1.7.5 for MRPT 0.9.5 SVN: at Thu Oct 13 21:25:36 UTC 2011