Linear Algebra
master
Accessible implementations of linear algebra algorithms
|
#include <linalg/Matrix.hpp>
General matrix class.
Definition at line 25 of file Matrix.hpp.
Constructors and assignment | |
Matrix ()=default | |
Default constructor. More... | |
Matrix (size_t rows, size_t cols) | |
Create a matrix of zeros with the given dimensions. More... | |
Matrix (std::initializer_list< std::initializer_list< double >> init) | |
Create a matrix with the given values. More... | |
Matrix & | operator= (std::initializer_list< std::initializer_list< double >> init) |
Assign the given values to the matrix. More... | |
Matrix (const Matrix &)=default | |
Default copy constructor. More... | |
Matrix (Matrix &&) | |
Move constructor. More... | |
Matrix & | operator= (const Matrix &)=default |
Default copy assignment. More... | |
Matrix & | operator= (Matrix &&) |
Move assignment. More... | |
Matrix size | |
size_t | rows () const |
Get the number of rows of the matrix. More... | |
size_t | cols () const |
Get the number of columns of the matrix. More... | |
size_t | num_elems () const |
Get the number of elements in the matrix: More... | |
void | reshape (size_t newrows, size_t newcols) |
Reshape the matrix. More... | |
Matrix | reshaped (size_t newrows, size_t newcols) const |
Create a reshaped copy of the matrix. More... | |
Element access | |
double & | operator() (size_t row, size_t col) |
Get the element at the given position in the matrix. More... | |
const double & | operator() (size_t row, size_t col) const |
Get the element at the given position in the matrix. More... | |
double & | operator() (size_t index) |
Get the element at the given position in the linearized matrix. More... | |
const double & | operator() (size_t index) const |
Get the element at the given position in the linearized matrix. More... | |
Memory management | |
void | clear_and_deallocate () |
Set the number of rows and columns to zero, and deallocate the storage. More... | |
Filling matrices | |
void | fill (double value) |
Fill the matrix with a constant value. More... | |
void | fill_identity () |
Fill the matrix as an identity matrix (all zeros except the diagonal which is one). More... | |
void | fill_random (double min=0, double max=1, std::default_random_engine::result_type seed=std::default_random_engine::default_seed) |
Fill the matrix with uniformly distributed random values. More... | |
Swapping rows and columns | |
void | swap_rows (size_t a, size_t b) |
Swap two rows of the matrix. More... | |
void | swap_columns (size_t a, size_t b) |
Swap two columns of the matrix. More... | |
Comparison | |
bool | operator== (const Matrix &other) const |
Check for equality of two matrices. More... | |
bool | operator!= (const Matrix &other) const |
Check for inequality of two matrices. More... | |
Matrix norms | |
double | normFro () const & |
Compute the Frobenius norm of the matrix. More... | |
double | normFro () && |
Compute the Frobenius norm of the matrix. More... | |
Iterators | |
storage_t::iterator | begin () |
Get the iterator to the first element of the matrix. More... | |
storage_t::const_iterator | begin () const |
Get the iterator to the first element of the matrix. More... | |
storage_t::const_iterator | cbegin () const |
Get the iterator to the first element of the matrix. More... | |
storage_t::iterator | end () |
Get the iterator to the element past the end of the matrix. More... | |
storage_t::const_iterator | end () const |
Get the iterator to the element past the end of the matrix. More... | |
storage_t::const_iterator | cend () const |
Get the iterator to the element past the end of the matrix. More... | |
Printing | |
void | print (std::ostream &os, uint8_t precision=0, uint8_t width=0) const |
Print a matrix. More... | |
Create special matrices | |
static Matrix | ones (size_t rows, size_t cols) |
Create a matrix filled with ones. More... | |
static Matrix | zeros (size_t rows, size_t cols) |
Create a matrix filled with zeros. More... | |
static Matrix | constant (size_t rows, size_t cols, double value) |
Create a matrix filled with a constant value. More... | |
static Matrix | identity (size_t rows, size_t cols) |
Create an identity matrix. More... | |
static Matrix | identity (size_t rows) |
Create a square identity matrix. More... | |
static Matrix | random (size_t rows, size_t cols, double min=0, double max=1, std::default_random_engine::result_type seed=std::default_random_engine::default_seed) |
Create a matrix with uniformly distributed random values. More... | |
Protected Member Functions | |
Matrix (storage_t &&storage, size_t rows, size_t cols) | |
Convert raw storage to a matrix. More... | |
Matrix (const storage_t &storage, size_t rows, size_t cols) | |
Convert raw storage to a matrix. More... | |
Protected Attributes | |
size_t | rows_ = 0 |
size_t | cols_ = 0 |
storage_t | storage |
Private Types | |
using | storage_t = util::storage_t< double > |
Container to store the elements of the matrix internally. More... | |
Related Functions | |
(Note that these are not member functions.) | |
std::ostream & | operator<< (std::ostream &os, const Matrix &M) |
Print a matrix. More... | |
|
private |
Container to store the elements of the matrix internally.
Definition at line 28 of file Matrix.hpp.
Convert raw storage to a matrix.
Definition at line 5 of file Matrix.cpp.
Convert raw storage to a matrix.
Definition at line 10 of file Matrix.cpp.
|
default |
Default constructor.
Matrix | ( | size_t | rows, |
size_t | cols | ||
) |
Create a matrix of zeros with the given dimensions.
Definition at line 15 of file Matrix.cpp.
Matrix | ( | std::initializer_list< std::initializer_list< double >> | init | ) |
Create a matrix with the given values.
Definition at line 22 of file Matrix.cpp.
Move constructor.
Definition at line 20 of file Matrix.cpp.
Matrix & operator= | ( | std::initializer_list< std::initializer_list< double >> | init | ) |
Assign the given values to the matrix.
Definition at line 41 of file Matrix.cpp.
Move assignment.
Definition at line 30 of file Matrix.cpp.
|
inline |
|
inline |
Get the number of columns of the matrix.
Definition at line 71 of file Matrix.hpp.
|
inline |
Get the number of elements in the matrix:
Definition at line 73 of file Matrix.hpp.
void reshape | ( | size_t | newrows, |
size_t | newcols | ||
) |
Reshape the matrix.
The new size must have the same number of elements, and the result depends on the storage order (column major order or row major order).
Definition at line 74 of file Matrix.cpp.
Matrix reshaped | ( | size_t | newrows, |
size_t | newcols | ||
) | const |
double & operator() | ( | size_t | row, |
size_t | col | ||
) |
Get the element at the given position in the matrix.
Definition at line 90 of file Matrix.cpp.
const double & operator() | ( | size_t | row, |
size_t | col | ||
) | const |
Get the element at the given position in the matrix.
Definition at line 98 of file Matrix.cpp.
|
inline |
Get the element at the given position in the linearized matrix.
Definition at line 95 of file Matrix.hpp.
|
inline |
Get the element at the given position in the linearized matrix.
Definition at line 97 of file Matrix.hpp.
void clear_and_deallocate | ( | ) |
Set the number of rows and columns to zero, and deallocate the storage.
Definition at line 110 of file Matrix.cpp.
void fill | ( | double | value | ) |
Fill the matrix with a constant value.
Definition at line 121 of file Matrix.cpp.
void fill_identity | ( | ) |
Fill the matrix as an identity matrix (all zeros except the diagonal which is one).
Definition at line 125 of file Matrix.cpp.
void fill_random | ( | double | min = 0 , |
double | max = 1 , |
||
std::default_random_engine::result_type | seed = std::default_random_engine::default_seed |
||
) |
Fill the matrix with uniformly distributed random values.
Definition at line 131 of file Matrix.cpp.
|
static |
|
static |
|
static |
Create a matrix filled with a constant value.
Definition at line 151 of file Matrix.cpp.
|
static |
|
static |
Create a square identity matrix.
Definition at line 163 of file Matrix.cpp.
|
static |
Create a matrix with uniformly distributed random values.
Definition at line 165 of file Matrix.cpp.
void swap_rows | ( | size_t | a, |
size_t | b | ||
) |
Swap two rows of the matrix.
Definition at line 181 of file Matrix.cpp.
void swap_columns | ( | size_t | a, |
size_t | b | ||
) |
Swap two columns of the matrix.
Definition at line 176 of file Matrix.cpp.
bool operator== | ( | const Matrix & | other | ) | const |
Check for equality of two matrices.
Definition at line 190 of file Matrix.cpp.
|
inline |
Check for inequality of two matrices.
Definition at line 177 of file Matrix.hpp.
double normFro | ( | ) | const & |
Compute the Frobenius norm of the matrix.
Definition at line 211 of file Matrix.cpp.
double normFro | ( | ) | && |
Compute the Frobenius norm of the matrix.
Definition at line 220 of file Matrix.cpp.
|
inline |
Get the iterator to the first element of the matrix.
Definition at line 197 of file Matrix.hpp.
|
inline |
Get the iterator to the first element of the matrix.
Definition at line 199 of file Matrix.hpp.
|
inline |
Get the iterator to the first element of the matrix.
Definition at line 201 of file Matrix.hpp.
|
inline |
Get the iterator to the element past the end of the matrix.
Definition at line 204 of file Matrix.hpp.
|
inline |
Get the iterator to the element past the end of the matrix.
Definition at line 206 of file Matrix.hpp.
|
inline |
Get the iterator to the element past the end of the matrix.
Definition at line 208 of file Matrix.hpp.
void print | ( | std::ostream & | os, |
uint8_t | precision = 0 , |
||
uint8_t | width = 0 |
||
) | const |
Print a matrix.
os | The stream to print to. |
precision | The number of significant figures to print. (0 = auto) |
width | The width of each element (number of characters). (0 = auto) |
Definition at line 232 of file Matrix.cpp.
|
related |
Print a matrix.
Definition at line 245 of file Matrix.cpp.
|
protected |
Definition at line 231 of file Matrix.hpp.
|
protected |
Definition at line 231 of file Matrix.hpp.
|
protected |
Definition at line 232 of file Matrix.hpp.