cisst-saw
|
A template for a fixed size matrix with fixed spacing in memory. More...
#include <vctFixedSizeConstMatrixBase.h>
Classes | |
class | ConstSubmatrix |
Public Types | |
enum | { DIMENSION = 2 } |
enum | { ROWS = MatrixTraits::ROWS, COLS = MatrixTraits::COLS, LENGTH = MatrixTraits::LENGTH } |
enum | { ROWSTRIDE = MatrixTraits::ROWSTRIDE, COLSTRIDE = MatrixTraits::COLSTRIDE } |
enum | { DIAGONAL_LENGTH = (ROWS <= COLS) ? ROWS : COLS, DIAGONAL_STRIDE = ROWSTRIDE + COLSTRIDE } |
typedef vctFixedSizeConstMatrixBase < _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType > | ThisType |
typedef vctFixedSizeMatrixTraits < _elementType, _rows, _cols, _rowStride, _colStride > | MatrixTraits |
typedef MatrixTraits::iterator | iterator |
typedef MatrixTraits::const_iterator | const_iterator |
typedef MatrixTraits::reverse_iterator | reverse_iterator |
typedef MatrixTraits::const_reverse_iterator | const_reverse_iterator |
typedef vctFixedSizeConstVectorRef < _elementType, COLS, COLSTRIDE > | ConstRowRefType |
typedef vctFixedSizeVectorRef < _elementType, COLS, COLSTRIDE > | RowRefType |
typedef vctFixedSizeConstVectorRef < _elementType, ROWS, ROWSTRIDE > | ConstColumnRefType |
typedef vctFixedSizeVectorRef < _elementType, ROWS, ROWSTRIDE > | ColumnRefType |
typedef vctFixedSizeConstVectorRef < _elementType, DIAGONAL_LENGTH, DIAGONAL_STRIDE > | ConstDiagonalRefType |
typedef vctFixedSizeVectorRef < _elementType, DIAGONAL_LENGTH, DIAGONAL_STRIDE > | DiagonalRefType |
typedef vctFixedSizeVector < _elementType, COLS > | RowValueType |
typedef vctFixedSizeVector < _elementType, ROWS > | ColumnValueType |
typedef vctFixedSizeConstMatrixRef < _elementType, _rows, _cols, _rowStride, _colStride > | ConstRefType |
typedef vctFixedSizeMatrixRef < _elementType, _rows, _cols, _rowStride, _colStride > | RefType |
typedef vctFixedSizeConstMatrixRef < _elementType, _cols, _rows, _colStride, _rowStride > | ConstRefTransposeType |
typedef vctFixedSizeMatrixRef < _elementType, _cols, _rows, _colStride, _rowStride > | RefTransposeType |
typedef vctFixedSizeMatrix < _elementType, COLS, ROWS, COLSTRIDE<=ROWSTRIDE > TransposeValueType;typedef vctFixedSizeMatrix < _elementType, ROWS, COLS, COLSTRIDE<=ROWSTRIDE > MatrixValueType;typedef vctFixedSizeMatrix< bool, ROWS, COLS, COLSTRIDE<=ROWSTRIDE > BoolMatrixValueType;typedef _dataPtrType DataType;protected:DataType Data;inline void ThrowUnlessValidIndex(size_type index) const throw(std::out_of_range){if(!ValidIndex(index)){cmnThrow(std::out_of_range("vctFixedSizeMatrix: Invalid index"));}}inline void ThrowUnlessValidIndex(size_type rowIndex, size_type colIndex) const throw(std::out_of_range){if(!ValidIndex(rowIndex, colIndex)){cmnThrow(std::out_of_range("vctFixedSizeMatrix: Invalid indices"));}}public:const_iterator begin() const {return const_iterator(Data, 0);}const_iterator end() const {return const_iterator(Data)+LENGTH;}const_reverse_iterator rbegin() const {return const_reverse_iterator(Pointer(ROWS-1, COLS-1), 0);}const_reverse_iterator rend() const {return const_reverse_iterator(Data-ROWSTRIDE+COLSTRIDE *(COLS-1), 0);}size_type size() const {return LENGTH;}const nsize_type &sizes(void) const {static nsize_type staticSizes(ROWS, COLS);return staticSizes;}size_type rows() const {return ROWS;}size_type cols() const {return COLS;}size_type max_size() const {return LENGTH;}const nstride_type &strides(void) const {static nstride_type staticStrides(ROWSTRIDE, COLSTRIDE);return staticStrides;}difference_type row_stride() const {return ROWSTRIDE;}difference_type col_stride() const {return COLSTRIDE;}bool empty() const {return(LENGTH==0);}ConstRowRefType operator[](size_type index) const {return ConstRowRefType(Data+ROWSTRIDE *index);}const_pointer Pointer(size_type rowIndex, size_type colIndex) const {return Data+ROWSTRIDE *rowIndex+COLSTRIDE *colIndex;}const_pointer Pointer(void) const {return Data;}inline bool ValidIndex(size_type index) const {return(index < size());}inline bool ValidIndex(size_type rowIndex, size_type colIndex) const {return((rowIndex< rows())&&(colIndex < cols()));}inline bool ValidRowIndex(size_type rowIndex) const {return(rowIndex < rows());}inline bool ValidColIndex(size_type colIndex) const {return(colIndex < cols());}const_reference at(size_type index) const throw(std::out_of_range){ThrowUnlessValidIndex(index);return(begin())[index];}const_reference at(size_type rowIndex, size_type colIndex) const throw(std::out_of_range){ThrowUnlessValidIndex(rowIndex, colIndex);return *(Pointer(rowIndex, colIndex));}const_reference operator()(size_type rowIndex, size_type colIndex) const throw(std::out_of_range){return at(rowIndex, colIndex);}const_reference Element(size_type rowIndex, size_type colIndex) const {return *(Pointer(rowIndex, colIndex));}ConstRowRefType Row(size_type index) const {return ConstRowRefType(Data+ROWSTRIDE *index);}ConstColumnRefType Column(size_type index) const {return ConstColumnRefType(Data+COLSTRIDE *index);}ConstDiagonalRefType Diagonal(void) const {return ConstDiagonalRefType(Data);}template < vct::size_type __subRows, vct::size_type __subCols > vctFixedSizeConstMatrixRef < _elementType, __subRows, __subCols, _rowStride, _colStride > Ref(const size_type startRow=0, const size_type startCol=0) const throw(std::out_of_range){vctFixedSizeConstMatrixRef < _elementType, __subRows, __subCols, _rowStride, _colStride > result(*this, startRow, startCol);return result;}inline value_type SumOfElements() const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < value_type >::Addition, typename vctUnaryOperations < value_type >::Identity > ::Run(*this);}inline value_type ProductOfElements() const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < value_type >::Multiplication, typename vctUnaryOperations < value_type >::Identity > ::Run(*this);}inline value_type Trace(void) const {return this->Diagonal().SumOfElements();}inline value_type NormSquare(void) const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < value_type >::Addition, typename vctUnaryOperations < value_type >::Square >::Run(*this);}inline NormType Norm(void) const {return sqrt(NormType(NormSquare()));}inline value_type L1Norm(void) const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < value_type >::Addition, typename vctUnaryOperations < value_type >::AbsValue > ::Run(*this);}inline value_type LinfNorm(void) const {return this-> MaxAbsElement();}inline value_type MaxElement(void) const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < value_type >::Maximum, typename vctUnaryOperations < value_type >::Identity > ::Run(*this);}inline value_type MinElement(void) const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < value_type >::Minimum, typename vctUnaryOperations < value_type >::Identity > ::Run(*this);}inline value_type MaxAbsElement(void) const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < value_type >::Maximum, typename vctUnaryOperations < value_type >::AbsValue > ::Run(*this);}inline value_type MinAbsElement(void) const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < value_type >::Minimum, typename vctUnaryOperations < value_type >::AbsValue > ::Run(*this);}inline void MinAndMaxElement(value_type &minElement, value_type &maxElement) const {vctFixedSizeMatrixLoopEngines::MinAndMax::Run((*this), minElement, maxElement);}inline bool IsPositive(void) const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < bool >::And, typename vctUnaryOperations< bool, value_type >::IsPositive > ::Run(*this);}inline bool IsNonNegative(void) const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < bool >::And, typename vctUnaryOperations< bool, value_type >::IsNonNegative > ::Run(*this);}inline bool IsNonPositive(void) const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < bool >::And, typename vctUnaryOperations< bool, value_type >::IsNonPositive > ::Run(*this);}inline bool IsNegative(void) const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < bool >::And, typename vctUnaryOperations< bool, value_type >::IsNegative > ::Run(*this);}inline bool All(void) const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < bool >::And, typename vctUnaryOperations< bool, value_type >::IsNonzero >::Run(*this);}inline bool Any(void) const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < bool >::Or, typename vctUnaryOperations< bool, value_type >::IsNonzero >::Run(*this);}inline bool IsFinite(void) const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < bool >::And, typename vctUnaryOperations< bool, value_type >::IsFinite >::Run(*this);}inline bool HasNaN(void) const {return vctFixedSizeMatrixLoopEngines::SoMi < typename vctBinaryOperations < bool >::Or, typename vctUnaryOperations< bool, value_type >::IsNaN >::Run(*this);}inline bool IsColMajor(void) const {return(row_stride() <=col_stride());}inline bool IsRowMajor(void) const {return(col_stride() <=row_stride());}inline bool IsCompact(void) const {return(((row_stride()==1)&&(col_stride()==static_cast < stride_type >rows())))||((col_stride()==1)&&(row_stride()==static_cast < stride_type >cols()))));}inline bool IsFortran(void) const {return(IsColMajor()&&(row_stride()==1)&&(col_stride()==static_cast < stride_type >rows())));}inline bool StorageOrder(void) const {return this-> | IsRowMajor () |
Public Member Functions | |
VCT_CONTAINER_TRAITS_TYPEDEFS (_elementType) | |
VCT_NARRAY_TRAITS_TYPEDEFS (DIMENSION) | |
bool | IsSquare (void) const |
bool | IsSquare (size_type size) const |
template<size_type __rows, size_type __cols, stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
bool | FastCopyCompatible (const vctFixedSizeConstMatrixBase< __rows, __cols, __rowStride, __colStride, value_type, __dataPtrType > &source) const |
template<class __matrixOwnerType > | |
bool | FastCopyCompatible (const vctDynamicConstMatrixBase< __matrixOwnerType, value_type > &source) const |
ConstRefTransposeType | TransposeRef (void) const |
TransposeValueType | Transpose () const |
std::string | ToString (void) const |
void | ToStream (std::ostream &outputStream) const |
void | ToStreamRaw (std::ostream &outputStream, const char delimiter= ' ', bool headerOnly=false, const std::string &headerPrefix="") const |
void | SerializeRaw (std::ostream &outputStream) const |
Elementwise comparisons between matrices. | |
Returns the matrix of comparison's results. | |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
bool | Equal (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
bool | operator== (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
bool | AlmostEqual (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix, value_type tolerance) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
bool | AlmostEqual (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
bool | NotEqual (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
bool | operator!= (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
bool | Lesser (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
bool | LesserOrEqual (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
bool | Greater (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
bool | GreaterOrEqual (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
BoolMatrixValueType | ElementwiseEqual (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
BoolMatrixValueType | ElementwiseNotEqual (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
BoolMatrixValueType | ElementwiseLesser (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
BoolMatrixValueType | ElementwiseLesserOrEqual (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
BoolMatrixValueType | ElementwiseGreater (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
template<stride_type __rowStride, stride_type __colStride, class __dataPtrType > | |
BoolMatrixValueType | ElementwiseGreaterOrEqual (const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &otherMatrix) const |
Elementwise comparisons between a matrix and a scalar. | |
Returns the result of the comparison. | |
bool | Equal (const value_type &scalar) const |
bool | operator== (const value_type &scalar) const |
bool | NotEqual (const value_type &scalar) const |
bool | operator!= (const value_type &scalar) const |
bool | Lesser (const value_type &scalar) const |
bool | LesserOrEqual (const value_type &scalar) const |
bool | Greater (const value_type &scalar) const |
bool | GreaterOrEqual (const value_type &scalar) const |
BoolMatrixValueType | ElementwiseEqual (const value_type &scalar) const |
BoolMatrixValueType | ElementwiseNotEqual (const value_type &scalar) const |
BoolMatrixValueType | ElementwiseLesser (const value_type &scalar) const |
BoolMatrixValueType | ElementwiseLesserOrEqual (const value_type &scalar) const |
BoolMatrixValueType | ElementwiseGreater (const value_type &scalar) const |
BoolMatrixValueType | ElementwiseGreaterOrEqual (const value_type &scalar) const |
Unary elementwise operations. | |
Returns the result of matrix.op(). | |
MatrixValueType | Abs (void) const |
MatrixValueType | Negation (void) const |
MatrixValueType | Floor (void) const |
MatrixValueType | Ceil (void) const |
Static Public Member Functions | |
static const MatrixValueType & | Eye (void) |
A template for a fixed size matrix with fixed spacing in memory.
The matrix can be defined over an existing memory block, or define its own memory block. The class's methods follow the STL specifications for Random Access Container. It uses vctFixedSizeMatrixTraits to define the types required by the STL interface.
This class defines a read-only memory matrix. The read/write matrix is derived from this class (compare with vctFixedStrideMatrixConstIterator). Therefore, all the methods of this class are const. The non-const matrix and methods are defined in vctFixedSizeMatrixBase.
Matrix indexing is zero-based.
The method provided for the compatibility with the STL containers start with a lower case. Other methods start with a capitalilized letter (see CISST naming convention).
_elementType | the type of element in the matrix. |
_rows | the number of rows that the matrix provides access to. |
_cols | the number of columns that the matrix provides access to. |
_rowStride | the spacing between the rows in the memory block. |
_colStride | the spacing between the columns in the memory block. |
_dataPtrType | the type of object that defines the matrix. This may be an element pointer of an acutal fixed-size C-style array type. |
typedef vctFixedSizeVectorRef<_elementType, ROWS, ROWSTRIDE> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::ColumnRefType |
The type indicating a column of this matrix accessed by (non-const) reference
typedef vctFixedSizeVector<_elementType, ROWS> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::ColumnValueType |
The type of vector object required to store a copy of a column of this matrix
typedef MatrixTraits::const_iterator vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::const_iterator |
Const iterator on the elements of the matrix.
typedef MatrixTraits::const_reverse_iterator vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::const_reverse_iterator |
Const reverse iterator on the elements of the matrix.
typedef vctFixedSizeConstVectorRef<_elementType, ROWS, ROWSTRIDE> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::ConstColumnRefType |
The type indicating a column of this matrix accessed by (const) reference
typedef vctFixedSizeConstVectorRef<_elementType, DIAGONAL_LENGTH, DIAGONAL_STRIDE> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::ConstDiagonalRefType |
The type indicating the main diagonal of the matrix accessed by (const) reference
typedef vctFixedSizeConstMatrixRef<_elementType, _cols, _rows, _colStride, _rowStride> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::ConstRefTransposeType |
The type of object representing this matrix accessed in transposed order. Access is by (const) reference
typedef vctFixedSizeConstMatrixRef<_elementType, _rows, _cols, _rowStride, _colStride> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::ConstRefType |
The type of const reference to this matrix.
typedef vctFixedSizeConstVectorRef<_elementType, COLS, COLSTRIDE> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::ConstRowRefType |
The type indicating a row of this matrix accessed by (const) reference
typedef vctFixedSizeVectorRef<_elementType, DIAGONAL_LENGTH, DIAGONAL_STRIDE> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::DiagonalRefType |
The type indicating the main diagonal of the matrix accessed by (non-const) reference
typedef vctFixedSizeMatrix<_elementType, COLS, ROWS, COLSTRIDE <= ROWSTRIDE> TransposeValueType; typedef vctFixedSizeMatrix<_elementType, ROWS, COLS, COLSTRIDE <= ROWSTRIDE> MatrixValueType; typedef vctFixedSizeMatrix<bool, ROWS, COLS, COLSTRIDE <= ROWSTRIDE> BoolMatrixValueType; typedef _dataPtrType DataType; protected: DataType Data; inline void ThrowUnlessValidIndex(size_type index) const throw(std::out_of_range) { if (! ValidIndex(index)) { cmnThrow(std::out_of_range("vctFixedSizeMatrix: Invalid index")); } } inline void ThrowUnlessValidIndex(size_type rowIndex, size_type colIndex) const throw(std::out_of_range) { if (! ValidIndex(rowIndex, colIndex)) { cmnThrow(std::out_of_range("vctFixedSizeMatrix: Invalid indices")); } } public: const_iterator begin() const { return const_iterator(Data, 0); } const_iterator end() const { return const_iterator(Data) + LENGTH; } const_reverse_iterator rbegin() const { return const_reverse_iterator(Pointer(ROWS - 1, COLS - 1), 0); } const_reverse_iterator rend() const { return const_reverse_iterator(Data - ROWSTRIDE + COLSTRIDE * (COLS - 1), 0); } size_type size() const { return LENGTH; } const nsize_type & sizes(void) const { static nsize_type staticSizes(ROWS, COLS); return staticSizes; } size_type rows() const { return ROWS; } size_type cols() const { return COLS; } size_type max_size() const { return LENGTH; } const nstride_type & strides(void) const { static nstride_type staticStrides(ROWSTRIDE, COLSTRIDE); return staticStrides; } difference_type row_stride() const { return ROWSTRIDE; } difference_type col_stride() const { return COLSTRIDE; } bool empty() const { return (LENGTH == 0); } ConstRowRefType operator[](size_type index) const { return ConstRowRefType(Data + ROWSTRIDE * index); } const_pointer Pointer(size_type rowIndex, size_type colIndex) const { return Data + ROWSTRIDE * rowIndex + COLSTRIDE * colIndex; } const_pointer Pointer(void) const { return Data; } inline bool ValidIndex(size_type index) const { return (index < size()); } inline bool ValidIndex(size_type rowIndex, size_type colIndex) const { return ((rowIndex < rows()) && (colIndex < cols())); } inline bool ValidRowIndex(size_type rowIndex) const { return (rowIndex < rows()); } inline bool ValidColIndex(size_type colIndex) const { return (colIndex < cols()); } const_reference at(size_type index) const throw(std::out_of_range) { ThrowUnlessValidIndex(index); return (begin())[index]; } const_reference at(size_type rowIndex, size_type colIndex) const throw(std::out_of_range) { ThrowUnlessValidIndex(rowIndex, colIndex); return *(Pointer(rowIndex, colIndex)); } const_reference operator()(size_type rowIndex, size_type colIndex) const throw(std::out_of_range) { return at(rowIndex, colIndex); } const_reference Element(size_type rowIndex, size_type colIndex) const { return *(Pointer(rowIndex, colIndex)); } ConstRowRefType Row(size_type index) const { return ConstRowRefType(Data + ROWSTRIDE * index); } ConstColumnRefType Column(size_type index) const { return ConstColumnRefType(Data + COLSTRIDE * index); } ConstDiagonalRefType Diagonal(void) const { return ConstDiagonalRefType(Data); } template <vct::size_type __subRows, vct::size_type __subCols> vctFixedSizeConstMatrixRef<_elementType, __subRows, __subCols, _rowStride, _colStride> Ref(const size_type startRow = 0, const size_type startCol = 0) const throw (std::out_of_range) { vctFixedSizeConstMatrixRef<_elementType, __subRows, __subCols, _rowStride, _colStride> result(*this, startRow, startCol); return result; } inline value_type SumOfElements() const { return vctFixedSizeMatrixLoopEngines:: SoMi<typename vctBinaryOperations<value_type>::Addition, typename vctUnaryOperations<value_type>::Identity>:: Run(*this); } inline value_type ProductOfElements() const { return vctFixedSizeMatrixLoopEngines:: SoMi<typename vctBinaryOperations<value_type>::Multiplication, typename vctUnaryOperations<value_type>::Identity>:: Run(*this); } inline value_type Trace(void) const { return this->Diagonal().SumOfElements(); } inline value_type NormSquare(void) const { return vctFixedSizeMatrixLoopEngines:: SoMi<typename vctBinaryOperations<value_type>::Addition, typename vctUnaryOperations<value_type>::Square>:: Run(*this); } inline NormType Norm(void) const { return sqrt(NormType(NormSquare())); } inline value_type L1Norm(void) const { return vctFixedSizeMatrixLoopEngines:: SoMi<typename vctBinaryOperations<value_type>::Addition, typename vctUnaryOperations<value_type>::AbsValue>:: Run(*this); } inline value_type LinfNorm(void) const { return this->MaxAbsElement(); } inline value_type MaxElement(void) const { return vctFixedSizeMatrixLoopEngines:: SoMi<typename vctBinaryOperations<value_type>::Maximum, typename vctUnaryOperations<value_type>::Identity>:: Run(*this); } inline value_type MinElement(void) const { return vctFixedSizeMatrixLoopEngines:: SoMi<typename vctBinaryOperations<value_type>::Minimum, typename vctUnaryOperations<value_type>::Identity>:: Run(*this); } inline value_type MaxAbsElement(void) const { return vctFixedSizeMatrixLoopEngines:: SoMi<typename vctBinaryOperations<value_type>::Maximum, typename vctUnaryOperations<value_type>::AbsValue>:: Run(*this); } inline value_type MinAbsElement(void) const { return vctFixedSizeMatrixLoopEngines:: SoMi<typename vctBinaryOperations<value_type>::Minimum, typename vctUnaryOperations<value_type>::AbsValue>:: Run(*this); } inline void MinAndMaxElement(value_type & minElement, value_type & maxElement) const { vctFixedSizeMatrixLoopEngines::MinAndMax::Run((*this), minElement, maxElement); } inline bool IsPositive(void) const { return vctFixedSizeMatrixLoopEngines:: SoMi<typename vctBinaryOperations<bool>::And, typename vctUnaryOperations<bool, value_type>::IsPositive>:: Run(*this); } inline bool IsNonNegative(void) const { return vctFixedSizeMatrixLoopEngines:: SoMi<typename vctBinaryOperations<bool>::And, typename vctUnaryOperations<bool, value_type>::IsNonNegative>:: Run(*this); } inline bool IsNonPositive(void) const { return vctFixedSizeMatrixLoopEngines:: SoMi<typename vctBinaryOperations<bool>::And, typename vctUnaryOperations<bool, value_type>::IsNonPositive>:: Run(*this); } inline bool IsNegative (void) const { return vctFixedSizeMatrixLoopEngines:: SoMi< typename vctBinaryOperations<bool>::And, typename vctUnaryOperations<bool, value_type>::IsNegative>:: Run(*this); } inline bool All(void) const { return vctFixedSizeMatrixLoopEngines:: SoMi< typename vctBinaryOperations<bool>::And, typename vctUnaryOperations<bool, value_type>::IsNonzero>:: Run(*this); } inline bool Any(void) const { return vctFixedSizeMatrixLoopEngines:: SoMi< typename vctBinaryOperations<bool>::Or, typename vctUnaryOperations<bool, value_type>::IsNonzero>:: Run(*this); } inline bool IsFinite(void) const { return vctFixedSizeMatrixLoopEngines:: SoMi< typename vctBinaryOperations<bool>::And, typename vctUnaryOperations<bool, value_type>::IsFinite>:: Run(*this); } inline bool HasNaN(void) const { return vctFixedSizeMatrixLoopEngines:: SoMi< typename vctBinaryOperations<bool>::Or, typename vctUnaryOperations<bool, value_type>::IsNaN>:: Run(*this); } inline bool IsColMajor(void) const { return (row_stride() <= col_stride()); } inline bool IsRowMajor(void) const { return (col_stride() <= row_stride()); } inline bool IsCompact(void) const { return (((row_stride() == 1) && (col_stride() == static_cast<stride_type>rows()))) || ((col_stride() == 1) && (row_stride() == static_cast<stride_type>cols())))); } inline bool IsFortran(void) const { return (IsColMajor() && (row_stride() == 1) && (col_stride() == static_cast<stride_type>rows()))); } inline bool StorageOrder(void) const { return this-> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::IsRowMajor() |
The type of object required to store a transposed copy of this matrix. The storage order is determined by comparing the strides.
typedef MatrixTraits::iterator vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::iterator |
Iterator on the elements of the matrix.
typedef vctFixedSizeMatrixTraits<_elementType, _rows, _cols, _rowStride, _colStride> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::MatrixTraits |
Traits used for all useful types related to a vctFixedSizeMatrix
typedef vctFixedSizeMatrixRef<_elementType, _cols, _rows, _colStride, _rowStride> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::RefTransposeType |
The type of object representing this matrix accessed in transposed order. Access is by (non-const) reference
typedef vctFixedSizeMatrixRef<_elementType, _rows, _cols, _rowStride, _colStride> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::RefType |
The type of reference to this matrix.
typedef MatrixTraits::reverse_iterator vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::reverse_iterator |
Reverse iterator on the elements of the matrix.
typedef vctFixedSizeVectorRef<_elementType, COLS, COLSTRIDE> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::RowRefType |
The type indicating a row of this matrix accessed by (non-const) reference
typedef vctFixedSizeVector<_elementType, COLS> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::RowValueType |
The type of vector object required to store a copy of a row of this matrix
typedef vctFixedSizeConstMatrixBase<_rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType> vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::ThisType |
Type of the matrix itself.
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
|
inline |
Unary elementwise operations on a matrix. For each element of the matrix "this", performs where
can calculate the absolute value (Abs) or the opposite (Negation).
|
inline |
|
inline |
|
inline |
|
inline |
Comparison between two matrices of the same size, containing the same type of elements. The strides and the internal representation (_dataPtrType) can be different. The comparaison ( ) for ElementwiseEqual(), ElementwiseNotEqual(), ElementwiseLesser(), ElementwiseLesserOrEqual(), ElementwiseGreater() or ElementwiseGreaterOrEqual() is performed elementwise between the two matrices and stored in a newly created matrix. There is no operator provided since the semantic would be ambiguous.
|
inline |
Comparison between a matrix and a scalar, containing the same type of elements. The comparaison ( ) for ElementwiseEqual(), ElementwiseNotEqual(), ElementwiseLesser(), ElementwiseLesserOrEqual(), ElementwiseGreater() or ElementwiseGreaterOrEqual() is performed elementwise between the matrix and the scalar and stored in a newly created matrix. There is no operator provided since the semantic would be ambiguous.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Comparison between two matrices of the same size, containing the same type of elements. The strides and the internal representation (_dataPtrType) can be different. The comparaison ( ) for Equal(), NotEqual(), Lesser(), LesserOrEqual(), Greater() or GreaterOrEqual() is performed elementwise between the two matrices. A logical "and" is performed (except for NotEqual which uses a logical "or") to accumulate the elementwise results. The only operators provided are "==" and "!=" since the semantic is not ambiguous.
|
inline |
Comparison between a matrix and a scalar, containing the same type of elements. The comparaison ( ) for Equal(), NotEqual(), Lesser(), LesserOrEqual(), Greater() or GreaterOrEqual() is performed elementwise between the matrix and the scalar. A logical "and" is performed (except for NotEqual which uses a logical "or") to accumulate the elementwise results.. The only operators provided are "==" and "!=" since the semantic is not ambiguous.
|
static |
Return the identity matrix for the size and type of elements of this matrix class. For example:
|
inline |
Test if the method FastCopyOf can be used instead of Assign. See FastCopyOf for more details.
|
inline |
Test if the method FastCopyOf can be used instead of Assign. See FastCopyOf for more details.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Test if a matrix is square.
|
inline |
Test if a matrix is square and of a given size.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Binary serialization
|
inline |
Print the matrix in a human readable format
|
inline |
Print data only with optional separator
|
inline |
Return a string representation of the matrix elements
|
inline |
Return a transposed copy of this matrix.
|
inline |
Return a transposed reference to this matrix. The actual definition of this method follows the declaration of class vctFixedSizeConstMatrixRef.
vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::VCT_CONTAINER_TRAITS_TYPEDEFS | ( | _elementType | ) |
vctFixedSizeConstMatrixBase< _rows, _cols, _rowStride, _colStride, _elementType, _dataPtrType >::VCT_NARRAY_TRAITS_TYPEDEFS | ( | DIMENSION | ) |