![]() |
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 int rows, const int cols, const double value) | |
Dimensional constructor with default value. | |
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. | |
o () const | |
Convert to a list of QVVectors operator. | |
o () 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 * (const 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 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 |
Matrix-matrix product. | |
QVMatrix | elementProduct (const QVMatrix &matrix) const |
Matrix-matrix element product. | |
QVMatrix | matrixDivide (const QVMatrix &matrix) const |
Matrix-matrix division. | |
QVMatrix | inverse () const |
double | det () const |
QVVector | meanCol () const |
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 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. | |
Static Public Member Functions | |
static QVMatrix | identity (const int size) |
Creates an identity 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 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 2D traslation 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 | traslationMatrix3d (const double x, const double y, const double z) |
Create a 3D translation matrix. |
Definition at line 44 of file qvmatrix.h.
QVMatrix::QVMatrix | ( | ) |
Default constructor.
By default, it constructs a 1x1 matrix.
Definition at line 36 of file qvmatrix.cpp.
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 40 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 44 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.
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 48 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 54 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 90 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 99 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 108 of file qvmatrix.cpp.
QVMatrix::QVMatrix | ( | const gsl_matrix * | matrix | ) |
Copy constructor for gsl_matrix.
matrix | matrix to be copied |
Definition at line 117 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 124 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 194 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 201 of file qvmatrix.h.
Matrix-matrix product operator.
matrix | factor for the product operation. |
Definition at line 207 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 234 of file qvmatrix.h.
Matrix-matrix addition operator.
matrix | term for the operation. |
Definition at line 240 of file qvmatrix.h.
Matrix-matrix substraction operator.
matrix | subtrahend for the operation. |
Definition at line 246 of file qvmatrix.h.
QVMatrix QVMatrix::operator- | ( | ) | const [inline] |
Matrix negation.
Obtains a matrix negating all the elements of the original.
Definition at line 253 of file qvmatrix.h.
QVMatrix QVMatrix::operator * | ( | const double | value | ) | const [inline] |
Matrix-scalar product.
value | factor for the operation. |
Definition at line 261 of file qvmatrix.h.
QVMatrix QVMatrix::operator/ | ( | const double | value | ) | const [inline] |
Matrix-scalar division operator.
value | divider for the operation. |
Definition at line 267 of file qvmatrix.h.
Matrix-vector product.
vector | vector to multiply by. |
Definition at line 164 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 282 of file qvmatrix.h.
Referenced by elementProduct(), getCols(), getRows(), 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 289 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 296 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 301 of file qvmatrix.h.
Referenced by addition(), dotProduct(), eigenDecomposition(), equals(), 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 306 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 270 of file qvmatrix.cpp.
Referenced by ComputeEuclideanHomography(), eigenDecomposition(), getMeanDirection(), GetPinholeCameraIntrinsicsFromPlanarHomography(), matrixDivide(), pseudoInverse(), and solveHomogeneousLinear2().
void QVMatrix::set | ( | const double | value | ) |
Sets every element of the matrix to a given value.
value | value to set elements in the matrix |
Definition at line 287 of file qvmatrix.cpp.
Referenced by diagonal(), identity(), and zeros().
bool QVMatrix::equals | ( | const QVMatrix & | matrix | ) | const |
Matrix-matrix equality operator.
matrix | term for the compare operation. |
Definition at line 172 of file qvmatrix.cpp.
Referenced by operator!=(), and operator==().
Matrix-matrix product.
matrix | second operator for the multiplication. |
Definition at line 189 of file qvmatrix.cpp.
Referenced by QVVector::operator *(), and operator *().
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.
matrix | second operator for the multiplication. |
Definition at line 219 of file qvmatrix.cpp.
Matrix-matrix division.
This function solves the X term from the following matrix equation:
matrix | factor for the operation. |
Definition at line 244 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 259 of file qvmatrix.cpp.
Referenced by BhattacharyyaDistance().
double QVMatrix::det | ( | ) | const |
Computes the determinant of the matrix.
Definition at line 265 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 572 of file qvmatrix.cpp.
Referenced by getMeanDirection().
Matrix-matrix addition.
matrix | operand for the add operation. |
Definition at line 297 of file qvmatrix.cpp.
Referenced by operator+().
Matrix-matrix substraction.
matrix | subtrahend for the operation. |
Definition at line 315 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 349 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 334 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 364 of file qvmatrix.cpp.
Referenced by solveHomogeneousLinear2().
QVMatrix QVMatrix::rowHomogeneousNormalize | ( | ) | const |
Homogeneous normalization for rows of the matrix.
Definition at line 368 of file qvmatrix.cpp.
const int QVMatrix::getCols | ( | ) | const [inline] |
Get width of the matrix.
Definition at line 410 of file qvmatrix.h.
Referenced by CholeskyDecomposition(), determinant(), eigenDecomposition(), Filter(), getCol(), getCols(), getMeanDirection(), getRow(), getRows(), getSubmatrix(), LUDecomposition(), matrixDivide(), meanCol(), QVVector::operator *(), operator *(), operator<<(), pseudoInverse(), qHash(), QRDecomposition(), QVMatrix(), QVQuaternion::QVQuaternion(), rowHomogeneousNormalize(), setCol(), setRow(), singularValueDecomposition(), solveHomogeneousLinear(), solveHomogeneousLinear2(), solveLinear(), solveOverDetermined(), and transpose().
const int QVMatrix::getRows | ( | ) | const [inline] |
Get height of the matrix.
Definition at line 415 of file qvmatrix.h.
Referenced by CholeskyDecomposition(), determinant(), eigenDecomposition(), Filter(), getCol(), getCols(), getRow(), getRows(), getSubmatrix(), LUDecomposition(), matrixDivide(), o(), QVVector::operator *(), operator<<(), pseudoInverse(), qHash(), QRDecomposition(), QVMatrix(), regressionLine(), rowHomogeneousNormalize(), setCol(), setRow(), solveHomogeneousLinear2(), solveLinear(), solveOverDetermined(), and transpose().
const QVMatrix QVMatrix::getCols | ( | const int | firstCol, | |
const int | lastCol | |||
) | const [inline] |
Get submatrix composed by given column range.
firstCol | first column to be included in the submatrix. | |
lastCol | last column to be included in the submatrix. |
Definition at line 422 of file qvmatrix.h.
const QVMatrix QVMatrix::getRows | ( | const int | firstRow, | |
const int | lastRow | |||
) | const [inline] |
Get submatrix composed by given row range.
firstRow | first row to be included in the submatrix. | |
lastRow | last row to be included in the submatrix. |
Definition at line 440 of file qvmatrix.h.
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 379 of file qvmatrix.cpp.
Referenced by o(), QVVector::operator *(), 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 391 of file qvmatrix.cpp.
Referenced by QVMatrix(), and QVVector::toRowMatrix().
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 401 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 411 of file qvmatrix.cpp.
Referenced by CalibrateCameraFromPlanarHomography(), GetExtrinsicCameraMatrixFromHomography(), getMeanDirection(), 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 423 of file qvmatrix.cpp.
Referenced by CalibrateCameraFromPlanarHomography(), GetExtrinsicCameraMatrixFromHomography(), getMeanDirection(), QVMatrix(), solveHomogeneousLinear2(), 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.
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 433 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 455 of file qvmatrix.cpp.
Referenced by ComputeEuclideanHomography(), GetDirectIntrinsicCameraMatrixFromHomography(), QVMatrix(), rotationMatrix(), rotationMatrix3dXAxis(), rotationMatrix3dYAxis(), rotationMatrix3dZAxis(), scaleMatrix(), traslationMatrix(), and traslationMatrix3d().
QVMatrix QVMatrix::zeros | ( | const int | rows, | |
const int | cols | |||
) | [static] |
Creates a zero matrix.
rows | number of cols and rows for the identity matrix | |
cols | number of cols and rows for the identity matrix |
Definition at line 464 of file qvmatrix.cpp.
Referenced by GetPinholeCameraIntrinsicsFromPlanarHomography().
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 471 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 480 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 490 of file qvmatrix.cpp.
QVMatrix QVMatrix::traslationMatrix | ( | const double | x, | |
const double | y | |||
) | [static] |
Create a 2D traslation matrix.
x | increment in X axis | |
y | increment in Y axis |
Definition at line 501 of file qvmatrix.cpp.
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 535 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 548 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 522 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 561 of file qvmatrix.cpp.