9#include <initializer_list>
40template<
typename T =
double>
75 Matrix(
const std::initializer_list<std::initializer_list<T>>&
lst) {
78 auto cols =
lst.begin()->size();
80 for(
const auto&
l :
lst) {
81 for(
const auto&
v :
l) {
94 Matrix(
const std::initializer_list<std::initializer_list<std::initializer_list<T>>>&
lst) {
95 int i = 0,
j = 0,
c = 0;
97 auto cols =
lst.begin()->size();
98 auto elems =
lst.begin()->begin()->size();
100 for(
const auto&
l :
lst) {
101 for(
const auto&
v :
l) {
102 for(
const auto k :
v) {
273 for(
size_t i = 0;
i <
rows(); ++
i) {
304 return !(
rhs == *
this);
403 for(
size_t m = 0;
m <
rows();
m++) {
450 (*this) = *
this *
rhs;
460 (*this) = (*this) +
rhs;
469 (*this) = (*this) -
rhs;
790template<
typename T,
typename U>
807template<
typename T,
typename U>
862template<
typename T,
typename U>
878template<
typename T,
typename U>
881 for(
size_t i = 0;
i <
A.
rows();
i++) {
Matrix< T > operator-(const Matrix< T > &lhs, const Matrix< T > &rhs)
Definition Matrix.h:758
Matrix< T > operator/(U lhs, const Matrix< T > &rhs)
Definition Matrix.h:791
Matrix< T > operator*(const Matrix< T > &lhs, const U &rhs)
Definition Matrix.h:863
Matrix< T > operator+(const Matrix< T > &lhs, const Matrix< T > &rhs)
Definition Matrix.h:724
Matrix(Matrix const &other)
Definition Matrix.h:118
constexpr Matrix< T > Transpose() const
Definition Matrix.h:256
void SetRow(size_t index, const Matrix< T > &other)
Definition Matrix.h:541
void SetSlice(const size_t &row_start, const size_t &row_end, const size_t &col_start, const size_t &col_end, const Matrix< T > &slice)
Definition Matrix.h:641
Matrix(const std::initializer_list< std::initializer_list< T > > &lst)
Definition Matrix.h:75
void SetSlice(const size_t &row_start, const Matrix< T > &slice)
Definition Matrix.h:661
Matrix(const std::initializer_list< std::initializer_list< std::initializer_list< T > > > &lst)
Definition Matrix.h:94
bool HasDet() const
Definition Matrix.h:696
Matrix GetSlice(size_t rowStart, size_t rowEnd) const
Definition Matrix.h:610
Matrix< T > & operator*=(T rhs)
Definition Matrix.h:449
Matrix(const Matrix< V > &other)
Definition Matrix.h:131
Matrix & HadamardMulti(const Matrix &other)
Definition Matrix.h:389
T & operator*()
Definition Matrix.h:512
Matrix< T > & operator+=(const Matrix< T > &rhs)
Definition Matrix.h:459
bool operator==(const Matrix< T > &rhs) const
Definition Matrix.h:292
static Matrix Normal(size_t rows, size_t columns, double mu, double sigma)
Definition Matrix.h:171
size_t elements_total() const
Definition Matrix.h:210
bool operator<(const Matrix< T > &rhs) const
Definition Matrix.h:307
Matrix GetSlice(size_t rowStart, size_t rowEnd, size_t colStart, size_t colEnd) const
Definition Matrix.h:625
bool operator!=(const Matrix< T > &rhs) const
Definition Matrix.h:303
Matrix< T > & operator-=(const Matrix< T > &rhs)
Definition Matrix.h:468
size_t rows() const
Definition Matrix.h:193
Matrix(T val, size_t rowCount, size_t colCount, size_t elementDimension=1)
Definition Matrix.h:51
T Determinant() const
Definition Matrix.h:216
Matrix< T > operator()(size_t row)
Definition Matrix.h:500
size_t columns() const
Definition Matrix.h:198
Matrix GetSlice(size_t rowStart) const
Definition Matrix.h:609
Matrix< T > operator=(const Matrix< T > &other)
Definition Matrix.h:360
void assertSize(const Matrix< T > &other) const
Definition Matrix.h:334
T & operator()(size_t row, size_t column, size_t elem=0) const
Definition Matrix.h:490
bool needsFree
Definition Matrix.h:710
T & operator()(size_t row, size_t column, size_t elem=0)
Definition Matrix.h:482
size_t _element_size
number elements
Definition Matrix.h:703
size_t _columns
number columns
Definition Matrix.h:701
~Matrix()
Definition Matrix.h:144
Matrix GetSlice(size_t rowStart, size_t rowEnd, size_t colStart) const
Definition Matrix.h:613
void Resize(size_t rows, size_t cols, size_t elementSize=1)
Definition Matrix.h:585
Matrix()
Definition Matrix.h:69
Matrix< T > & KroneckerMulti(const Matrix< T > &other)
Definition Matrix.h:400
T * _data
ongoing array representing data
Definition Matrix.h:706
Matrix< T > GetComponents(const size_t &index) const
Definition Matrix.h:670
Matrix< T > operator()(size_t row) const
Definition Matrix.h:506
Matrix< T > Apply(const std::function< T(T)> &fun) const
Definition Matrix.h:375
static Matrix Random(size_t rows, size_t columns, size_t element_size=1, double minValue=0.0, double maxValue=1.0)
Definition Matrix.h:158
Matrix< T > sum(size_t axis) const
Definition Matrix.h:434
friend std::ostream & operator<<(std::ostream &ostr, const Matrix &m)
Definition Matrix.h:559
size_t _dataSize
total number of elements
Definition Matrix.h:708
size_t elements() const
Definition Matrix.h:204
Matrix(T *val, size_t colCount)
Definition Matrix.h:61
Matrix< T > GetSlicesByIndex(const Matrix< size_t > &indices) const
Definition Matrix.h:679
T & operator*() const
Definition Matrix.h:517
bool operator>(const Matrix< T > &rhs) const
Definition Matrix.h:315
int GetIndex(size_t row, size_t col, size_t elem=0) const
Definition Matrix.h:605
size_t _rows
number rows
Definition Matrix.h:699
void SetColumn(size_t index, const Matrix< T > &other)
Definition Matrix.h:524
T sumElements() const
Definition Matrix.h:422
bool IsVector() const
Definition Matrix.h:328
Matrix< T > HorizontalConcat(const Matrix< T > &other)
Definition Matrix.h:270
bool elementWiseCompare(const Matrix< T > &rhs) const
Definition Matrix.h:343
static double Get(double l=0.0, double r=1.0)
Definition Random.h:40
size_t elemDim
number elements
Definition Matrix.h:26
size_t rows
number rows
Definition Matrix.h:22
size_t columns
number columns
Definition Matrix.h:24