Public Member Functions | Static Public Member Functions

fawkes::Matrix Class Reference

A general matrix class. More...

#include <>>

Inheritance diagram for fawkes::Matrix:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 Matrix (unsigned int num_rows=0, unsigned int num_cols=0, float *data=0, bool manage_own_memory=true)
 Constructor.
 Matrix (const Matrix &tbc)
 Copy-constructor.
 ~Matrix ()
 Destructor.
void size (unsigned int &num_rows, unsigned int &num_cols) const
 Determines the dimensions of the matrix.
unsigned int num_rows () const
 Return the number of rows in the Matrix.
unsigned int num_cols () const
 Return the number of columns in the Matrix.
Matrixid ()
 Sets the diagonal elements to 1.0 and all other to 0.0.
Matrixtranspose ()
 Transposes the matrix.
Matrix get_transpose () const
 Computes a matrix that is the transposed of this matrix.
Matrixinvert ()
 Inverts the matrix.
Matrix get_inverse () const
 Computes a matrix that is the inverse of this matrix.
float det () const
 Computes the determinant of the matrix.
const float * get_data () const
 Returns the const data pointer.
float * get_data ()
 Returns the data pointer.
Matrix get_submatrix (unsigned int row, unsigned int col, unsigned int num_rows, unsigned int num_cols) const
 Returns a submatrix of the matrix.
void overlay (unsigned int row, unsigned int col, const Matrix &m)
 Overlays another matrix over this matrix.
float operator() (unsigned int row, unsigned int col) const
 (Read-only) Access-operator.
float & operator() (unsigned int row, unsigned int col)
 (RW) Access operator.
Matrixoperator= (const Matrix &rhs)
 Assignment operator.
Matrix operator* (const Matrix &rhs) const
 Matrix multiplication operator.
Matrixoperator*= (const Matrix &rhs)
 Combined matrix-multipliation and assignement operator.
Vector operator* (const Vector &cv) const
 Multiply the matrix with given vector.
Matrix operator* (const float &f) const
 Mulitply every element of the matrix with the given scalar.
Matrixoperator*= (const float &f)
 Combined scalar multiplication and assignment operator.
Matrix operator/ (const float &f) const
 Divide every element of the matrix with the given scalar.
Matrixoperator/= (const float &f)
 Combined scalar division and assignment operator.
Matrix operator+ (const Matrix &rhs) const
 Addition operator.
Matrixoperator+= (const Matrix &rhs)
 Add-assign operator.
Matrix operator- (const Matrix &rhs) const
 Subtraction operator.
Matrixoperator-= (const Matrix &rhs)
 Subtract-assign operator.
bool operator== (const Matrix &rhs) const
 Comparison operator.
void print_info (const char *name=0, const char *col_sep=0, const char *row_sep=0) const
 Print matrix to standard out.

Static Public Member Functions

static Matrix get_id (unsigned int size, float *data_buffer=0)
 Creates a quadratic matrix with dimension size and sets the diagonal elements to 1.0.
static Matrix get_diag (unsigned int size, float value, float *data_buffer=0)
 Creates a quadratic matrix with dimension size and sets the diagonal elements to value.

Detailed Description

A general matrix class.

It provides all the operations that are commonly used with a matrix, but has been optimized with typical robotic applications in mind. That meas especially that the chose data type is single-precision float and the class has been optimized for small matrices (up to about 10x10).

Author:
Daniel Beck
Masrur Doostdar
Christof Rath

Definition at line 33 of file matrix.h.


Constructor & Destructor Documentation

fawkes::Matrix::Matrix ( unsigned int  num_rows = 0,
unsigned int  num_cols = 0,
float *  data = 0,
bool  manage_own_memory = true 
)

Constructor.

Parameters:
num_rows number of rows
num_cols number of columns
data array containing elements of the matrix in row-by-row-order
manage_own_memory if true, the Matrix will manage its memory on its own, else it will not allocate new memory but works with the provided array

Definition at line 89 of file matrix.cpp.

Referenced by firevision::CCDCalibration::CCDCalibration().

fawkes::Matrix::Matrix ( const Matrix tbc  ) 

Copy-constructor.

Parameters:
tbc matrix to be copied

Definition at line 125 of file matrix.cpp.

fawkes::Matrix::~Matrix (  ) 

Destructor.

Definition at line 138 of file matrix.cpp.


Member Function Documentation

float fawkes::Matrix::det (  )  const

Computes the determinant of the matrix.

Returns:
the determinant

Definition at line 361 of file matrix.cpp.

References invert().

const float * fawkes::Matrix::get_data (  )  const [inline]

Returns the const data pointer.

Returns:
the data pointer

Definition at line 57 of file matrix.h.

float * fawkes::Matrix::get_data (  )  [inline]

Returns the data pointer.

Returns:
the data pointer

Definition at line 58 of file matrix.h.

Matrix fawkes::Matrix::get_diag ( unsigned int  size,
float  value,
float *  data_buffer = 0 
) [static]

Creates a quadratic matrix with dimension size and sets the diagonal elements to value.

All other elements are set to 0.0.

Parameters:
size dimension of the matrix
value of the elements of the main diagonal
data_buffer if != NULL the given float array will be used as data internal data store (the object will not perform any memory management in this case)
Returns:
the diag matrix object

Definition at line 194 of file matrix.cpp.

Matrix fawkes::Matrix::get_id ( unsigned int  size,
float *  data_buffer = 0 
) [static]

Creates a quadratic matrix with dimension size and sets the diagonal elements to 1.0.

All other elements are set to 0.0.

Parameters:
size dimension of the matrix
data_buffer if != NULL the given float array will be used as data internal data store (the object will not perform any memory management in this case)
Returns:
the id matrix object

Definition at line 180 of file matrix.cpp.

Matrix fawkes::Matrix::get_inverse (  )  const

Computes a matrix that is the inverse of this matrix.

Returns:
a matrix that is the inverse of this matrix

Definition at line 349 of file matrix.cpp.

Matrix fawkes::Matrix::get_submatrix ( unsigned int  row,
unsigned int  col,
unsigned int  num_rows,
unsigned int  num_cols 
) const

Returns a submatrix of the matrix.

Parameters:
row the row in the original matrix of the top-left element in the submatrix
col the column in the original matrix of the top-left element in the submatrix
num_rows the number of rows of the submatrix
num_cols the number of columns of the submatrix
Returns:
the submatrix

Definition at line 402 of file matrix.cpp.

Referenced by firevision::ProjectiveCam::get_GPA_p(), fawkes::HomTransform::invert(), firevision::Calibration::K(), and firevision::ProjectiveCam::set_location().

Matrix fawkes::Matrix::get_transpose (  )  const

Computes a matrix that is the transposed of this matrix.

Returns:
a matrix that is the transposed of this matrix

Definition at line 281 of file matrix.cpp.

Matrix & fawkes::Matrix::id (  ) 

Sets the diagonal elements to 1.0 and all other to 0.0.

Returns:
a reference to the matrix object

Definition at line 159 of file matrix.cpp.

References num_cols(), and num_rows().

Referenced by firevision::Calibration::Calibration(), fawkes::HomTransform::HomTransform(), firevision::Calibration::K(), and fawkes::HomTransform::reset().

Matrix & fawkes::Matrix::invert (  ) 

Inverts the matrix.

The algorithm that is implemented for computing the inverse of the matrix is the Gauss-Jordan-Algorithm. Hereby, the block- matrix (A|I) consisting of the matrix to be inverted (A) and the identity matrix (I) is transformed into (I|A^(-1)).

Returns:
a reference to the matrix object which contains now the inverted matrix

Definition at line 304 of file matrix.cpp.

Referenced by det(), and firevision::ProjectiveCam::set_location().

unsigned int fawkes::Matrix::num_cols (  )  const [inline]

Return the number of columns in the Matrix.

Returns:
the number of columns

Definition at line 43 of file matrix.h.

Referenced by id().

unsigned int fawkes::Matrix::num_rows (  )  const [inline]

Return the number of rows in the Matrix.

Returns:
the number of rows

Definition at line 42 of file matrix.h.

Referenced by id().

float fawkes::Matrix::operator() ( unsigned int  row,
unsigned int  col 
) const

(Read-only) Access-operator.

With this operator it is possible to access a specific element of the matrix. (First element is at (0, 0)

Parameters:
row the row of the element
col the column of the element
Returns:
the value of the specified element

Definition at line 459 of file matrix.cpp.

float & fawkes::Matrix::operator() ( unsigned int  row,
unsigned int  col 
)

(RW) Access operator.

see the read-only access operator for operational details

Parameters:
row the row of the element
col the column of the element
Returns:
a reference to the specified element

Definition at line 476 of file matrix.cpp.

Matrix fawkes::Matrix::operator* ( const Matrix rhs  )  const

Matrix multiplication operator.

(Matrix)a.operator*((Matrix)b) computes a * b; i.e., the 2nd matrix is right-multiplied to the 1st matrix

Parameters:
rhs the right-hand-side matrix
Returns:
the product of the two matrices (a * b)

Definition at line 522 of file matrix.cpp.

Vector fawkes::Matrix::operator* ( const Vector v  )  const

Multiply the matrix with given vector.

Parameters:
v a vector
Returns:
the result of the matrix-vector multiplication

Definition at line 614 of file matrix.cpp.

Matrix fawkes::Matrix::operator* ( const float &  f  )  const

Mulitply every element of the matrix with the given scalar.

Parameters:
f a scalar
Returns:
the result of the multiplication

Definition at line 646 of file matrix.cpp.

Matrix & fawkes::Matrix::operator*= ( const Matrix rhs  ) 

Combined matrix-multipliation and assignement operator.

Parameters:
rhs the right-hand-side Matrix
Returns:
a reference to the Matrix that contains the result of the multiplication

Definition at line 559 of file matrix.cpp.

Matrix & fawkes::Matrix::operator*= ( const float &  f  ) 

Combined scalar multiplication and assignment operator.

Parameters:
f a scalar
Returns:
reference to the result

Definition at line 664 of file matrix.cpp.

Matrix fawkes::Matrix::operator+ ( const Matrix rhs  )  const

Addition operator.

Adds the corresponding elements of the two matrices.

Parameters:
rhs the right-hand-side matrix
Returns:
the resulting matrix

Definition at line 713 of file matrix.cpp.

Matrix & fawkes::Matrix::operator+= ( const Matrix rhs  ) 

Add-assign operator.

Parameters:
rhs the right-hand-side matrix
Returns:
a reference to the resulting matrix (this)

Definition at line 738 of file matrix.cpp.

Matrix fawkes::Matrix::operator- ( const Matrix rhs  )  const

Subtraction operator.

Subtracts the corresponding elements of the two matrices.

Parameters:
rhs the right-hand-side matrix
Returns:
the resulting matrix

Definition at line 762 of file matrix.cpp.

Matrix & fawkes::Matrix::operator-= ( const Matrix rhs  ) 

Subtract-assign operator.

Parameters:
rhs the right-hand-side matrix
Returns:
a reference to the resulting matrix (this)

Definition at line 788 of file matrix.cpp.

Matrix fawkes::Matrix::operator/ ( const float &  f  )  const

Divide every element of the matrix with the given scalar.

Parameters:
f a scalar
Returns:
the result of the divison

Definition at line 679 of file matrix.cpp.

Matrix & fawkes::Matrix::operator/= ( const float &  f  ) 

Combined scalar division and assignment operator.

Parameters:
f a scalar
Returns:
reference to the result

Definition at line 697 of file matrix.cpp.

Matrix & fawkes::Matrix::operator= ( const Matrix m  ) 

Assignment operator.

Copies the data form the rhs Matrix to the lhs Matrix.

Parameters:
m the rhs Matrix
Returns:
a reference to this Matrix

Definition at line 493 of file matrix.cpp.

bool fawkes::Matrix::operator== ( const Matrix rhs  )  const

Comparison operator.

Parameters:
rhs the right-hand-side Matrix
Returns:
true if every element of this matrix is equal to the corresponding element of the other matrix

Definition at line 812 of file matrix.cpp.

void fawkes::Matrix::overlay ( unsigned int  row,
unsigned int  col,
const Matrix over 
)

Overlays another matrix over this matrix.

Parameters:
row the top-most row from which onwards the the elements are exchanged for corresponding elements in the given matrix
col the left-most column from which onwards the the elements are exchanged for corresponding elements in the given matrix
over the matrix to be overlaid

Definition at line 432 of file matrix.cpp.

Referenced by firevision::ProjectiveCam::get_GPA_p(), fawkes::HomTransform::invert(), firevision::Calibration::K(), and firevision::ProjectiveCam::set_location().

void fawkes::Matrix::print_info ( const char *  name = 0,
const char *  col_sep = 0,
const char *  row_sep = 0 
) const

Print matrix to standard out.

Parameters:
name a name that is printed before the content of the matrix (not required)
col_sep a string used to separate columns (defaults to '\t')
row_sep a string used to separate rows (defaults to '\n')

Definition at line 877 of file matrix.cpp.

Referenced by fawkes::HomTransform::print_info(), and firevision::ProjectiveCam::print_info().

void fawkes::Matrix::size ( unsigned int &  num_rows,
unsigned int &  num_cols 
) const

Determines the dimensions of the matrix.

Parameters:
num_cols pointer to an unsigned int to where the number of columns is copied to
num_rows pointer to an unsigned int to where the number of rows is copied to

Definition at line 148 of file matrix.cpp.

Referenced by firevision::Calibration::K().

Matrix & fawkes::Matrix::transpose (  ) 

Transposes the matrix.

Returns:
a reference to the matrix object now containing the transposed matrix

Definition at line 220 of file matrix.cpp.

Referenced by fawkes::HomTransform::invert().


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