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. 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... | |
ElementType * | begin () noexcept |
const ElementType * | begin () const noexcept |
void | clear () noexcept |
Fills the contents of the matrix with zeroes. More... | |
ElementType * | end () noexcept |
const ElementType * | end () const noexcept |
size_t | getNumColumns () const noexcept |
Returns the number of columns in the matrix. More... | |
size_t | getNumRows () const noexcept |
Returns the number of rows in the matrix. 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... | |
Array< size_t > | getSize () const noexcept |
Returns an Array of 2 integers with the number of rows and columns in the matrix. More... | |
Matrix & | hadarmard (const Matrix &other) noexcept |
Does a hadarmard product with the receiver and other and stores the result in the receiver. More... | |
bool | isNullMatrix () const noexcept |
Tells if the matrix is a null matrix. 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 | isSquare () const noexcept |
Tells if the matrix is a square matrix. More... | |
bool | isVector () const noexcept |
Tells if the matrix is a vector. 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... | |
Matrix | operator* (ElementType scalar) const |
Scalar multiplication. More... | |
Matrix | operator* (const Matrix &other) const |
Matrix multiplication. More... | |
Matrix & | operator*= (ElementType scalar) noexcept |
Scalar multiplication. More... | |
Matrix | operator+ (const Matrix &other) const |
Addition of two matrices. More... | |
Matrix & | operator+= (const Matrix &other) noexcept |
Addition of two matrices. More... | |
Matrix | operator- (const Matrix &other) const |
Addition of two matrices. More... | |
Matrix & | operator-= (const Matrix &other) noexcept |
Subtraction of two matrices. More... | |
Matrix & | operator= (const Matrix &)=default |
Creates a copy of another matrix. More... | |
Matrix & | operator= (Matrix &&) noexcept=default |
Moves another matrix into this one. More... | |
bool | operator== (const Matrix &other) const noexcept |
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... | |
Matrix & | swapColumns (size_t columnOne, size_t columnTwo) noexcept |
Swaps the contents of two columns in the matrix and returns a reference to itself. More... | |
Matrix & | swapRows (size_t rowOne, size_t rowTwo) noexcept |
Swaps the contents of two rows in the matrix and returns a reference to itself. More... | |
String | toString () const |
Returns a String displaying in a convenient way the matrix contents. More... | |
Static Public Member Functions | |
static bool | compare (const Matrix &a, const Matrix &b, ElementType tolerance=0) noexcept |
Compare to matrices with a given tolerance. More... | |
static Matrix | hadarmard (const Matrix &a, const Matrix &b) |
Does a hadarmard product with a and b returns the result. 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 | 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... | |
Private Member Functions | |
template<typename BinaryOperation > | |
Matrix & | apply (const Matrix &other, BinaryOperation binaryOp) |
void | resize () |
Resizes the matrix. More... | |
Private Attributes | |
size_t | columns |
Array< ElementType > | data |
Array< size_t > | dataAcceleration |
size_t | rows |
General matrix and vectors class, meant for classic math manipulation such as additions, multiplications, and linear systems of equations solving.
|
inline |
Creates a new matrix with a given number of rows and columns.
References Matrix< ElementType >::clear(), and Matrix< ElementType >::resize().
Referenced by Matrix< ElementType >::Matrix().
|
inline |
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 Matrix< ElementType >::columns, Matrix< ElementType >::data, Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getRawDataPointer(), Matrix< ElementType >::hankel(), Matrix< ElementType >::identity(), Matrix< ElementType >::Matrix(), Matrix< ElementType >::operator=(), Matrix< ElementType >::resize(), Matrix< ElementType >::rows, and Matrix< ElementType >::toeplitz().
|
default |
Creates a copy of another matrix.
|
defaultnoexcept |
Moves a copy of another matrix.
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
Fills the contents of the matrix with zeroes.
References Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::begin(), Matrix< ElementType >::data, Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::size(), Matrix< ElementType >::swapColumns(), Matrix< ElementType >::swapRows(), and zeromem().
Referenced by Matrix< ElementType >::Matrix().
|
staticnoexcept |
Compare to matrices with a given tolerance.
Referenced by Matrix< ElementType >::hadarmard(), and Matrix< ElementType >::operator==().
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
Returns the number of columns in the matrix.
References Matrix< ElementType >::columns.
|
inlinenoexcept |
Returns the number of rows in the matrix.
References Matrix< ElementType >::rows.
|
inlinenoexcept |
Returns a pointer to the raw data of the matrix object, ordered in row-major order (for modifying).
References Matrix< ElementType >::data, and Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getRawDataPointer().
Referenced by Matrix< ElementType >::apply().
|
inlinenoexcept |
Returns a pointer to the raw data of the matrix object, ordered in row-major order (for reading).
References Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::begin(), and Matrix< ElementType >::data.
|
inlinenoexcept |
Returns an Array of 2 integers with the number of rows and columns in the matrix.
References Matrix< ElementType >::columns, and Matrix< ElementType >::rows.
|
inlinenoexcept |
Does a hadarmard product with the receiver and other and stores the result in the receiver.
References Matrix< ElementType >::apply().
Referenced by Matrix< ElementType >::hadarmard().
|
inlinestatic |
Does a hadarmard product with a and b returns the result.
References Matrix< ElementType >::compare(), and Matrix< ElementType >::hadarmard().
|
static |
Creates a squared size x size Hankel Matrix from a vector with an optional offset.
vector | The vector from which the Hankel matrix should be generated. Its number of rows should be at least 2 * (size - 1) + 1 |
size | The size of resulting square matrix. |
offset | An optional offset into the given vector. |
Referenced by Matrix< ElementType >::Matrix().
Creates the identity matrix.
Referenced by Matrix< ElementType >::Matrix().
|
inlinenoexcept |
Tells if the matrix is a null matrix.
References Matrix< ElementType >::columns, Matrix< ElementType >::rows, Matrix< ElementType >::solve(), and Matrix< ElementType >::toString().
|
inlinenoexcept |
Tells if the matrix is a one column vector.
References Matrix< ElementType >::columns.
Referenced by Matrix< ElementType >::isVector().
|
inlinenoexcept |
Tells if the matrix is a one row vector.
References Matrix< ElementType >::rows.
Referenced by Matrix< ElementType >::isVector().
|
inlinenoexcept |
Tells if the matrix is a square matrix.
References Matrix< ElementType >::columns, and Matrix< ElementType >::rows.
|
inlinenoexcept |
Tells if the matrix is a vector.
References Matrix< ElementType >::isOneColumnVector(), and Matrix< ElementType >::isOneRowVector().
|
inlinenoexcept |
Returns the value of the matrix at a given row and column (for reading).
References Matrix< ElementType >::columns, Matrix< ElementType >::data, Matrix< ElementType >::dataAcceleration, Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getReference(), jassert, and Matrix< ElementType >::rows.
|
inlinenoexcept |
Returns the value of the matrix at a given row and column (for modifying).
References Matrix< ElementType >::columns, Matrix< ElementType >::data, Matrix< ElementType >::dataAcceleration, Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::getReference(), jassert, and Matrix< ElementType >::rows.
|
inline |
Scalar multiplication.
Matrix Matrix< ElementType >::operator* | ( | const Matrix< ElementType > & | other | ) | const |
Matrix multiplication.
|
inlinenoexcept |
Scalar multiplication.
References Matrix< ElementType >::begin(), and Matrix< ElementType >::end().
|
inline |
Addition of two matrices.
|
inlinenoexcept |
Addition of two matrices.
References Matrix< ElementType >::apply().
|
inline |
Addition of two matrices.
|
inlinenoexcept |
Subtraction of two matrices.
References Matrix< ElementType >::apply().
|
default |
Creates a copy of another matrix.
Referenced by Matrix< ElementType >::Matrix().
|
defaultnoexcept |
Moves another matrix into this one.
|
inlinenoexcept |
References Matrix< ElementType >::compare().
|
inlineprivate |
Resizes the matrix.
References Matrix< ElementType >::columns, Matrix< ElementType >::data, Matrix< ElementType >::dataAcceleration, Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::resize(), Matrix< ElementType >::rows, and Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::setUnchecked().
Referenced by Matrix< ElementType >::Matrix().
|
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.
Referenced by Matrix< ElementType >::isNullMatrix().
|
noexcept |
Swaps the contents of two columns in the matrix and returns a reference to itself.
Referenced by Matrix< ElementType >::clear().
|
noexcept |
Swaps the contents of two rows in the matrix and returns a reference to itself.
Referenced by Matrix< ElementType >::clear().
|
static |
Creates a Toeplitz Matrix from a vector with a given squared size.
Referenced by Matrix< ElementType >::Matrix().
Returns a String displaying in a convenient way the matrix contents.
Referenced by Matrix< ElementType >::isNullMatrix().
|
private |
Referenced by Matrix< ElementType >::apply(), Matrix< ElementType >::getNumColumns(), Matrix< ElementType >::getSize(), Matrix< ElementType >::isNullMatrix(), Matrix< ElementType >::isOneColumnVector(), Matrix< ElementType >::isSquare(), Matrix< ElementType >::Matrix(), Matrix< ElementType >::operator()(), and Matrix< ElementType >::resize().
Referenced by Matrix< ElementType >::operator()(), and Matrix< ElementType >::resize().
|
private |
Referenced by Matrix< ElementType >::apply(), Matrix< ElementType >::getNumRows(), Matrix< ElementType >::getSize(), Matrix< ElementType >::isNullMatrix(), Matrix< ElementType >::isOneRowVector(), Matrix< ElementType >::isSquare(), Matrix< ElementType >::Matrix(), Matrix< ElementType >::operator()(), and Matrix< ElementType >::resize().