PARP Research Group Universidad de Murcia


QVMatrix Class Reference
[Math functionality]

Implementation of numerical matrices. More...

#include <QVMatrix>

List of all members.

Public Types

enum  MatrixType {
  General = 0x00, Symmetric = 0x01, UpperTriangular = 0x2, LowerTriangular = 0x03,
  Diagonal = 0x04, PermutationMatrix = 0x05
}
 

Matrix types.

More...

Public Member Functions

 QVMatrix ()
 Default constructor.
 QVMatrix (const QVMatrix &matrix)
 Copy constructor.
 QVMatrix (const int rows, const int cols, const double *data=NULL)
 Dimensional constructor.
 QVMatrix (const int rows, const int cols, const QVVector &data)
 Dimensional constructor.
 QVMatrix (const int rows, const int cols, const double value)
 Dimensional constructor with default value.
 QVMatrix (const QVQuaternion &quaternion)
 Rotation matrix constructor.
 QVMatrix (const gsl_matrix *matrix)
 Copy constructor for gsl_matrix.
 QVMatrix (const CvMat *cvMatrix)
 OpenCV matrix conversion constructor.
CvMat * toCvMat (const int cvMatType=CV_64F) const
 Converts the matrix to an OpenCV matrix structure.
 operator CvMat * () const
 Converts the matrix to an OpenCV matrix structure.
 QVMatrix (const QVVector &vector, const bool rowVector=true)
 Octave matrix conversion constructor.
 QVMatrix (const QList< QVVector > &vectorList)
 Constructor from a list of QVVectors.
 QVMatrix (const QList< QVector< double > > &vectorList)
 Constructor from a list of QVectors.
 QVMatrix (const QList< QPointF > &pointList)
 Constructor from a list of QPointF.
 operator QList< QVVector > () const
 Convert to a list of QVVectors operator.
 operator QList< QVector< double > > () const
 Convert to a list of QVectors operator.
 operator gsl_matrix * () const
 Convert to a gsl_matrix * operator.
QVMatrixoperator= (const QVMatrix &matrix)
 Copy operator.
bool operator== (const QVMatrix &matrix) const
 Matrix-matrix equality operator.
QVMatrixoperator+= (const QVMatrix &matrix)
 Matrix-matrix incremental operator.
bool operator!= (const QVMatrix &matrix) const
 Matrix-matrix unequality operator.
QVMatrix operator* (const QVMatrix &matrix) const
 Matrix-matrix product operator.
QVMatrix operator/ (const QVMatrix &matrix) const
 Matrix-matrix division.
QVMatrix operator+ (const QVMatrix &matrix) const
 Matrix-matrix addition operator.
QVMatrix operator- (const QVMatrix &matrix) const
 Matrix-matrix substraction operator.
QVMatrix operator- () const
 Obtains the additive inverse of the matrix.
QVMatrix operator* (const double value) const
 Matrix-scalar product.
QVMatrix operator/ (const double value) const
 Matrix-scalar division operator.
QVMatrix operator+ (const double value) const
 Matrix-scalar addition.
QVMatrix operator- (const double value) const
 Matrix-scalar substraction operator.
QVVector operator* (const QVVector &vector) const
 Matrix-vector product.
QVMatrix verticalAppend (const QVMatrix &matrix) const
 Appends matrices vertically.
QVMatrix horizontalAppend (const QVMatrix &matrix) const
 Appends matrices horizontally.
QVMatrix operator& (const QVMatrix &matrix) const
 Appends matrices vertically.
QVMatrix operator| (const QVMatrix &matrix) const
 Appends matrices horizontally.
QVMatrix operator& (const QVVector &vector) const
 Appends vector to matrix vertically.
QVMatrix operator| (const QVVector &vector) const
 Appends vector to matrix horizontally.
double & operator() (const int row, const int col)
 Element access operator.
double operator() (const int row, const int col) const
 Overloaded version of element access operator.
int getDataSize () const
 Gets the size of the data array.
const double * getReadData () const
 Gets a read-only reference to the data buffer of the matrix.
double * getWriteData ()
 Gets a reference of the data buffer of the matrix for read and write accesses.
QVMatrix transpose () const
 Change the order of the indexes in the matrix.
void set (const double value)
 Sets every element of the matrix to a given value.
bool equals (const QVMatrix &matrix) const
 Matrix-matrix equality operator.
QVMatrix dotProduct (const QVMatrix &matrix, const bool transposeFirstOperand=false, const bool transposeSecondOperand=false) const
 Matrix-matrix product.
QVVector dotProduct (const QVVector &vector, const bool transposeMatrix=false) const
 Matrix-vector product.
QVMatrix elementProduct (const QVMatrix &matrix) const
 Matrix-matrix element product.
QVMatrix matrixDivide (const QVMatrix &matrix) const
 Matrix-matrix division.
void triangularSolve (const QVVector &b, QVVector &x, bool transposed=false, bool unit_diagonal=false) const
 Triangular system solving (vector of RHS).
void triangularSolve (const QVMatrix &B, QVMatrix &X, bool transposed=false, bool unit_diagonal=false, bool left=true) const
 Triangular system solving (matrix of RHS).
QVMatrix inverse () const
 Computes the inverse of the matrix.
double det () const
 Computes the determinant of the matrix.
QVVector meanCol () const
 Obtains the mean vector for the column vectors in the matrix.
QVMatrix addition (const QVMatrix &matrix) const
 Matrix-matrix addition.
void inlineAddition (const QVMatrix &matrix)
 Matrix-matrix addition.
QVMatrix substract (const QVMatrix &matrix) const
 Matrix-matrix substraction.
QVMatrix scalarDivide (const double value) const
 Matrix-scalar division.
QVMatrix scalarProduct (const double value) const
 Matrix-scalar product.
QVMatrix scalarAdd (const double value) const
 Matrix-scalar addition.
QVMatrix scalarSubstract (const double value) const
 Matrix-scalar substraction.
double norm2 () const
 Gets the norm2 for matrix.
double trace () const
 Gets the trace of the matrix.
bool containsNaN () const
 Checks whether the matrix contains a NaN value or not.
bool containsInf () const
 Checks whether the matrix contains an infinite value or not.
bool isDiagonal () const
 Checks whether the matrix is a diagonal matrix or not.
QVMatrix rowHomogeneousNormalize () const
 Homogeneous normalization for rows of the matrix.
int getCols () const
 Get width of the matrix.
int getRows () const
 Get height of the matrix.
MatrixType getType () const
 Get type of the matrix.
void setType (MatrixType type)
 Set type of the matrix.
const QVMatrix getCols (const int firstCol, const int lastCol) const
 Get submatrix composed by given column range.
const QVMatrix getRows (const int firstRow, const int lastRow) const
 Get submatrix composed by given row range.
const QVVector getRow (const int row) const
 Gets a row of the matrix.
void setRow (const int row, QVVector vector)
 Sets a row of the matrix.
void setRow (const int row, QVector< double > vector)
 Sets a row of the matrix.
const QVVector getCol (const int col) const
 Gets a column of the matrix.
void setCol (const int col, QVVector vector)
 Sets a column of the matrix.
const QVMatrix getSubmatrix (const int firstRow, const int lastRow, const int firstCol, const int lastCol) const
 Gets a submatrix from a matrix.
void setSubmatrix (const int row, const int col, const QVMatrix &M)
 Sets a submatrix from a matrix.
QVMatrix reversedRows () const
 Gets a matrix with reversed rows (bottom to top).
QVMatrix reversedCols () const
 Gets a matrix with reversed columns (right to left).
const QVVector diagonal () const
 Gets the diagonal of the matrix.
QVMatrix reshape (const int newRows, const int newCols) const
 Create a new matrix with different size and the same content.

Static Public Member Functions

static QVMatrix identity (const int size)
 Creates an identity matrix.
static QVMatrix cameraCalibrationMatrix (const double f, const double r=1.0, const double cx=0.0, const double cy=0.0, const double s=0.0)
 Creates an intrinsic camera calibration matrix.
static QVMatrix zeros (const int rows, const int cols)
 Creates a zero matrix.
static QVMatrix random (const int rows, const int cols)
 Creates a matrix of random values.
static QVMatrix diagonal (const QVVector &diagonalVector)
 Creates a diagonal matrix with given entries.
static QVMatrix rotationMatrix (const double angle)
 Create a rotation matrix for points in the 2D plane.
static QVMatrix rotationMatrix (const QPointF center, const double angle)
 Create a rotation matrix for points in the 2D plane.
static QVMatrix translationMatrix (const double x, const double y)
 Create a 2D translation matrix.
static QVMatrix scaleMatrix (const double zoom)
 Create a 2D scale matrix.
static QVMatrix rotationMatrix3dXAxis (const double angle)
 Create a rotation matrix for 3D-X axis.
static QVMatrix rotationMatrix3dYAxis (const double angle)
 Create a rotation matrix for 3D-Y axis.
static QVMatrix rotationMatrix3dZAxis (const double angle)
 Create a rotation matrix for 3D-Z axis.
static QVMatrix translationMatrix3d (const double x, const double y, const double z)
 Create a 3D translation matrix.
static QVMatrix multiply (const QList< QVMatrix > &matrices)
 Compute the product of a list of matrices.

Detailed Description

Implementation of numerical matrices.

See also:
Matrices and vectors

Definition at line 68 of file qvmatrix.h.


Member Enumeration Documentation

Matrix types.

Enumerator:
General 

General matrix.

Symmetric 

Symmetrix matrices.

UpperTriangular 

Upper triangular matrix.

LowerTriangular 

Lower triangular matrix.

Diagonal 

Diagonal matrix.

PermutationMatrix 

Permutation matrix.

Definition at line 73 of file qvmatrix.h.


Constructor & Destructor Documentation

QVMatrix::QVMatrix (  ) 

Default constructor.

By default, it constructs a 1x1 matrix.

Definition at line 38 of file qvmatrix.cpp.

Referenced by cameraCalibrationMatrix(), operator&(), and operator|().

QVMatrix::QVMatrix ( const QVMatrix matrix  ) 

Copy constructor.

Creates a matrix object copying the content from a given one.

Parameters:
matrix matrix to be copied.

Definition at line 44 of file qvmatrix.cpp.

QVMatrix::QVMatrix ( const int  rows,
const int  cols,
const double *  data = NULL 
)

Dimensional constructor.

Creates a new matrix of the specified dimensions.

Parameters:
rows number of rows for the new matrix.
cols number of rows for the new matrix.
data pointer to the data, stored in row mayor order. If no pointer, or the NULL value, is provided,

Definition at line 48 of file qvmatrix.cpp.

QVMatrix::QVMatrix ( const int  rows,
const int  cols,
const QVVector data 
)

Dimensional constructor.

Creates a new matrix of the specified dimensions.

Parameters:
rows number of rows for the new matrix.
cols number of rows for the new matrix.
data Vector containing the data, in row mayor order.

Definition at line 63 of file qvmatrix.cpp.

QVMatrix::QVMatrix ( const int  rows,
const int  cols,
const double  value 
)

Dimensional constructor with default value.

Creates a new matrix of the specified dimensions, and with each one of its cells containing a provided value.

Parameters:
rows number of rows for the new matrix.
cols number of rows for the new matrix.
value default value to set the elements of the matrix.

Definition at line 73 of file qvmatrix.cpp.

QVMatrix::QVMatrix ( const QVQuaternion quaternion  ) 

Rotation matrix constructor.

Creates a rotation matrix from a quaternion.

Parameters:
quaternion quaternion containing the rotation.
See also:
QVQuaternion::toRotationMatrix()

Definition at line 79 of file qvmatrix.cpp.

QVMatrix::QVMatrix ( const gsl_matrix *  matrix  ) 

Copy constructor for gsl_matrix.

Parameters:
matrix matrix to be copied
Warning:
This constructor requires compatibility with the GSL library

Definition at line 112 of file qvmatrix.cpp.

QVMatrix::QVMatrix ( const CvMat *  cvMatrix  ) 

OpenCV matrix conversion constructor.

This function creates a matrix importing the contents of an OpenCV matrix.

Warning:
The OpenCV compatibility option must be enabled at the QVision library compilation to use this constructor
Parameters:
cvMatrix pointer to OpenCV matrix

Definition at line 136 of file qvmatrix.cpp.

QVMatrix::QVMatrix ( const QVVector vector,
const bool  rowVector = true 
)

Octave matrix conversion constructor.

This function creates a matrix importing the contents of an Octave matrix.

Warning:
The Octave compatibility option must be enabled at the QVision library compilation to use this constructor
Parameters:
cvMatrix pointer to OpenCV matrix Converts the matrix to an Octave library matrix structure This function creates a new Octave matrix object with the same dimensions and content than the actual matrix.
Warning:
The Octave compatibility option must be enabled at the QVision library compilation to use this method
See also:
operator Matrix () Converts the matrix to an Octave library matrix structure This function creates a new Octave matrix object with the same dimensions and content than the actual matrix.
Warning:
The Octave compatibility option must be enabled at the QVision library compilation to use this operator
See also:
toOctaveMat() Vector to matrix constructor Creates a row or column matrix from a vector.
Parameters:
vector vector to convert to matrix type.
rowVector if true, creates a row matrix from the vector, else creates a column matrix from it.

Definition at line 84 of file qvmatrix.cpp.

QVMatrix::QVMatrix ( const QList< QVVector > &  vectorList  ) 

Constructor from a list of QVVectors.

Creates a new matrix from a list of row QVVectors.

Parameters:
vectorList list of row vectors.

Definition at line 93 of file qvmatrix.cpp.

QVMatrix::QVMatrix ( const QList< QVector< double > > &  vectorList  ) 

Constructor from a list of QVectors.

Creates a new matrix from a list of row QVectors.

Parameters:
vectorList list of row vectors.

Definition at line 102 of file qvmatrix.cpp.

QVMatrix::QVMatrix ( const QList< QPointF > &  pointList  ) 

Constructor from a list of QPointF.

Creates a new matrix from a list of points

Parameters:
pointList list of points.

Definition at line 129 of file qvmatrix.cpp.


Member Function Documentation

CvMat * QVMatrix::toCvMat ( const int  cvMatType = CV_64F  )  const

Converts the matrix to an OpenCV matrix structure.

This function creates a new CvMat object with the same dimensions and content of the actual matrix.

Parameters:
cvMatType OpenCV type of the elements of the new matrix. Actually two types are valid as parameters:

  • CV_32F
  • CV_64F
Note:
The OpenCV compatibility option must be enabled at the QVision library compilation to use this method
See also:
operator CvMat *()

Definition at line 143 of file qvmatrix.cpp.

Referenced by operator CvMat *().

QVMatrix::operator CvMat * (  )  const [inline]

Converts the matrix to an OpenCV matrix structure.

This function creates a new CvMat object with the same dimensions and content than the actual matrix.

Note:
The OpenCV compatibility option must be enabled at the QVision library compilation to use this operator
See also:
toCvMat()

Definition at line 183 of file qvmatrix.h.

QVMatrix::operator QList< QVVector > (  )  const [inline]

Convert to a list of QVVectors operator.

Definition at line 247 of file qvmatrix.h.

QVMatrix::operator QList< QVector< double > > (  )  const [inline]

Convert to a list of QVectors operator.

Definition at line 258 of file qvmatrix.h.

QVMatrix::operator gsl_matrix * (  )  const

Convert to a gsl_matrix * operator.

Creates a new gsl_matrix * from a matrix

Warning:
This constructor requires compatibility with the GSL library

Definition at line 119 of file qvmatrix.cpp.

QVMatrix & QVMatrix::operator= ( const QVMatrix matrix  ) 

Copy operator.

Parameters:
matrix matrix to be copied.

Definition at line 176 of file qvmatrix.cpp.

bool QVMatrix::operator== ( const QVMatrix matrix  )  const [inline]

Matrix-matrix equality operator.

Parameters:
matrix term for the compare operation.
Returns:
true if the given matrix has same dimensions and equal content of the data buffer, else false.
See also:
equals

Definition at line 293 of file qvmatrix.h.

QVMatrix& QVMatrix::operator+= ( const QVMatrix matrix  )  [inline]

Matrix-matrix incremental operator.

Parameters:
matrix addendum to the actual matrix
Returns:
true if the given matrix has same dimensions and equal content of the data buffer, else false.
See also:
equals

Definition at line 300 of file qvmatrix.h.

bool QVMatrix::operator!= ( const QVMatrix matrix  )  const [inline]

Matrix-matrix unequality operator.

Parameters:
matrix term for the compare operation.
Returns:
false if the given matrix has same dimensions and equal content of the data buffer, else true.
See also:
equals

Definition at line 311 of file qvmatrix.h.

QVMatrix QVMatrix::operator* ( const QVMatrix matrix  )  const [inline]

Matrix-matrix product operator.

Parameters:
matrix factor for the product operation.
See also:
matrixProduct

Definition at line 317 of file qvmatrix.h.

Referenced by operator-().

QVMatrix QVMatrix::operator/ ( const QVMatrix matrix  )  const [inline]

Matrix-matrix division.

The following expression:

X = A / B

is equivalent to this one

X = A * pseudoInverse(B)

With the difference that the pseudoinverse matrix for B is not directly computed. Instead, the matrix equation:

X * B = A

is solved for the X term. This leads to more stable and efficient results than using the pseudo inverse.

this operator gets X from:

X = A / B -> X * B = A -> B' * X' = A'

using a linear system resolution based on a LU decomposition over A.

Warning:
This operator requires compatibility with the GSL library.
Parameters:
matrix factor for the operation.
See also:
matrixDivide(const QVMatrix &) const

Definition at line 346 of file qvmatrix.h.

QVMatrix QVMatrix::operator+ ( const QVMatrix matrix  )  const [inline]

Matrix-matrix addition operator.

Parameters:
matrix term for the operation.
See also:
addition

Definition at line 353 of file qvmatrix.h.

QVMatrix QVMatrix::operator- ( const QVMatrix matrix  )  const [inline]

Matrix-matrix substraction operator.

Parameters:
matrix subtrahend for the operation.
See also:
substract

Definition at line 359 of file qvmatrix.h.

QVMatrix QVMatrix::operator- (  )  const [inline]

Obtains the additive inverse of the matrix.

Obtains a matrix changing the sign of its elements.

See also:
substract

Definition at line 366 of file qvmatrix.h.

QVMatrix QVMatrix::operator* ( const double  value  )  const [inline]

Matrix-scalar product.

Parameters:
value factor for the operation.
See also:
scalarProduct

Definition at line 374 of file qvmatrix.h.

QVMatrix QVMatrix::operator/ ( const double  value  )  const [inline]

Matrix-scalar division operator.

Parameters:
value divider for the operation.
See also:
scalarDivide

Definition at line 380 of file qvmatrix.h.

QVMatrix QVMatrix::operator+ ( const double  value  )  const [inline]

Matrix-scalar addition.

Parameters:
value addendum for the operation.
See also:
scalarAddition

Definition at line 386 of file qvmatrix.h.

QVMatrix QVMatrix::operator- ( const double  value  )  const [inline]

Matrix-scalar substraction operator.

Parameters:
value value to substract.
See also:
scalarSubstraction

Definition at line 392 of file qvmatrix.h.

QVVector QVMatrix::operator* ( const QVVector vector  )  const [inline]

Matrix-vector product.

Parameters:
vector vector to multiply by.

Definition at line 399 of file qvmatrix.h.

QVMatrix QVMatrix::verticalAppend ( const QVMatrix matrix  )  const

Appends matrices vertically.

Considering two matrix objects $ A $ and $ B $, this method returns the following matrix object:

$ A.verticalAppend(B) = \left[ \begin{array}{c} A \\ B \end{array} \right] $

Parameters:
matrix matrix to be appended
See also:
operator&()

Definition at line 598 of file qvmatrix.cpp.

Referenced by operator&().

QVMatrix QVMatrix::horizontalAppend ( const QVMatrix matrix  )  const

Appends matrices horizontally.

Considering two matrix objects $ A $ and $ B $, this method returns the following matrix object:

$ A.horizontalAppend(B) = \left[ A | B \right] $

Parameters:
matrix matrix to be appended
See also:
operator|()

Definition at line 572 of file qvmatrix.cpp.

Referenced by operator|().

QVMatrix QVMatrix::operator& ( const QVMatrix matrix  )  const [inline]

Appends matrices vertically.

Considering two matrix objects $ A $ and $ B $, this operator returns the following matrix object:

$ A \& B = \left[ \begin{array}{c} A \\ B \end{array} \right] $

Parameters:
matrix matrix to be appended
See also:
verticalAppend()

Definition at line 432 of file qvmatrix.h.

QVMatrix QVMatrix::operator| ( const QVMatrix matrix  )  const [inline]

Appends matrices horizontally.

Considering two matrix objects $ A $ and $ B $, this operator returns the following matrix object:

$ A | B = \left[ A | B \right] $

Parameters:
matrix matrix to be appended
See also:
horizontalAppend()

Definition at line 442 of file qvmatrix.h.

QVMatrix QVMatrix::operator& ( const QVVector vector  )  const [inline]

Appends vector to matrix vertically.

Considering a matrix object $ A $ and a vector object $ \mathbf{v} $, this operator returns the following matrix object:

$ A \& v = \left[ \begin{array}{c} A \\ \mathbf{v} \end{array} \right] $

Parameters:
vector vector to be appended
See also:
verticalAppend()

Definition at line 452 of file qvmatrix.h.

QVMatrix QVMatrix::operator| ( const QVVector vector  )  const [inline]

Appends vector to matrix horizontally.

Considering a matrix object $ A $ and a vector object $ \mathbf{v} $, this operator returns the following matrix object:

$ A | v = \left[ A | \mathbf{v} \right] $

Parameters:
vector vector to be appended
See also:
horizontalAppend()

Definition at line 462 of file qvmatrix.h.

double& QVMatrix::operator() ( const int  row,
const int  col 
) [inline]

Element access operator.

Parameters:
row main index value for data access
col secondary index value for data access

Definition at line 470 of file qvmatrix.h.

Referenced by elementProduct(), getCols(), getRows(), norm2(), QVMatrix(), reversedCols(), reversedRows(), and rowHomogeneousNormalize().

double QVMatrix::operator() ( const int  row,
const int  col 
) const [inline]

Overloaded version of element access operator.

Parameters:
row main index value for data access
col secondary index value for data access

Definition at line 477 of file qvmatrix.h.

int QVMatrix::getDataSize (  )  const [inline]

Gets the size of the data array.

This returns the number of elements in the matrix.

Returns:
the product of the sizes of all the indexes in the matrix.

Definition at line 484 of file qvmatrix.h.

Referenced by addition(), containsInf(), containsNaN(), equals(), inlineAddition(), norm2(), scalarAdd(), scalarDivide(), scalarProduct(), scalarSubstract(), set(), and substract().

const double* QVMatrix::getReadData (  )  const [inline]

Gets a read-only reference to the data buffer of the matrix.

Returns:
a constant pointer to the data buffer of the matrix

Definition at line 489 of file qvmatrix.h.

Referenced by addition(), containsInf(), containsNaN(), dotProduct(), equals(), inlineAddition(), isDiagonal(), linear3DPointTriangulation(), linearCameraCenterResection(), linearCameraResection(), norm2(), operator<<(), QVVector::QVVector(), substract(), symmetricEpipolarDistance(), transpose(), and triangularSolve().

double* QVMatrix::getWriteData (  )  [inline]
void QVMatrix::set ( const double  value  ) 

Sets every element of the matrix to a given value.

Parameters:
value value to set elements in the matrix

Todo:
use blas function cblas_axpy for data add

Definition at line 450 of file qvmatrix.cpp.

Referenced by diagonal(), identity(), and zeros().

bool QVMatrix::equals ( const QVMatrix matrix  )  const

Matrix-matrix equality operator.

Parameters:
matrix term for the compare operation.
Returns:
true if the given matrix has same dimensions and equal content of the data buffer, else false.
See also:
operator==(const QVMatrix &) const
operator!=(const QVMatrix &) const

Definition at line 198 of file qvmatrix.cpp.

Referenced by operator!=(), and operator==().

QVMatrix QVMatrix::dotProduct ( const QVMatrix matrix,
const bool  transposeFirstOperand = false,
const bool  transposeSecondOperand = false 
) const
QVVector QVMatrix::dotProduct ( const QVVector vector,
const bool  transposeMatrix = false 
) const

Matrix-vector product.

Parameters:
vector second operator for the multiplication.
See also:
operator*(const QVMatrix &) const

Definition at line 216 of file qvmatrix.cpp.

QVMatrix QVMatrix::elementProduct ( const QVMatrix matrix  )  const

Matrix-matrix element product.

This method returns a matrix containing the product of the elements at the corresponding cells of the actual matrix and the one provided as the input parameter.

Parameters:
matrix second operator for the multiplication.

Todo:
use Blas

Definition at line 323 of file qvmatrix.cpp.

QVMatrix QVMatrix::matrixDivide ( const QVMatrix matrix  )  const

Matrix-matrix division.

This function solves the X term from the following matrix equation:

X A = B

where A and B are respectively the actual matrix, and the one given by parameter. This is equivalent to using the following expression for X:

X = B A-1

but with a faster method returning a more stable result.

Parameters:
matrix factor for the operation.
See also:
operator/(const QVMatrix &) const

Definition at line 349 of file qvmatrix.cpp.

Referenced by operator/().

void QVMatrix::triangularSolve ( const QVVector b,
QVVector x,
bool  transposed = false,
bool  unit_diagonal = false 
) const

Triangular system solving (vector of RHS).

This function solves the x term from the following equation:

L x = b

where L and b are respectively the actual matrix (which is triangular), and the rhs vector given by parameter.

Warning:
This method requires compatibility with the GSL library.
Parameters:
b vector for the right hand side (input).
x vector with the solution (output).

Definition at line 364 of file qvmatrix.cpp.

Referenced by solveFromCholeskyDecomposition(), solveFromLUDecomposition(), and solveFromQRDecomposition().

void QVMatrix::triangularSolve ( const QVMatrix B,
QVMatrix X,
bool  transposed = false,
bool  unit_diagonal = false,
bool  left = true 
) const

Triangular system solving (matrix of RHS).

This function solves the X term from the following matrix equation:

L X = B

where L and B are respectively the actual matrix (which is triangular), and the one given by parameter.

Warning:
This method requires compatibility with the GSL library.
Parameters:
B vector for the right hand side (input).
X vector with the solution (output).

Definition at line 392 of file qvmatrix.cpp.

QVMatrix QVMatrix::inverse (  )  const

Computes the inverse of the matrix.

Warning:
This method requires compatibility with the GSL library.

Por ahora con la misma pseudoinversa, sería mejor de otro modo...

Definition at line 421 of file qvmatrix.cpp.

Referenced by BhattacharyyaDistance(), and getCameraPoseFromCalibratedHomography().

double QVMatrix::det (  )  const

Computes the determinant of the matrix.

Warning:
This method requires compatibility with the GSL library.

Definition at line 427 of file qvmatrix.cpp.

Referenced by BhattacharyyaDistance().

QVVector QVMatrix::meanCol (  )  const

Obtains the mean vector for the column vectors in the matrix.

Definition at line 953 of file qvmatrix.cpp.

QVMatrix QVMatrix::addition ( const QVMatrix matrix  )  const

Matrix-matrix addition.

Parameters:
matrix operand for the add operation.
See also:
operator+(const QVMatrix &) const

Todo:
use blas function cblas_axpy for data add

Definition at line 460 of file qvmatrix.cpp.

Referenced by operator+().

void QVMatrix::inlineAddition ( const QVMatrix matrix  ) 

Matrix-matrix addition.

Parameters:
matrix operand for the add operation.
See also:
operator+=(const QVMatrix &) const

Todo:
use blas function cblas_axpy for data add

Definition at line 478 of file qvmatrix.cpp.

Referenced by operator+=().

QVMatrix QVMatrix::substract ( const QVMatrix matrix  )  const

Matrix-matrix substraction.

Parameters:
matrix subtrahend for the operation.
See also:
operator-(const QVMatrix &) const

Todo:
use blas function cblas_axpy for data add

Definition at line 493 of file qvmatrix.cpp.

Referenced by operator-().

QVMatrix QVMatrix::scalarDivide ( const double  value  )  const

Matrix-scalar division.

Parameters:
value scalar value to use in the operation.
See also:
operator/(const double) const

Todo:
use blas function?

Definition at line 527 of file qvmatrix.cpp.

Referenced by operator/().

QVMatrix QVMatrix::scalarProduct ( const double  value  )  const

Matrix-scalar product.

Parameters:
value factor for the operation.
See also:
operator*(const double) const

Todo:
use blas function?

Definition at line 512 of file qvmatrix.cpp.

Referenced by operator*(), and operator*().

QVMatrix QVMatrix::scalarAdd ( const double  value  )  const

Matrix-scalar addition.

Parameters:
value summand for the operation.
See also:
operator+(const double) const

Todo:
use blas function?

Definition at line 542 of file qvmatrix.cpp.

Referenced by operator+(), and operator+().

QVMatrix QVMatrix::scalarSubstract ( const double  value  )  const

Matrix-scalar substraction.

Parameters:
value value to substract.
See also:
operator-(const double) const

Todo:
use blas function?

Definition at line 557 of file qvmatrix.cpp.

Referenced by operator-(), and operator-().

double QVMatrix::norm2 (  )  const

Gets the norm2 for matrix.

The resulting value will be the square root of the following sumatory:

$ \|A\|_2 := \sqrt{ \sum |a_{ij}|^2 } $

where $ a_{ij} $ are the elements of the matrix $ A $.

Returns:
norm-2 of the matrix.

Definition at line 626 of file qvmatrix.cpp.

Referenced by QVQuaternion::QVQuaternion(), and QVUKF::update().

double QVMatrix::trace (  )  const

Gets the trace of the matrix.

The trace of the matrix is the sum of the diagonal elements:

$ \mathrm{tr}(A) = a_{11} + a_{22} + \dots + a_{nn}=\sum_{i=1}^{n} a_{i i} $

where $ a_{ij} $ are the elements of the matrix $ A $.

Returns:
trace of the matrix.

Definition at line 645 of file qvmatrix.cpp.

bool QVMatrix::containsNaN (  )  const

Checks whether the matrix contains a NaN value or not.

Returns:
true if any of the values contained in the matrix is a NaN, false otherwise.

Definition at line 667 of file qvmatrix.cpp.

Referenced by linearCameraPairInitialization(), optimizeReprojectionErrorForCameraPoseCauchy(), and QVQuaternion::QVQuaternion().

bool QVMatrix::containsInf (  )  const

Checks whether the matrix contains an infinite value or not.

Returns:
true if any of the values contained in the matrix is infinite, false otherwise.

Definition at line 679 of file qvmatrix.cpp.

bool QVMatrix::isDiagonal (  )  const

Checks whether the matrix is a diagonal matrix or not.

Returns:
true if any of the values outside of the matrix diagonal differs from zero, false otherwise.

Definition at line 654 of file qvmatrix.cpp.

QVMatrix QVMatrix::rowHomogeneousNormalize (  )  const

Homogeneous normalization for rows of the matrix.

Todo:
explain homogeneous normalization
Returns:
norm-2 of the matrix.

Definition at line 691 of file qvmatrix.cpp.

MatrixType QVMatrix::getType (  )  const [inline]

Get type of the matrix.

See documentation for enum MatrixType. This matrix feature must nowadays be set by handi. In a future, the matrix type will be detected when certain matrix operations and decopositions will be performed.

Returns:
Matrix type. See documentation for enum MatrixType.

Definition at line 696 of file qvmatrix.h.

Referenced by triangularSolve().

void QVMatrix::setType ( MatrixType  type  )  [inline]

Set type of the matrix.

See documentation for enum MatrixType. This matrix feature must nowadays be set by handi. In a future, the matrix type will be detected when certain matrix operations and decopositions will be performed.

Returns:
number of columns for the matrix.

Definition at line 704 of file qvmatrix.h.

Referenced by LQDecomposition(), QLDecomposition(), RQDecomposition(), solveFromLUDecomposition(), and solveFromQRDecomposition().

const QVMatrix QVMatrix::getCols ( const int  firstCol,
const int  lastCol 
) const [inline]

Get submatrix composed by given column range.

Parameters:
firstCol first column to be included in the submatrix.
lastCol last column to be included in the submatrix.
Returns:
Submatrix containing the columns in the specificated range

Definition at line 711 of file qvmatrix.h.

const QVMatrix QVMatrix::getRows ( const int  firstRow,
const int  lastRow 
) const [inline]

Get submatrix composed by given row range.

Parameters:
firstRow first row to be included in the submatrix.
lastRow last row to be included in the submatrix.
Returns:
Submatrix containing the rows in the specificated range

Definition at line 729 of file qvmatrix.h.

const QVVector QVMatrix::getRow ( const int  row  )  const

Gets a row of the matrix.

Parameters:
row row number, a value within [0, r-1], for a matrix with 'r' rows
Returns:
a vector containing the values of the row

Definition at line 702 of file qvmatrix.cpp.

Referenced by computeAffineHomography(), QVPermutation::fromMatrix(), getSubmatrix(), operator QList< QVector< double > >(), operator QList< QVVector >(), QVUKF::update(), and verticalAppend().

void QVMatrix::setRow ( const int  row,
QVVector  vector 
)

Sets a row of the matrix.

Parameters:
row row number, a value within [0, r-1], for a matrix with 'r' rows
vector a vector containing the values for the row

Definition at line 714 of file qvmatrix.cpp.

Referenced by getSubmatrix(), QVMatrix(), QVVector::toRowMatrix(), QVUKF::update(), and verticalAppend().

void QVMatrix::setRow ( const int  row,
QVector< double >  vector 
)

Sets a row of the matrix.

Parameters:
row row number, a value within [0, r-1], for a matrix with 'r' rows
vector a vector containing the values for the row

Definition at line 724 of file qvmatrix.cpp.

const QVVector QVMatrix::getCol ( const int  col  )  const

Gets a column of the matrix.

Parameters:
col column number, a value within [0, c-1], for a matrix with 'c' columns
Returns:
a vector containing the values of the column

Definition at line 734 of file qvmatrix.cpp.

Referenced by computeProjectiveHomography(), getCameraPoseFromCalibratedHomography(), getCameraPosesFromEssentialMatrix(), horizontalAppend(), meanCol(), pseudoInverse(), and solveHomogeneous().

void QVMatrix::setCol ( const int  col,
QVVector  vector 
)

Sets a column of the matrix.

Parameters:
col column number, a value within [0, c-1], for a matrix with 'c' columns
vector a vector containing the values for the column

Definition at line 746 of file qvmatrix.cpp.

Referenced by getCameraPoseFromCalibratedHomography(), horizontalAppend(), QVMatrix(), and QVVector::toColumnMatrix().

const QVMatrix QVMatrix::getSubmatrix ( const int  firstRow,
const int  lastRow,
const int  firstCol,
const int  lastCol 
) const

Gets a submatrix from a matrix.

Parameters:
firstCol first column number for the submatrix
firstRow first row number for the submatrix
lastCol last column number for the submatrix
lastRow last row number for the submatrix
Returns:
a submatrix of size (lastRow - firstRow + 1)x(lastCol - firstCol + 1) containing the corresponding elements from the original matrix.
Todo:
This method is very slow. Optimize it with blas code.

Definition at line 768 of file qvmatrix.cpp.

Referenced by QVEuclideanMapping3::QVEuclideanMapping3(), QVSparseBlockMatrix::QVSparseBlockMatrix(), and testCheirality().

void QVMatrix::setSubmatrix ( const int  row,
const int  col,
const QVMatrix M 
)

Sets a submatrix from a matrix.

Parameters:
row first column number for the submatrix
col first row number for the submatrix
M Submatrix

Definition at line 785 of file qvmatrix.cpp.

Referenced by QVSparseBlockMatrix::operator QVMatrix().

QVMatrix QVMatrix::reversedRows (  )  const

Gets a matrix with reversed rows (bottom to top).

Returns:
reversed matrix.

Definition at line 797 of file qvmatrix.cpp.

Referenced by QLDecomposition(), and RQDecomposition().

QVMatrix QVMatrix::reversedCols (  )  const

Gets a matrix with reversed columns (right to left).

Returns:
reversed matrix.

Definition at line 809 of file qvmatrix.cpp.

Referenced by QLDecomposition(), and RQDecomposition().

const QVVector QVMatrix::diagonal (  )  const

Gets the diagonal of the matrix.

Returns:
a vector containing the values of the diagonal

Definition at line 757 of file qvmatrix.cpp.

Referenced by eigenDecompositionResidual(), and singularValueDecompositionResidual().

QVMatrix QVMatrix::cameraCalibrationMatrix ( const double  f,
const double  r = 1.0,
const double  cx = 0.0,
const double  cy = 0.0,
const double  s = 0.0 
) [static]

Creates an intrinsic camera calibration matrix.

This function returns the following $ 3 \times 3 $ matrix, corresponding to the intrinsic calibration matrix of a camera:

$K = \left(\begin{array}{ccc} f & s & c_x \\ 0 & rf & c_y \\ 0 & 0 & 1 \end{array}\right)$

provided the intrinsic parameters $ f $, $ r $, $ c_x $, $ c_y $ and $ s $ of that camera.

Parameters:
f value for the camera focal
r aspect ratio
cx first coordinate for the principal point of the image
cy second coordinate for the principal point of the image
s camera skew

Definition at line 833 of file qvmatrix.cpp.

Referenced by computeCameraFocalFromPlanarHomography(), getCameraFocals(), and readReconstruction_NVM().

QVMatrix QVMatrix::zeros ( const int  rows,
const int  cols 
) [static]

Creates a zero matrix.

Parameters:
rows number of cols and rows for the identity matrix
cols number of cols and rows for the identity matrix

Definition at line 839 of file qvmatrix.cpp.

QVMatrix QVMatrix::random ( const int  rows,
const int  cols 
) [static]

Creates a matrix of random values.

This function returns a matrix containing random values, from a uniform distribution [0,1].

Parameters:
rows rows of the matrix
cols cols of the matrix

Definition at line 846 of file qvmatrix.cpp.

Referenced by QVSparseBlockMatrix::randomSquare().

QVMatrix QVMatrix::diagonal ( const QVVector diagonalVector  )  [static]

Creates a diagonal matrix with given entries.

Parameters:
diagonalVector vector containing the diagonal values

Definition at line 855 of file qvmatrix.cpp.

QVMatrix QVMatrix::rotationMatrix ( const double  angle  )  [static]

Create a rotation matrix for points in the 2D plane.

Parameters:
angle angle to rotate around coordinate center

Definition at line 865 of file qvmatrix.cpp.

Referenced by computeSimilarHomography(), and rotationMatrix().

QVMatrix QVMatrix::rotationMatrix ( const QPointF  center,
const double  angle 
) [static]

Create a rotation matrix for points in the 2D plane.

Parameters:
angle angle to rotate around coordinate center
center point at the center of the rotation

Definition at line 876 of file qvmatrix.cpp.

QVMatrix QVMatrix::translationMatrix ( const double  x,
const double  y 
) [static]

Create a 2D translation matrix.

Parameters:
x increment in X axis
y increment in Y axis

Definition at line 882 of file qvmatrix.cpp.

Referenced by computeSimilarHomography(), and rotationMatrix().

QVMatrix QVMatrix::scaleMatrix ( const double  zoom  )  [static]

Create a 2D scale matrix.

Parameters:
zoom scale

Definition at line 893 of file qvmatrix.cpp.

Referenced by computeSimilarHomography().

QVMatrix QVMatrix::rotationMatrix3dXAxis ( const double  angle  )  [static]

Create a rotation matrix for 3D-X axis.

Parameters:
angle angle to rotate around X axis in radians

Definition at line 916 of file qvmatrix.cpp.

QVMatrix QVMatrix::rotationMatrix3dYAxis ( const double  angle  )  [static]

Create a rotation matrix for 3D-Y axis.

Parameters:
angle angle to rotate around Y axis in radians

Definition at line 929 of file qvmatrix.cpp.

QVMatrix QVMatrix::rotationMatrix3dZAxis ( const double  angle  )  [static]

Create a rotation matrix for 3D-Z axis.

Parameters:
angle angle to rotate around Z axis in radians

Definition at line 903 of file qvmatrix.cpp.

QVMatrix QVMatrix::translationMatrix3d ( const double  x,
const double  y,
const double  z 
) [static]

Create a 3D translation matrix.

Parameters:
x increment in X axis
y increment in Y axis
z increment in Z axis

Definition at line 942 of file qvmatrix.cpp.

QVMatrix QVMatrix::reshape ( const int  newRows,
const int  newCols 
) const [inline]

Create a new matrix with different size and the same content.

This method creates a matrix with the dimensions specified in the input arguments, keeping the elements of the actual matrix.

Parameters:
rows 
cols 

Definition at line 897 of file qvmatrix.h.

static QVMatrix QVMatrix::multiply ( const QList< QVMatrix > &  matrices  )  [inline, static]

Compute the product of a list of matrices.

Parameters:
matrices matrice list
Warning:
Either GSL or MLK compatibilty must be enabled for this function.

Definition at line 908 of file qvmatrix.h.


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



QVision framework. PARP research group. Copyright © 2007, 2008, 2009, 2010, 2011.