Public Member Functions | Static Public Member Functions | List of all members
dsp::Matrix< ElementType > Class Template Reference

General matrix and vectors class, meant for classic math manipulation such as additions, multiplications, and linear systems of equations solving. More...

Public Member Functions

 Matrix (size_t numRows, size_t numColumns)
 Creates a new matrix with a given number of rows and columns. More...
 
 Matrix (size_t numRows, size_t numColumns, const ElementType *dataPointer)
 Creates a new matrix with a given number of rows and columns, with initial data coming from an array, stored in row-major order. More...
 
 Matrix (const Matrix &)=default
 Creates a copy of another matrix. More...
 
 Matrix (Matrix &&) noexcept=default
 Moves a copy of another matrix. More...
 
Matrixoperator= (const Matrix &)=default
 Creates a copy of another matrix. More...
 
Matrixoperator= (Matrix &&) noexcept=default
 Moves another matrix into this one. More...
 
size_t getNumRows () const noexcept
 Returns the number of rows in the matrix. More...
 
size_t getNumColumns () const noexcept
 Returns the number of columns in the matrix. More...
 
Array< size_t > getSize () const noexcept
 Returns an Array of 2 integers with the number of rows and columns in the matrix. More...
 
void clear () noexcept
 Fills the contents of the matrix with zeroes. More...
 
MatrixswapRows (size_t rowOne, size_t rowTwo) noexcept
 Swaps the contents of two rows in the matrix and returns a reference to itself. More...
 
MatrixswapColumns (size_t columnOne, size_t columnTwo) noexcept
 Swaps the contents of two columns in the matrix and returns a reference to itself. More...
 
ElementType operator() (size_t row, size_t column) const noexcept
 Returns the value of the matrix at a given row and column (for reading). More...
 
ElementType & operator() (size_t row, size_t column) noexcept
 Returns the value of the matrix at a given row and column (for modifying). More...
 
ElementType * getRawDataPointer () noexcept
 Returns a pointer to the raw data of the matrix object, ordered in row-major order (for modifying). More...
 
const ElementType * getRawDataPointer () const noexcept
 Returns a pointer to the raw data of the matrix object, ordered in row-major order (for reading). More...
 
Matrixoperator+= (const Matrix &other) noexcept
 Addition of two matrices. More...
 
Matrixoperator-= (const Matrix &other) noexcept
 Subtraction of two matrices. More...
 
Matrixoperator*= (ElementType scalar) noexcept
 Scalar multiplication. More...
 
Matrix operator+ (const Matrix &other) const
 Addition of two matrices. More...
 
Matrix operator- (const Matrix &other) const
 Addition of two matrices. More...
 
Matrix operator* (ElementType scalar) const
 Scalar multiplication. More...
 
Matrix operator* (const Matrix &other) const
 Matrix multiplication. More...
 
Matrixhadarmard (const Matrix &other) noexcept
 Does a hadarmard product with the receiver and other and stores the result in the receiver. More...
 
bool operator== (const Matrix &other) const noexcept
 
bool isSquare () const noexcept
 Tells if the matrix is a square matrix. More...
 
bool isVector () const noexcept
 Tells if the matrix is a vector. More...
 
bool isOneColumnVector () const noexcept
 Tells if the matrix is a one column vector. More...
 
bool isOneRowVector () const noexcept
 Tells if the matrix is a one row vector. More...
 
bool isNullMatrix () const noexcept
 Tells if the matrix is a null matrix. More...
 
bool solve (Matrix &b) const noexcept
 Solves a linear system of equations represented by this object and the argument b, using various algorithms depending on the size of the arguments. More...
 
String toString () const
 Returns a String displaying in a convenient way the matrix contents. More...
 
ElementType * begin () noexcept
 
ElementType * end () noexcept
 
const ElementType * begin () const noexcept
 
const ElementType * end () const noexcept
 

Static Public Member Functions

static Matrix identity (size_t size)
 Creates the identity matrix. More...
 
static Matrix toeplitz (const Matrix &vector, size_t size)
 Creates a Toeplitz Matrix from a vector with a given squared size. More...
 
static Matrix hankel (const Matrix &vector, size_t size, size_t offset=0)
 Creates a squared size x size Hankel Matrix from a vector with an optional offset. More...
 
static Matrix hadarmard (const Matrix &a, const Matrix &b)
 Does a hadarmard product with a and b returns the result. More...
 
static bool compare (const Matrix &a, const Matrix &b, ElementType tolerance=0) noexcept
 Compare to matrices with a given tolerance. More...
 

Detailed Description

template<typename ElementType>
class dsp::Matrix< ElementType >

General matrix and vectors class, meant for classic math manipulation such as additions, multiplications, and linear systems of equations solving.

See also
LinearAlgebra

Constructor & Destructor Documentation

◆ Matrix() [1/4]

template<typename ElementType >
dsp::Matrix< ElementType >::Matrix ( size_t  numRows,
size_t  numColumns 
)

Creates a new matrix with a given number of rows and columns.

References dsp::Matrix< ElementType >::clear().

◆ Matrix() [2/4]

template<typename ElementType >
dsp::Matrix< ElementType >::Matrix ( size_t  numRows,
size_t  numColumns,
const ElementType *  dataPointer 
)

Creates a new matrix with a given number of rows and columns, with initial data coming from an array, stored in row-major order.

References Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getRawDataPointer().

◆ Matrix() [3/4]

template<typename ElementType >
dsp::Matrix< ElementType >::Matrix ( const Matrix< ElementType > &  )
default

Creates a copy of another matrix.

◆ Matrix() [4/4]

template<typename ElementType >
dsp::Matrix< ElementType >::Matrix ( Matrix< ElementType > &&  )
defaultnoexcept

Moves a copy of another matrix.

Member Function Documentation

◆ operator=() [1/2]

template<typename ElementType >
Matrix& dsp::Matrix< ElementType >::operator= ( const Matrix< ElementType > &  )
default

Creates a copy of another matrix.

◆ operator=() [2/2]

template<typename ElementType >
Matrix& dsp::Matrix< ElementType >::operator= ( Matrix< ElementType > &&  )
defaultnoexcept

Moves another matrix into this one.

◆ identity()

template<typename ElementType >
static Matrix dsp::Matrix< ElementType >::identity ( size_t  size)
static

Creates the identity matrix.

◆ toeplitz()

template<typename ElementType >
static Matrix dsp::Matrix< ElementType >::toeplitz ( const Matrix< ElementType > &  vector,
size_t  size 
)
static

Creates a Toeplitz Matrix from a vector with a given squared size.

◆ hankel()

template<typename ElementType >
static Matrix dsp::Matrix< ElementType >::hankel ( const Matrix< ElementType > &  vector,
size_t  size,
size_t  offset = 0 
)
static

Creates a squared size x size Hankel Matrix from a vector with an optional offset.

Parameters
vectorThe vector from which the Hankel matrix should be generated. Its number of rows should be at least 2 * (size - 1) + 1
sizeThe size of resulting square matrix.
offsetAn optional offset into the given vector.

◆ getNumRows()

template<typename ElementType >
size_t dsp::Matrix< ElementType >::getNumRows ( ) const
noexcept

Returns the number of rows in the matrix.

◆ getNumColumns()

template<typename ElementType >
size_t dsp::Matrix< ElementType >::getNumColumns ( ) const
noexcept

Returns the number of columns in the matrix.

◆ getSize()

template<typename ElementType >
Array<size_t> dsp::Matrix< ElementType >::getSize ( ) const
noexcept

Returns an Array of 2 integers with the number of rows and columns in the matrix.

◆ clear()

template<typename ElementType >
void dsp::Matrix< ElementType >::clear ( )
noexcept

◆ swapRows()

template<typename ElementType >
Matrix& dsp::Matrix< ElementType >::swapRows ( size_t  rowOne,
size_t  rowTwo 
)
noexcept

Swaps the contents of two rows in the matrix and returns a reference to itself.

◆ swapColumns()

template<typename ElementType >
Matrix& dsp::Matrix< ElementType >::swapColumns ( size_t  columnOne,
size_t  columnTwo 
)
noexcept

Swaps the contents of two columns in the matrix and returns a reference to itself.

◆ operator()() [1/2]

template<typename ElementType >
ElementType dsp::Matrix< ElementType >::operator() ( size_t  row,
size_t  column 
) const
noexcept

Returns the value of the matrix at a given row and column (for reading).

References Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getReference(), and jassert.

◆ operator()() [2/2]

template<typename ElementType >
ElementType& dsp::Matrix< ElementType >::operator() ( size_t  row,
size_t  column 
)
noexcept

Returns the value of the matrix at a given row and column (for modifying).

References Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getReference(), and jassert.

◆ getRawDataPointer() [1/2]

template<typename ElementType >
ElementType* dsp::Matrix< ElementType >::getRawDataPointer ( )
noexcept

Returns a pointer to the raw data of the matrix object, ordered in row-major order (for modifying).

References Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getRawDataPointer().

◆ getRawDataPointer() [2/2]

template<typename ElementType >
const ElementType* dsp::Matrix< ElementType >::getRawDataPointer ( ) const
noexcept

Returns a pointer to the raw data of the matrix object, ordered in row-major order (for reading).

References Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::begin().

◆ operator+=()

template<typename ElementType >
Matrix& dsp::Matrix< ElementType >::operator+= ( const Matrix< ElementType > &  other)
noexcept

Addition of two matrices.

◆ operator-=()

template<typename ElementType >
Matrix& dsp::Matrix< ElementType >::operator-= ( const Matrix< ElementType > &  other)
noexcept

Subtraction of two matrices.

◆ operator*=()

template<typename ElementType >
Matrix& dsp::Matrix< ElementType >::operator*= ( ElementType  scalar)
noexcept

◆ operator+()

template<typename ElementType >
Matrix dsp::Matrix< ElementType >::operator+ ( const Matrix< ElementType > &  other) const

Addition of two matrices.

◆ operator-()

template<typename ElementType >
Matrix dsp::Matrix< ElementType >::operator- ( const Matrix< ElementType > &  other) const

Addition of two matrices.

◆ operator*() [1/2]

template<typename ElementType >
Matrix dsp::Matrix< ElementType >::operator* ( ElementType  scalar) const

Scalar multiplication.

◆ operator*() [2/2]

template<typename ElementType >
Matrix dsp::Matrix< ElementType >::operator* ( const Matrix< ElementType > &  other) const

Matrix multiplication.

◆ hadarmard() [1/2]

template<typename ElementType >
Matrix& dsp::Matrix< ElementType >::hadarmard ( const Matrix< ElementType > &  other)
noexcept

Does a hadarmard product with the receiver and other and stores the result in the receiver.

Referenced by dsp::Matrix< ElementType >::hadarmard().

◆ hadarmard() [2/2]

template<typename ElementType >
static Matrix dsp::Matrix< ElementType >::hadarmard ( const Matrix< ElementType > &  a,
const Matrix< ElementType > &  b 
)
static

Does a hadarmard product with a and b returns the result.

References dsp::Matrix< ElementType >::hadarmard().

◆ compare()

template<typename ElementType >
static bool dsp::Matrix< ElementType >::compare ( const Matrix< ElementType > &  a,
const Matrix< ElementType > &  b,
ElementType  tolerance = 0 
)
staticnoexcept

Compare to matrices with a given tolerance.

Referenced by dsp::Matrix< ElementType >::operator==().

◆ operator==()

template<typename ElementType >
bool dsp::Matrix< ElementType >::operator== ( const Matrix< ElementType > &  other) const
noexcept

◆ isSquare()

template<typename ElementType >
bool dsp::Matrix< ElementType >::isSquare ( ) const
noexcept

Tells if the matrix is a square matrix.

◆ isVector()

template<typename ElementType >
bool dsp::Matrix< ElementType >::isVector ( ) const
noexcept

◆ isOneColumnVector()

template<typename ElementType >
bool dsp::Matrix< ElementType >::isOneColumnVector ( ) const
noexcept

Tells if the matrix is a one column vector.

Referenced by dsp::Matrix< ElementType >::isVector().

◆ isOneRowVector()

template<typename ElementType >
bool dsp::Matrix< ElementType >::isOneRowVector ( ) const
noexcept

Tells if the matrix is a one row vector.

Referenced by dsp::Matrix< ElementType >::isVector().

◆ isNullMatrix()

template<typename ElementType >
bool dsp::Matrix< ElementType >::isNullMatrix ( ) const
noexcept

Tells if the matrix is a null matrix.

◆ solve()

template<typename ElementType >
bool dsp::Matrix< ElementType >::solve ( Matrix< ElementType > &  b) const
noexcept

Solves a linear system of equations represented by this object and the argument b, using various algorithms depending on the size of the arguments.

The matrix must be a square matrix N times N, and b must be a vector N times 1, with the coefficients of b. After the execution of the algorithm, the vector b will contain the solution.

Returns true if the linear system of euqations was successfully solved.

◆ toString()

template<typename ElementType >
String dsp::Matrix< ElementType >::toString ( ) const

Returns a String displaying in a convenient way the matrix contents.

◆ begin() [1/2]

template<typename ElementType >
ElementType* dsp::Matrix< ElementType >::begin ( )
noexcept

◆ end() [1/2]

template<typename ElementType >
ElementType* dsp::Matrix< ElementType >::end ( )
noexcept

◆ begin() [2/2]

template<typename ElementType >
const ElementType* dsp::Matrix< ElementType >::begin ( ) const
noexcept

◆ end() [2/2]

template<typename ElementType >
const ElementType* dsp::Matrix< ElementType >::end ( ) const
noexcept

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