![]() |
University of Murcia, Spain ![]() |
QVMatrix Class ReferenceImplementation of numerical matrices.
More...
|
Public Member Functions | |
QVMatrix () | |
Default constructor. | |
QVMatrix (const QVMatrix &matrix) | |
Copy constructor. | |
QVMatrix (const int rows, const int cols) | |
Dimensional constructor. | |
QVMatrix (const QVQuaternion &quaternion) | |
Rotation matrix constructor. | |
QVMatrix (const QVVector &vector, const bool rowVector=true) | |
Vector to matrix 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 gsl_matrix *matrix) | |
Copy constructor for gsl_matrix. | |
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. | |
QVMatrix & | operator= (const QVMatrix &matrix) |
Copy operator. | |
bool | operator== (const QVMatrix &matrix) const |
Matrix-matrix equality 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 |
Matrix negation. | |
QVMatrix | operator* (const double value) const |
Matrix-scalar product. | |
QVMatrix | operator/ (const double value) const |
Matrix-scalar division operator. | |
QVVector | operator* (QVVector &vector) const |
Matrix-vector product. | |
double & | operator() (const int row, const int col) |
Cell access operator. | |
const double | operator() (const int row, const int col) const |
Overloaded version of cell access operator. | |
const 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 the value of the elements of the matrix. | |
bool | equals (const QVMatrix &matrix) const |
Matrix-matrix equality operator. | |
QVMatrix | dotProduct (const QVMatrix &matrix) const |
Matrix-matrix product. | |
QVMatrix | matrixDivide (const QVMatrix &matrix) const |
Matrix-matrix division. | |
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. | |
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. | |
double | norm2 () const |
Gets the norm2 for matrix. | |
QVMatrix | rowHomogeneousNormalize () const |
Homogeneous normalization for rows of the matrix. | |
const int | getCols () const |
Get width of the matrix. | |
const int | getRows () const |
Get height of the matrix. | |
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. | |
Static Public Member Functions | |
static QVMatrix | identity (const int size) |
Creates an identity matrix. | |
static QVMatrix | random (const int rows, const int cols) |
Creates a random matrix. | |
static QVMatrix | diagonal (const QVVector &diagonalVector) |
Creates a diagonal matrix. | |
static QVMatrix | rotationMatrix (const double angle) |
Create a planar rotation matrix. | |
static QVMatrix | traslationMatrix (const double x, const double y) |
Create a 3D traslation matrix. | |
static QVMatrix | scaleMatrix (const double zoom) |
Create a 3D translation 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 | traslationMatrix3d (const double x, const double y, const double z) |
Create a 3D translation matrix. |
Definition at line 40 of file qvmatrix.h.
QVMatrix::QVMatrix | ( | ) |
Default constructor.
By default, it constructs a 1x1 matrix.
Definition at line 32 of file qvmatrix.cpp.
Referenced by operator*().
QVMatrix::QVMatrix | ( | const QVMatrix & | matrix | ) |
Copy constructor.
Creates a matrix object copying the content from a given one.
matrix | matrix to be copied. |
Definition at line 36 of file qvmatrix.cpp.
QVMatrix::QVMatrix | ( | const int | rows, | |
const int | cols | |||
) |
Dimensional constructor.
Creates a new matrix of the specified dimensions.
rows | number of rows for the new matrix. | |
cols | number of rows for the new matrix. |
Definition at line 40 of file qvmatrix.cpp.
QVMatrix::QVMatrix | ( | const QVQuaternion & | quaternion | ) |
Rotation matrix constructor.
Creates a rotation matrix equivalent to a quaternion.
quaternion | quaternion equivalent to the rotation. |
Definition at line 44 of file qvmatrix.cpp.
QVMatrix::QVMatrix | ( | const QVVector & | vector, | |
const bool | rowVector = true | |||
) |
Vector to matrix constructor.
Creates a row or column matrix from a vector.
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 61 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.
vectorList | list of row vectors. |
Definition at line 69 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.
vectorList | list of row vectors. |
Definition at line 78 of file qvmatrix.cpp.
QVMatrix::QVMatrix | ( | const gsl_matrix * | matrix | ) |
Copy constructor for gsl_matrix.
matrix | matrix to be copied |
Definition at line 87 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
pointList | list of points. |
Definition at line 94 of file qvmatrix.cpp.
bool QVMatrix::operator== | ( | const QVMatrix & | matrix | ) | const [inline] |
Matrix-matrix equality operator.
matrix | term for the compare operation. |
Definition at line 152 of file qvmatrix.h.
bool QVMatrix::operator!= | ( | const QVMatrix & | matrix | ) | const [inline] |
Matrix-matrix unequality operator.
matrix | term for the compare operation. |
Definition at line 159 of file qvmatrix.h.
Matrix-matrix product operator.
matrix | factor for the product operation. |
Definition at line 165 of file qvmatrix.h.
Referenced by operator-().
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.
matrix | factor for the operation. |
Definition at line 192 of file qvmatrix.h.
Matrix-matrix addition operator.
matrix | term for the operation. |
Definition at line 198 of file qvmatrix.h.
Matrix-matrix substraction operator.
matrix | subtrahend for the operation. |
Definition at line 204 of file qvmatrix.h.
QVMatrix QVMatrix::operator- | ( | ) | const [inline] |
Matrix negation.
Obtains a matrix negating all the elements of the original.
Definition at line 211 of file qvmatrix.h.
QVMatrix QVMatrix::operator* | ( | const double | value | ) | const [inline] |
Matrix-scalar product.
value | factor for the operation. |
Definition at line 219 of file qvmatrix.h.
QVMatrix QVMatrix::operator/ | ( | const double | value | ) | const [inline] |
Matrix-scalar division operator.
value | divider for the operation. |
Definition at line 225 of file qvmatrix.h.
Matrix-vector product.
vector | vector to multiply by. |
Definition at line 111 of file qvmatrix.cpp.
double& QVMatrix::operator() | ( | const int | row, | |
const int | col | |||
) | [inline] |
Cell access operator.
row | main index value for data access | |
col | secondary index value for data access |
Definition at line 240 of file qvmatrix.h.
Referenced by getSubmatrix(), QVMatrix(), and rowHomogeneousNormalize().
const double QVMatrix::operator() | ( | const int | row, | |
const int | col | |||
) | const [inline] |
Overloaded version of cell access operator.
row | main index value for data access | |
col | secondary index value for data access |
Definition at line 247 of file qvmatrix.h.
const int QVMatrix::getDataSize | ( | ) | const [inline] |
Gets the size of the data array.
This returns the number of elements in the matrix.
Definition at line 254 of file qvmatrix.h.
Referenced by addition(), eigenDecomposition(), equals(), norm2(), scalarDivide(), scalarProduct(), set(), and substract().
const double* QVMatrix::getReadData | ( | ) | const [inline] |
Gets a read-only reference to the data buffer of the matrix.
Definition at line 259 of file qvmatrix.h.
Referenced by addition(), dotProduct(), eigenDecomposition(), equals(), GetDirectIntrinsicCameraMatrixFromHomography(), norm2(), operator<<(), QVVector::QVVector(), solveLinear(), solveOverDetermined(), substract(), and transpose().
double* QVMatrix::getWriteData | ( | ) | [inline] |
Gets a reference of the data buffer of the matrix for read and write accesses.
Definition at line 264 of file qvmatrix.h.
Referenced by addition(), CholeskyDecomposition(), dotProduct(), LUDecomposition(), pseudoInverse(), QRDecomposition(), scalarDivide(), scalarProduct(), set(), solveLinear(), solveOverDetermined(), substract(), and transpose().
QVMatrix QVMatrix::transpose | ( | ) | const |
Change the order of the indexes in the matrix.
This function reorders the indexes of the matrix.
Definition at line 184 of file qvmatrix.cpp.
Referenced by ComputeEuclideanHomography(), eigenDecomposition(), matrixDivide(), pseudoInverse(), and solveHomogeneousLinear2().
void QVMatrix::set | ( | const double | value | ) |
Sets the value of the elements of the matrix.
value | value to set elements in the matrix |
Definition at line 201 of file qvmatrix.cpp.
Referenced by diagonal(), and identity().
bool QVMatrix::equals | ( | const QVMatrix & | matrix | ) | const |
Matrix-matrix equality operator.
matrix | term for the compare operation. |
Definition at line 119 of file qvmatrix.cpp.
Referenced by operator!=(), and operator==().
Matrix-matrix product.
matrix | factor for the operation. |
Definition at line 136 of file qvmatrix.cpp.
Referenced by operator*().
Matrix-matrix division.
This function solves the X term from the following matrix equation:
matrix | factor for the operation. |
Definition at line 158 of file qvmatrix.cpp.
Referenced by operator/().
QVMatrix QVMatrix::inverse | ( | ) | const |
Computes the inverse of the matrix.
Por ahora con la misma pseudoinversa, serĂa mejor de otro modo...
Definition at line 173 of file qvmatrix.cpp.
Referenced by BhattacharyyaDistance().
Matrix-matrix addition.
matrix | operand for the add operation. |
Definition at line 212 of file qvmatrix.cpp.
Referenced by operator+().
Matrix-matrix substraction.
matrix | subtrahend for the operation. |
Definition at line 230 of file qvmatrix.cpp.
Referenced by operator-().
QVMatrix QVMatrix::scalarDivide | ( | const double | value | ) | const |
Matrix-scalar division.
value | scalar value to use in the operation. |
Definition at line 264 of file qvmatrix.cpp.
Referenced by operator/().
QVMatrix QVMatrix::scalarProduct | ( | const double | value | ) | const |
Matrix-scalar product.
value | factor for the operation. |
Definition at line 249 of file qvmatrix.cpp.
Referenced by operator*().
double QVMatrix::norm2 | ( | ) | const |
Gets the norm2 for matrix.
The resulting value will be the square root of the following sumatory:
where are the elements of the matrix
.
Definition at line 279 of file qvmatrix.cpp.
Referenced by solveHomogeneousLinear2().
QVMatrix QVMatrix::rowHomogeneousNormalize | ( | ) | const |
Homogeneous normalization for rows of the matrix.
Definition at line 283 of file qvmatrix.cpp.
const int QVMatrix::getCols | ( | ) | const [inline] |
Get width of the matrix.
Definition at line 360 of file qvmatrix.h.
Referenced by CholeskyDecomposition(), determinant(), eigenDecomposition(), Filter(), getCol(), getRow(), getSubmatrix(), LUDecomposition(), matrixDivide(), meanCol(), operator*(), operator<<(), pseudoInverse(), qHash(), QRDecomposition(), QVMatrix(), rowHomogeneousNormalize(), setCol(), setRow(), singularValueDecomposition(), solveHomogeneousLinear(), solveHomogeneousLinear2(), solveLinear(), solveOverDetermined(), and transpose().
const int QVMatrix::getRows | ( | ) | const [inline] |
Get height of the matrix.
Definition at line 365 of file qvmatrix.h.
Referenced by CholeskyDecomposition(), determinant(), eigenDecomposition(), Filter(), getCol(), getRow(), getSubmatrix(), LUDecomposition(), matrixDivide(), operator QList< QVector< double > >(), operator QList< QVVector >(), QVVector::operator*(), operator<<(), pseudoInverse(), qHash(), QRDecomposition(), QVMatrix(), regressionLine(), rowHomogeneousNormalize(), setCol(), setRow(), singularValueDecomposition(), solveHomogeneousLinear2(), solveLinear(), solveOverDetermined(), and transpose().
const QVVector QVMatrix::getRow | ( | const int | row | ) | const |
Gets a row of the matrix.
row | row number, a value within [0, r-1], for a matrix with 'r' rows |
Definition at line 294 of file qvmatrix.cpp.
Referenced by operator QList< QVector< double > >(), operator QList< QVVector >(), and solveHomogeneousLinear2().
void QVMatrix::setRow | ( | const int | row, | |
QVVector | vector | |||
) |
Sets a row of the matrix.
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 306 of file qvmatrix.cpp.
Referenced by QVMatrix().
void QVMatrix::setRow | ( | const int | row, | |
QVector< double > | vector | |||
) |
Sets a row of the matrix.
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 316 of file qvmatrix.cpp.
const QVVector QVMatrix::getCol | ( | const int | col | ) | const |
Gets a column of the matrix.
col | column number, a value within [0, c-1], for a matrix with 'c' columns |
Definition at line 326 of file qvmatrix.cpp.
Referenced by GetExtrinsicCameraMatrixFromHomography(), HomographyTestError(), meanCol(), operator*(), solveHomogeneousLinear(), and solveHomogeneousLinear2().
void QVMatrix::setCol | ( | const int | col, | |
QVVector | vector | |||
) |
Sets a column of the matrix.
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 338 of file qvmatrix.cpp.
Referenced by GetExtrinsicCameraMatrixFromHomography(), QVMatrix(), and solveHomogeneousLinear2().
const QVMatrix QVMatrix::getSubmatrix | ( | const int | firstRow, | |
const int | lastRow, | |||
const int | firstCol, | |||
const int | lastCol | |||
) | const |
Gets a submatrix from a matrix.
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 |
Definition at line 348 of file qvmatrix.cpp.
QVMatrix QVMatrix::identity | ( | const int | size | ) | [static] |
Creates an identity matrix.
size | number of cols and rows for the identity matrix |
Definition at line 371 of file qvmatrix.cpp.
Referenced by ComputeEuclideanHomography(), GetDirectIntrinsicCameraMatrixFromHomography(), GetIntrinsicCameraMatrixFromHomography(), QVPlanarRectifierWorker::iterate(), QVMatrix(), rotationMatrix(), rotationMatrix3dXAxis(), rotationMatrix3dYAxis(), rotationMatrix3dZAxis(), scaleMatrix(), traslationMatrix(), and traslationMatrix3d().
QVMatrix QVMatrix::random | ( | const int | rows, | |
const int | cols | |||
) | [static] |
Creates a random matrix.
Matrix with elements values from 0 to 1.
rows | rows of the matrix | |
cols | cols of the matrix |
Definition at line 380 of file qvmatrix.cpp.
Creates a diagonal matrix.
Matrix with elements values from 0 to 1.
diagonalVector | vector containing the diagonal values |
Definition at line 389 of file qvmatrix.cpp.
Referenced by singularValueDecomposition().
QVMatrix QVMatrix::rotationMatrix | ( | const double | angle | ) | [static] |
Create a planar rotation matrix.
angle | angle to rotate around coordinate center |
Definition at line 399 of file qvmatrix.cpp.
QVMatrix QVMatrix::traslationMatrix | ( | const double | x, | |
const double | y | |||
) | [static] |
Create a 3D traslation matrix.
x | increment in X axis | |
y | increment in Y axis |
Definition at line 410 of file qvmatrix.cpp.
Referenced by QVPlanarRectifierWorker::iterate().
QVMatrix QVMatrix::scaleMatrix | ( | const double | zoom | ) | [static] |
QVMatrix QVMatrix::rotationMatrix3dXAxis | ( | const double | angle | ) | [static] |
Create a rotation matrix for 3D-X axis.
angle | angle to rotate around X axis in radians |
Definition at line 444 of file qvmatrix.cpp.
QVMatrix QVMatrix::rotationMatrix3dYAxis | ( | const double | angle | ) | [static] |
Create a rotation matrix for 3D-Y axis.
angle | angle to rotate around Y axis in radians |
Definition at line 457 of file qvmatrix.cpp.
QVMatrix QVMatrix::rotationMatrix3dZAxis | ( | const double | angle | ) | [static] |
Create a rotation matrix for 3D-Z axis.
angle | angle to rotate around Z axis in radians |
Definition at line 431 of file qvmatrix.cpp.
QVMatrix QVMatrix::traslationMatrix3d | ( | const double | x, | |
const double | y, | |||
const double | z | |||
) | [static] |
Create a 3D translation matrix.
x | increment in X axis | |
y | increment in Y axis | |
z | increment in Z axis |
Definition at line 470 of file qvmatrix.cpp.