Jet  v1.3.3
Public Types | Public Member Functions | Static Public Member Functions | List of all members
jet::Matrix< T, M, N > Class Template Referencefinal

Static-sized M x N matrix class. More...

#include <jet/matrix.h>

Inheritance diagram for jet::Matrix< T, M, N >:
jet::MatrixExpression< T, Matrix< T, M, N > >

Public Types

typedef std::array< T, M *N > ContainerType
 
typedef ContainerType::iterator Iterator
 
typedef ContainerType::const_iterator ConstIterator
 

Public Member Functions

 Matrix ()
 
template<typename... Params>
 Matrix (Params... params)
 Constructs matrix instance with parameters. More...
 
 Matrix (const std::initializer_list< std::initializer_list< T >> &lst)
 Constructs a matrix with given initializer list lst. More...
 
template<typename E >
 Matrix (const MatrixExpression< T, E > &other)
 Constructs a matrix with expression template. More...
 
 Matrix (const Matrix &other)
 Copy constructor. More...
 
void resize (size_t m, size_t n, const T &s=T(0))
 Resizes to m x n matrix with initial value s. More...
 
void set (const T &s)
 Sets whole matrix with input scalar. More...
 
void set (const std::initializer_list< std::initializer_list< T >> &lst)
 Sets a matrix with given initializer list lst. More...
 
template<typename E >
void set (const MatrixExpression< T, E > &other)
 Copies from input matrix expression. More...
 
void setDiagonal (const T &s)
 Sets diagonal elements with input scalar. More...
 
void setOffDiagonal (const T &s)
 Sets off-diagonal elements with input scalar. More...
 
template<typename E >
void setRow (size_t i, const VectorExpression< T, E > &row)
 Sets i-th row with input vector. More...
 
template<typename E >
void setColumn (size_t j, const VectorExpression< T, E > &col)
 Sets j-th column with input vector. More...
 
template<typename E >
bool isEqual (const MatrixExpression< T, E > &other) const
 
template<typename E >
bool isSimilar (const MatrixExpression< T, E > &other, double tol=std::numeric_limits< double >::epsilon()) const
 
constexpr bool isSquare () const
 Returns true if this matrix is a square matrix. More...
 
constexpr Size2 size () const
 Returns the size of this matrix. More...
 
constexpr size_t rows () const
 Returns number of rows of this matrix. More...
 
constexpr size_t cols () const
 Returns number of columns of this matrix. More...
 
T * data ()
 Returns data pointer of this matrix. More...
 
const T *const data () const
 Returns constant pointer of this matrix. More...
 
Iterator begin ()
 Returns the begin iterator of the matrix. More...
 
ConstIterator begin () const
 Returns the begin const iterator of the matrix. More...
 
Iterator end ()
 Returns the end iterator of the matrix. More...
 
ConstIterator end () const
 Returns the end const iterator of the matrix. More...
 
MatrixScalarAdd< T, Matrixadd (const T &s) const
 Returns this matrix + input scalar. More...
 
template<typename E >
MatrixAdd< T, Matrix, E > add (const E &m) const
 Returns this matrix + input matrix (element-wise). More...
 
MatrixScalarSub< T, Matrixsub (const T &s) const
 Returns this matrix - input scalar. More...
 
template<typename E >
MatrixSub< T, Matrix, E > sub (const E &m) const
 Returns this matrix - input matrix (element-wise). More...
 
MatrixScalarMul< T, Matrixmul (const T &s) const
 Returns this matrix * input scalar. More...
 
template<typename VE >
MatrixVectorMul< T, Matrix, VE > mul (const VectorExpression< T, VE > &v) const
 Returns this matrix * input vector. More...
 
template<size_t L>
MatrixMul< T, Matrix, Matrix< T, N, L > > mul (const Matrix< T, N, L > &m) const
 Returns this matrix * input matrix. More...
 
MatrixScalarDiv< T, Matrixdiv (const T &s) const
 Returns this matrix / input scalar. More...
 
MatrixScalarAdd< T, Matrixradd (const T &s) const
 Returns input scalar + this matrix. More...
 
template<typename E >
MatrixAdd< T, Matrix, E > radd (const E &m) const
 Returns input matrix + this matrix (element-wise). More...
 
MatrixScalarRSub< T, Matrixrsub (const T &s) const
 Returns input scalar - this matrix. More...
 
template<typename E >
MatrixSub< T, Matrix, E > rsub (const E &m) const
 Returns input matrix - this matrix (element-wise). More...
 
MatrixScalarMul< T, Matrixrmul (const T &s) const
 Returns input scalar * this matrix. More...
 
template<size_t L>
MatrixMul< T, Matrix< T, N, L >, Matrixrmul (const Matrix< T, N, L > &m) const
 Returns input matrix * this matrix. More...
 
MatrixScalarRDiv< T, Matrixrdiv (const T &s) const
 Returns input matrix / this scalar. More...
 
void iadd (const T &s)
 Adds input scalar to this matrix. More...
 
template<typename E >
void iadd (const E &m)
 Adds input matrix to this matrix (element-wise). More...
 
void isub (const T &s)
 Subtracts input scalar from this matrix. More...
 
template<typename E >
void isub (const E &m)
 Subtracts input matrix from this matrix (element-wise). More...
 
void imul (const T &s)
 Multiplies input scalar to this matrix. More...
 
template<typename E >
void imul (const E &m)
 Multiplies input matrix to this matrix. More...
 
void idiv (const T &s)
 Divides this matrix with input scalar. More...
 
void transpose ()
 Transposes this matrix. More...
 
void invert ()
 Inverts this matrix. More...
 
sum () const
 Returns sum of all elements. More...
 
avg () const
 Returns average of all elements. More...
 
min () const
 Returns minimum among all elements. More...
 
max () const
 Returns maximum among all elements. More...
 
absmin () const
 Returns absolute minimum among all elements. More...
 
absmax () const
 Returns absolute maximum among all elements. More...
 
trace () const
 
determinant () const
 Returns determinant of this matrix. More...
 
MatrixDiagonal< T, Matrixdiagonal () const
 Returns diagonal part of this matrix. More...
 
MatrixDiagonal< T, MatrixoffDiagonal () const
 Returns off-diagonal part of this matrix. More...
 
MatrixTriangular< T, MatrixstrictLowerTri () const
 Returns strictly lower triangle part of this matrix. More...
 
MatrixTriangular< T, MatrixstrictUpperTri () const
 Returns strictly upper triangle part of this matrix. More...
 
MatrixTriangular< T, MatrixlowerTri () const
 Returns lower triangle part of this matrix (including the diagonal). More...
 
MatrixTriangular< T, MatrixupperTri () const
 Returns upper triangle part of this matrix (including the diagonal). More...
 
Matrix< T, N, M > transposed () const
 Returns transposed matrix. More...
 
Matrix inverse () const
 Returns inverse matrix. More...
 
template<typename U >
MatrixTypeCast< U, Matrix, T > castTo () const
 
template<typename E >
Matrixoperator= (const E &m)
 Assigns input matrix. More...
 
Matrixoperator= (const Matrix &other)
 Copies to this matrix. More...
 
Matrixoperator+= (const T &s)
 Addition assignment with input scalar. More...
 
template<typename E >
Matrixoperator+= (const E &m)
 Addition assignment with input matrix (element-wise). More...
 
Matrixoperator-= (const T &s)
 Subtraction assignment with input scalar. More...
 
template<typename E >
Matrixoperator-= (const E &m)
 Subtraction assignment with input matrix (element-wise). More...
 
Matrixoperator*= (const T &s)
 Multiplication assignment with input scalar. More...
 
template<typename E >
Matrixoperator*= (const E &m)
 Multiplication assignment with input matrix. More...
 
Matrixoperator/= (const T &s)
 Division assignment with input scalar. More...
 
T & operator[] (size_t i)
 Returns reference of i-th element. More...
 
const T & operator[] (size_t i) const
 Returns constant reference of i-th element. More...
 
T & operator() (size_t i, size_t j)
 Returns reference of (i,j) element. More...
 
const T & operator() (size_t i, size_t j) const
 Returns constant reference of (i,j) element. More...
 
template<typename E >
bool operator== (const MatrixExpression< T, E > &m) const
 Returns true if is equal to m. More...
 
template<typename E >
bool operator!= (const MatrixExpression< T, E > &m) const
 Returns true if is not equal to m. More...
 
template<typename Callback >
void forEach (Callback func) const
 Iterates the matrix and invoke given func for each index. More...
 
template<typename Callback >
void forEachIndex (Callback func) const
 Iterates the matrix and invoke given func for each index. More...
 
- Public Member Functions inherited from jet::MatrixExpression< T, Matrix< T, M, N > >
Size2 size () const
 Size of the matrix. More...
 
size_t rows () const
 Number of rows. More...
 
size_t cols () const
 Number of columns. More...
 
const Matrix< T, M, N > & operator() () const
 Returns actual implementation (the subclass). More...
 

Static Public Member Functions

static MatrixConstant< T > makeZero ()
 Makes a M x N matrix with zeros. More...
 
static MatrixIdentity< T > makeIdentity ()
 

Detailed Description

template<typename T, size_t M, size_t N>
class jet::Matrix< T, M, N >

Static-sized M x N matrix class.

This class defines M x N row-major matrix data where its size is determined statically at compile time.

Template Parameters
T- Real number type.
M- Number of rows.
N- Number of columns.

Member Typedef Documentation

◆ ConstIterator

template<typename T , size_t M, size_t N>
typedef ContainerType::const_iterator jet::Matrix< T, M, N >::ConstIterator

◆ ContainerType

template<typename T , size_t M, size_t N>
typedef std::array<T, M * N> jet::Matrix< T, M, N >::ContainerType

◆ Iterator

template<typename T , size_t M, size_t N>
typedef ContainerType::iterator jet::Matrix< T, M, N >::Iterator

Constructor & Destructor Documentation

◆ Matrix() [1/5]

template<typename T , size_t M, size_t N>
jet::Matrix< T, M, N >::Matrix ( )

Default constructor.

Warning
This constructor will create zero matrix.

◆ Matrix() [2/5]

template<typename T , size_t M, size_t N>
template<typename... Params>
jet::Matrix< T, M, N >::Matrix ( Params...  params)
explicit

Constructs matrix instance with parameters.

◆ Matrix() [3/5]

template<typename T , size_t M, size_t N>
jet::Matrix< T, M, N >::Matrix ( const std::initializer_list< std::initializer_list< T >> &  lst)

Constructs a matrix with given initializer list lst.

This constructor will build a matrix with given initializer list lst such as

Matrix<float, 3, 4> mat = {
{1.f, 2.f, 4.f, 3.f},
{9.f, 3.f, 5.f, 1.f},
{4.f, 8.f, 1.f, 5.f}
};
Parameters
lstInitializer list that should be copy to the new matrix.

◆ Matrix() [4/5]

template<typename T , size_t M, size_t N>
template<typename E >
jet::Matrix< T, M, N >::Matrix ( const MatrixExpression< T, E > &  other)

Constructs a matrix with expression template.

◆ Matrix() [5/5]

template<typename T , size_t M, size_t N>
jet::Matrix< T, M, N >::Matrix ( const Matrix< T, M, N > &  other)

Copy constructor.

Member Function Documentation

◆ absmax()

template<typename T , size_t M, size_t N>
T jet::Matrix< T, M, N >::absmax ( ) const

Returns absolute maximum among all elements.

◆ absmin()

template<typename T , size_t M, size_t N>
T jet::Matrix< T, M, N >::absmin ( ) const

Returns absolute minimum among all elements.

◆ add() [1/2]

template<typename T , size_t M, size_t N>
template<typename E >
MatrixAdd<T, Matrix, E> jet::Matrix< T, M, N >::add ( const E &  m) const

Returns this matrix + input matrix (element-wise).

◆ add() [2/2]

template<typename T , size_t M, size_t N>
MatrixScalarAdd<T, Matrix> jet::Matrix< T, M, N >::add ( const T &  s) const

Returns this matrix + input scalar.

◆ avg()

template<typename T , size_t M, size_t N>
T jet::Matrix< T, M, N >::avg ( ) const

Returns average of all elements.

◆ begin() [1/2]

template<typename T , size_t M, size_t N>
Iterator jet::Matrix< T, M, N >::begin ( )

Returns the begin iterator of the matrix.

◆ begin() [2/2]

template<typename T , size_t M, size_t N>
ConstIterator jet::Matrix< T, M, N >::begin ( ) const

Returns the begin const iterator of the matrix.

◆ castTo()

template<typename T , size_t M, size_t N>
template<typename U >
MatrixTypeCast<U, Matrix, T> jet::Matrix< T, M, N >::castTo ( ) const

◆ cols()

template<typename T , size_t M, size_t N>
constexpr size_t jet::Matrix< T, M, N >::cols ( ) const
constexpr

Returns number of columns of this matrix.

◆ data() [1/2]

template<typename T , size_t M, size_t N>
T* jet::Matrix< T, M, N >::data ( )

Returns data pointer of this matrix.

◆ data() [2/2]

template<typename T , size_t M, size_t N>
const T* const jet::Matrix< T, M, N >::data ( ) const

Returns constant pointer of this matrix.

◆ determinant()

template<typename T , size_t M, size_t N>
T jet::Matrix< T, M, N >::determinant ( ) const

Returns determinant of this matrix.

◆ diagonal()

template<typename T , size_t M, size_t N>
MatrixDiagonal<T, Matrix> jet::Matrix< T, M, N >::diagonal ( ) const

Returns diagonal part of this matrix.

◆ div()

template<typename T , size_t M, size_t N>
MatrixScalarDiv<T, Matrix> jet::Matrix< T, M, N >::div ( const T &  s) const

Returns this matrix / input scalar.

◆ end() [1/2]

template<typename T , size_t M, size_t N>
Iterator jet::Matrix< T, M, N >::end ( )

Returns the end iterator of the matrix.

◆ end() [2/2]

template<typename T , size_t M, size_t N>
ConstIterator jet::Matrix< T, M, N >::end ( ) const

Returns the end const iterator of the matrix.

◆ forEach()

template<typename T , size_t M, size_t N>
template<typename Callback >
void jet::Matrix< T, M, N >::forEach ( Callback  func) const

Iterates the matrix and invoke given func for each index.

This function iterates the matrix elements and invoke the callback function func. The callback function takes matrix's element as its input. The order of execution will be the same as the nested for-loop below:

MatrixMxN<double> mat(100, 200, 4.0);
for (size_t i = 0; i < mat.rows(); ++i) {
for (size_t j = 0; j < mat.cols(); ++j) {
func(mat(i, j));
}
}

Below is the sample usage:

MatrixMxN<double> mat(100, 200, 4.0);
mat.forEach([](double elem) {
printf("%d\n", elem);
});

◆ forEachIndex()

template<typename T , size_t M, size_t N>
template<typename Callback >
void jet::Matrix< T, M, N >::forEachIndex ( Callback  func) const

Iterates the matrix and invoke given func for each index.

This function iterates the matrix elements and invoke the callback function func. The callback function takes two parameters which are the (i, j) indices of the matrix. The order of execution will be the same as the nested for-loop below:

MatrixMxN<double> mat(100, 200, 4.0);
for (size_t i = 0; i < mat.rows(); ++i) {
for (size_t j = 0; j < mat.cols(); ++j) {
func(i, j);
}
}

Below is the sample usage:

MatrixMxN<double> mat(100, 200, 4.0);
mat.forEachIndex([&](size_t i, size_t j) {
mat(i, j) = 4.0 * i + 7.0 * j + 1.5;
});

◆ iadd() [1/2]

template<typename T , size_t M, size_t N>
template<typename E >
void jet::Matrix< T, M, N >::iadd ( const E &  m)

Adds input matrix to this matrix (element-wise).

◆ iadd() [2/2]

template<typename T , size_t M, size_t N>
void jet::Matrix< T, M, N >::iadd ( const T &  s)

Adds input scalar to this matrix.

◆ idiv()

template<typename T , size_t M, size_t N>
void jet::Matrix< T, M, N >::idiv ( const T &  s)

Divides this matrix with input scalar.

◆ imul() [1/2]

template<typename T , size_t M, size_t N>
template<typename E >
void jet::Matrix< T, M, N >::imul ( const E &  m)

Multiplies input matrix to this matrix.

◆ imul() [2/2]

template<typename T , size_t M, size_t N>
void jet::Matrix< T, M, N >::imul ( const T &  s)

Multiplies input scalar to this matrix.

◆ inverse()

template<typename T , size_t M, size_t N>
Matrix jet::Matrix< T, M, N >::inverse ( ) const

Returns inverse matrix.

◆ invert()

template<typename T , size_t M, size_t N>
void jet::Matrix< T, M, N >::invert ( )

Inverts this matrix.

This function computes the inverse using Gaussian elimination method.

◆ isEqual()

template<typename T , size_t M, size_t N>
template<typename E >
bool jet::Matrix< T, M, N >::isEqual ( const MatrixExpression< T, E > &  other) const

◆ isSimilar()

template<typename T , size_t M, size_t N>
template<typename E >
bool jet::Matrix< T, M, N >::isSimilar ( const MatrixExpression< T, E > &  other,
double  tol = std::numeric_limits< double >::epsilon() 
) const

Returns true if this matrix is similar to the input matrix within the given tolerance.

◆ isSquare()

template<typename T , size_t M, size_t N>
constexpr bool jet::Matrix< T, M, N >::isSquare ( ) const
constexpr

Returns true if this matrix is a square matrix.

◆ isub() [1/2]

template<typename T , size_t M, size_t N>
template<typename E >
void jet::Matrix< T, M, N >::isub ( const E &  m)

Subtracts input matrix from this matrix (element-wise).

◆ isub() [2/2]

template<typename T , size_t M, size_t N>
void jet::Matrix< T, M, N >::isub ( const T &  s)

Subtracts input scalar from this matrix.

◆ lowerTri()

template<typename T , size_t M, size_t N>
MatrixTriangular<T, Matrix> jet::Matrix< T, M, N >::lowerTri ( ) const

Returns lower triangle part of this matrix (including the diagonal).

◆ makeIdentity()

template<typename T , size_t M, size_t N>
static MatrixIdentity<T> jet::Matrix< T, M, N >::makeIdentity ( )
static

Makes a M x N matrix with all diagonal elements to 1, and other elements to 0.

◆ makeZero()

template<typename T , size_t M, size_t N>
static MatrixConstant<T> jet::Matrix< T, M, N >::makeZero ( )
static

Makes a M x N matrix with zeros.

◆ max()

template<typename T , size_t M, size_t N>
T jet::Matrix< T, M, N >::max ( ) const

Returns maximum among all elements.

◆ min()

template<typename T , size_t M, size_t N>
T jet::Matrix< T, M, N >::min ( ) const

Returns minimum among all elements.

◆ mul() [1/3]

template<typename T , size_t M, size_t N>
template<size_t L>
MatrixMul<T, Matrix, Matrix<T, N, L> > jet::Matrix< T, M, N >::mul ( const Matrix< T, N, L > &  m) const

Returns this matrix * input matrix.

◆ mul() [2/3]

template<typename T , size_t M, size_t N>
MatrixScalarMul<T, Matrix> jet::Matrix< T, M, N >::mul ( const T &  s) const

Returns this matrix * input scalar.

◆ mul() [3/3]

template<typename T , size_t M, size_t N>
template<typename VE >
MatrixVectorMul<T, Matrix, VE> jet::Matrix< T, M, N >::mul ( const VectorExpression< T, VE > &  v) const

Returns this matrix * input vector.

◆ offDiagonal()

template<typename T , size_t M, size_t N>
MatrixDiagonal<T, Matrix> jet::Matrix< T, M, N >::offDiagonal ( ) const

Returns off-diagonal part of this matrix.

◆ operator!=()

template<typename T , size_t M, size_t N>
template<typename E >
bool jet::Matrix< T, M, N >::operator!= ( const MatrixExpression< T, E > &  m) const

Returns true if is not equal to m.

◆ operator()() [1/2]

template<typename T , size_t M, size_t N>
T& jet::Matrix< T, M, N >::operator() ( size_t  i,
size_t  j 
)

Returns reference of (i,j) element.

◆ operator()() [2/2]

template<typename T , size_t M, size_t N>
const T& jet::Matrix< T, M, N >::operator() ( size_t  i,
size_t  j 
) const

Returns constant reference of (i,j) element.

◆ operator*=() [1/2]

template<typename T , size_t M, size_t N>
template<typename E >
Matrix& jet::Matrix< T, M, N >::operator*= ( const E &  m)

Multiplication assignment with input matrix.

◆ operator*=() [2/2]

template<typename T , size_t M, size_t N>
Matrix& jet::Matrix< T, M, N >::operator*= ( const T &  s)

Multiplication assignment with input scalar.

◆ operator+=() [1/2]

template<typename T , size_t M, size_t N>
template<typename E >
Matrix& jet::Matrix< T, M, N >::operator+= ( const E &  m)

Addition assignment with input matrix (element-wise).

◆ operator+=() [2/2]

template<typename T , size_t M, size_t N>
Matrix& jet::Matrix< T, M, N >::operator+= ( const T &  s)

Addition assignment with input scalar.

◆ operator-=() [1/2]

template<typename T , size_t M, size_t N>
template<typename E >
Matrix& jet::Matrix< T, M, N >::operator-= ( const E &  m)

Subtraction assignment with input matrix (element-wise).

◆ operator-=() [2/2]

template<typename T , size_t M, size_t N>
Matrix& jet::Matrix< T, M, N >::operator-= ( const T &  s)

Subtraction assignment with input scalar.

◆ operator/=()

template<typename T , size_t M, size_t N>
Matrix& jet::Matrix< T, M, N >::operator/= ( const T &  s)

Division assignment with input scalar.

◆ operator=() [1/2]

template<typename T , size_t M, size_t N>
template<typename E >
Matrix& jet::Matrix< T, M, N >::operator= ( const E &  m)

Assigns input matrix.

◆ operator=() [2/2]

template<typename T , size_t M, size_t N>
Matrix& jet::Matrix< T, M, N >::operator= ( const Matrix< T, M, N > &  other)

Copies to this matrix.

◆ operator==()

template<typename T , size_t M, size_t N>
template<typename E >
bool jet::Matrix< T, M, N >::operator== ( const MatrixExpression< T, E > &  m) const

Returns true if is equal to m.

◆ operator[]() [1/2]

template<typename T , size_t M, size_t N>
T& jet::Matrix< T, M, N >::operator[] ( size_t  i)

Returns reference of i-th element.

◆ operator[]() [2/2]

template<typename T , size_t M, size_t N>
const T& jet::Matrix< T, M, N >::operator[] ( size_t  i) const

Returns constant reference of i-th element.

◆ radd() [1/2]

template<typename T , size_t M, size_t N>
template<typename E >
MatrixAdd<T, Matrix, E> jet::Matrix< T, M, N >::radd ( const E &  m) const

Returns input matrix + this matrix (element-wise).

◆ radd() [2/2]

template<typename T , size_t M, size_t N>
MatrixScalarAdd<T, Matrix> jet::Matrix< T, M, N >::radd ( const T &  s) const

Returns input scalar + this matrix.

◆ rdiv()

template<typename T , size_t M, size_t N>
MatrixScalarRDiv<T, Matrix> jet::Matrix< T, M, N >::rdiv ( const T &  s) const

Returns input matrix / this scalar.

◆ resize()

template<typename T , size_t M, size_t N>
void jet::Matrix< T, M, N >::resize ( size_t  m,
size_t  n,
const T &  s = T(0) 
)

Resizes to m x n matrix with initial value s.

◆ rmul() [1/2]

template<typename T , size_t M, size_t N>
template<size_t L>
MatrixMul<T, Matrix<T, N, L>, Matrix> jet::Matrix< T, M, N >::rmul ( const Matrix< T, N, L > &  m) const

Returns input matrix * this matrix.

◆ rmul() [2/2]

template<typename T , size_t M, size_t N>
MatrixScalarMul<T, Matrix> jet::Matrix< T, M, N >::rmul ( const T &  s) const

Returns input scalar * this matrix.

◆ rows()

template<typename T , size_t M, size_t N>
constexpr size_t jet::Matrix< T, M, N >::rows ( ) const
constexpr

Returns number of rows of this matrix.

◆ rsub() [1/2]

template<typename T , size_t M, size_t N>
template<typename E >
MatrixSub<T, Matrix, E> jet::Matrix< T, M, N >::rsub ( const E &  m) const

Returns input matrix - this matrix (element-wise).

◆ rsub() [2/2]

template<typename T , size_t M, size_t N>
MatrixScalarRSub<T, Matrix> jet::Matrix< T, M, N >::rsub ( const T &  s) const

Returns input scalar - this matrix.

◆ set() [1/3]

template<typename T , size_t M, size_t N>
template<typename E >
void jet::Matrix< T, M, N >::set ( const MatrixExpression< T, E > &  other)

Copies from input matrix expression.

◆ set() [2/3]

template<typename T , size_t M, size_t N>
void jet::Matrix< T, M, N >::set ( const std::initializer_list< std::initializer_list< T >> &  lst)

Sets a matrix with given initializer list lst.

This function will fill the matrix with given initializer list lst such as

Matrix<float, 3, 4> mat;
mat.set({
{1.f, 2.f, 4.f, 3.f},
{9.f, 3.f, 5.f, 1.f},
{4.f, 8.f, 1.f, 5.f}
});
Parameters
lstInitializer list that should be copy to the new matrix.

◆ set() [3/3]

template<typename T , size_t M, size_t N>
void jet::Matrix< T, M, N >::set ( const T &  s)

Sets whole matrix with input scalar.

◆ setColumn()

template<typename T , size_t M, size_t N>
template<typename E >
void jet::Matrix< T, M, N >::setColumn ( size_t  j,
const VectorExpression< T, E > &  col 
)

Sets j-th column with input vector.

◆ setDiagonal()

template<typename T , size_t M, size_t N>
void jet::Matrix< T, M, N >::setDiagonal ( const T &  s)

Sets diagonal elements with input scalar.

◆ setOffDiagonal()

template<typename T , size_t M, size_t N>
void jet::Matrix< T, M, N >::setOffDiagonal ( const T &  s)

Sets off-diagonal elements with input scalar.

◆ setRow()

template<typename T , size_t M, size_t N>
template<typename E >
void jet::Matrix< T, M, N >::setRow ( size_t  i,
const VectorExpression< T, E > &  row 
)

Sets i-th row with input vector.

◆ size()

template<typename T , size_t M, size_t N>
constexpr Size2 jet::Matrix< T, M, N >::size ( ) const
constexpr

Returns the size of this matrix.

◆ strictLowerTri()

template<typename T , size_t M, size_t N>
MatrixTriangular<T, Matrix> jet::Matrix< T, M, N >::strictLowerTri ( ) const

Returns strictly lower triangle part of this matrix.

◆ strictUpperTri()

template<typename T , size_t M, size_t N>
MatrixTriangular<T, Matrix> jet::Matrix< T, M, N >::strictUpperTri ( ) const

Returns strictly upper triangle part of this matrix.

◆ sub() [1/2]

template<typename T , size_t M, size_t N>
template<typename E >
MatrixSub<T, Matrix, E> jet::Matrix< T, M, N >::sub ( const E &  m) const

Returns this matrix - input matrix (element-wise).

◆ sub() [2/2]

template<typename T , size_t M, size_t N>
MatrixScalarSub<T, Matrix> jet::Matrix< T, M, N >::sub ( const T &  s) const

Returns this matrix - input scalar.

◆ sum()

template<typename T , size_t M, size_t N>
T jet::Matrix< T, M, N >::sum ( ) const

Returns sum of all elements.

◆ trace()

template<typename T , size_t M, size_t N>
T jet::Matrix< T, M, N >::trace ( ) const

Returns sum of all diagonal elements.

Warning
Should be a square matrix.

◆ transpose()

template<typename T , size_t M, size_t N>
void jet::Matrix< T, M, N >::transpose ( )

Transposes this matrix.

◆ transposed()

template<typename T , size_t M, size_t N>
Matrix<T, N, M> jet::Matrix< T, M, N >::transposed ( ) const

Returns transposed matrix.

◆ upperTri()

template<typename T , size_t M, size_t N>
MatrixTriangular<T, Matrix> jet::Matrix< T, M, N >::upperTri ( ) const

Returns upper triangle part of this matrix (including the diagonal).


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