Loading...
Searching...
No Matches
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...

#include <juce_Matrix.h>

Public Member Functions

 Matrix (size_t numRows, size_t numColumns)
 Creates a new matrix with a given number of rows and columns.
 
 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.
 
 Matrix (const Matrix &)=default
 Creates a copy of another matrix.
 
 Matrix (Matrix &&) noexcept=default
 Moves a copy of another matrix.
 
Matrixoperator= (const Matrix &)=default
 Creates a copy of another matrix.
 
Matrixoperator= (Matrix &&) noexcept=default
 Moves another matrix into this one.
 
size_t getNumRows () const noexcept
 Returns the number of rows in the matrix.
 
size_t getNumColumns () const noexcept
 Returns the number of columns in the matrix.
 
Array< size_t > getSize () const noexcept
 Returns an Array of 2 integers with the number of rows and columns in the matrix.
 
void clear () noexcept
 Fills the contents of the matrix with zeroes.
 
MatrixswapRows (size_t rowOne, size_t rowTwo) noexcept
 Swaps the contents of two rows in the matrix and returns a reference to itself.
 
MatrixswapColumns (size_t columnOne, size_t columnTwo) noexcept
 Swaps the contents of two columns in the matrix and returns a reference to itself.
 
ElementType operator() (size_t row, size_t column) const noexcept
 Returns the value of the matrix at a given row and column (for reading).
 
ElementType & operator() (size_t row, size_t column) noexcept
 Returns the value of the matrix at a given row and column (for modifying).
 
ElementType * getRawDataPointer () noexcept
 Returns a pointer to the raw data of the matrix object, ordered in row-major order (for modifying).
 
const ElementType * getRawDataPointer () const noexcept
 Returns a pointer to the raw data of the matrix object, ordered in row-major order (for reading).
 
Matrixoperator+= (const Matrix &other) noexcept
 Addition of two matrices.
 
Matrixoperator-= (const Matrix &other) noexcept
 Subtraction of two matrices.
 
Matrixoperator*= (ElementType scalar) noexcept
 Scalar multiplication.
 
Matrix operator+ (const Matrix &other) const
 Addition of two matrices.
 
Matrix operator- (const Matrix &other) const
 Addition of two matrices.
 
Matrix operator* (ElementType scalar) const
 Scalar multiplication.
 
Matrix operator* (const Matrix &other) const
 Matrix multiplication.
 
Matrixhadarmard (const Matrix &other) noexcept
 Does a hadarmard product with the receiver and other and stores the result in the receiver.
 
bool operator== (const Matrix &other) const noexcept
 
bool isSquare () const noexcept
 Tells if the matrix is a square matrix.
 
bool isVector () const noexcept
 Tells if the matrix is a vector.
 
bool isOneColumnVector () const noexcept
 Tells if the matrix is a one column vector.
 
bool isOneRowVector () const noexcept
 Tells if the matrix is a one row vector.
 
bool isNullMatrix () const noexcept
 Tells if the matrix is a null matrix.
 
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.
 
String toString () const
 Returns a String displaying in a convenient way the matrix contents.
 
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.
 
static Matrix toeplitz (const Matrix &vector, size_t size)
 Creates a Toeplitz Matrix from a vector with a given squared size.
 
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.
 
static Matrix hadarmard (const Matrix &a, const Matrix &b)
 Does a hadarmard product with a and b returns the result.
 
static bool compare (const Matrix &a, const Matrix &b, ElementType tolerance=0) noexcept
 Compare to matrices with a given tolerance.
 

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.

◆ 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

Fills the contents of the matrix with zeroes.

References zeromem().

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

◆ 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 column, Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getReference(), jassert, and row.

◆ 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 column, Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getReference(), jassert, and row.

◆ 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).

◆ 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).

◆ 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 equations 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:
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram