cisst-saw
|
Data of LU problem (Fixed size). More...
#include <nmrLU.h>
Classes | |
class | Friend |
Public Types | |
enum | { MIN_MN = (_rows < _cols) ? _rows : _cols } |
typedef vct::size_type | size_type |
typedef vctFixedSizeMatrix < CISSTNETLIB_DOUBLE, _rows, _cols, VCT_COL_MAJOR > | MatrixTypeA |
typedef vctFixedSizeVector < CISSTNETLIB_INTEGER, MIN_MN > | VectorTypePivotIndices |
typedef vctFixedSizeMatrix < CISSTNETLIB_DOUBLE, _rows, _rows, VCT_COL_MAJOR > | MatrixTypeP |
typedef vctFixedSizeMatrix < CISSTNETLIB_DOUBLE, _rows, MIN_MN, VCT_COL_MAJOR > | MatrixTypeL |
typedef vctFixedSizeMatrix < CISSTNETLIB_DOUBLE, MIN_MN, _cols, VCT_COL_MAJOR > | MatrixTypeU |
Public Member Functions | |
nmrLUFixedSizeData () | |
const VectorTypePivotIndices & | PivotIndices (void) const |
Static Public Member Functions | |
static MatrixTypeP & | UpdateMatrixP (const VectorTypePivotIndices &pivotIndices, MatrixTypeP &P) throw (std::runtime_error) |
static void | UpdateMatrixLU (const MatrixTypeA &A, MatrixTypeL &L, MatrixTypeU &U) throw (std::runtime_error) |
Protected Attributes | |
VectorTypePivotIndices | PivotIndicesMember |
Friends | |
class | Friend |
Data of LU problem (Fixed size).
This class is similar to nmrLUDynamicData except that it is dedicated to fixed size containers. While nmrLUDynamicData is designed to be modified dynamically, nmrLUFixedSizeData is fully defined at compilation time using template parameters. The required parameters are the dimensions of the input matrix:
new
) and the memory can not be used by reference. To use memory by reference, one must use nmrLUDynamicData with vctDynamicMatrixRef and vctDynamicVectorRef (these dynamic references can actually be used to overlay a fixed size container). typedef vctFixedSizeMatrix<CISSTNETLIB_DOUBLE, _rows, _cols, VCT_COL_MAJOR> nmrLUFixedSizeData< _rows, _cols >::MatrixTypeA |
Type of the input matrix A (size computed from the data template parameters).
typedef vctFixedSizeMatrix<CISSTNETLIB_DOUBLE, _rows, MIN_MN, VCT_COL_MAJOR> nmrLUFixedSizeData< _rows, _cols >::MatrixTypeL |
Type used to create the L matrix from the input matrix (A) after nmrLU has been called.
typedef vctFixedSizeMatrix<CISSTNETLIB_DOUBLE, _rows, _rows, VCT_COL_MAJOR> nmrLUFixedSizeData< _rows, _cols >::MatrixTypeP |
Type used to create the permutation matrix from the vector PivotIndices.
typedef vctFixedSizeMatrix<CISSTNETLIB_DOUBLE, MIN_MN, _cols, VCT_COL_MAJOR> nmrLUFixedSizeData< _rows, _cols >::MatrixTypeU |
Type used to create the U matrix from the input matrix (A) after nmrLU has been called.
typedef vct::size_type nmrLUFixedSizeData< _rows, _cols >::size_type |
typedef vctFixedSizeVector<CISSTNETLIB_INTEGER, MIN_MN> nmrLUFixedSizeData< _rows, _cols >::VectorTypePivotIndices |
Type of the output vector PivotIndices (size computed from the data template parameters).
|
inline |
Default constructor. Does nothing since the allocation is performed on the stack.
|
inline |
Const reference to the result vector PivotIndices. This method must be called after the data has been computed by the nmrLU function.
|
inlinestatic |
Helper method to create usable matrix L and U from the input matrix used and modified by nmrLU. The output of nmrLU is a single matrix which contains both L and U. This method splits the output of nmrLU and creates to matrices by copying the lower and upper parts respectively in L and U, setting all other elements to zero. The diagonal of the output is copied to U while all the elements of the diagonal of L are set to 1.
A | The matrix decomposed using nmrLU. |
L | The lower matrix |
U | The upper matrix |
|
inlinestatic |
Helper method to create a usable permutation matrix from the vector of pivot indices created by nmrLU.
pivotIndices | The vector of pivot indices as computed by nmrLU |
P | The permutation matrix updated from the pivot indices. |
|
friend |
|
protected |
Data member used to store the output vector PivotIndices.