Linear Algebra
arduino
Accessible implementations of linear algebra algorithms
|
#include <include/linalg/Matrix.hpp>
General matrix class.
Definition at line 34 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... | |
void | print (Print &print, uint8_t precision=0, uint8_t width=0) const |
Print a matrix. More... | |
size_t | printTo (Print &print) const override |
Implements the Arduino Printable interface. 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... | |
Print & | operator<< (Print &p, const Matrix &M) |
Print a matrix. More... | |
|
private |
Container to store the elements of the matrix internally.
Definition at line 40 of file Matrix.hpp.
Convert raw storage to a matrix.
Definition at line 9 of file Matrix.cpp.
Convert raw storage to a matrix.
Definition at line 14 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 19 of file Matrix.cpp.
Matrix | ( | std::initializer_list< std::initializer_list< double >> | init | ) |
Create a matrix with the given values.
Definition at line 26 of file Matrix.cpp.
Move constructor.
Definition at line 24 of file Matrix.cpp.
Matrix & operator= | ( | std::initializer_list< std::initializer_list< double >> | init | ) |
Assign the given values to the matrix.
Definition at line 45 of file Matrix.cpp.
Move assignment.
Definition at line 34 of file Matrix.cpp.
|
inline |
|
inline |
Get the number of columns of the matrix.
Definition at line 83 of file Matrix.hpp.
|
inline |
Get the number of elements in the matrix:
Definition at line 85 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 78 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 94 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 102 of file Matrix.cpp.
|
inline |
Get the element at the given position in the linearized matrix.
Definition at line 107 of file Matrix.hpp.
|
inline |
Get the element at the given position in the linearized matrix.
Definition at line 109 of file Matrix.hpp.
void clear_and_deallocate | ( | ) |
Set the number of rows and columns to zero, and deallocate the storage.
Definition at line 114 of file Matrix.cpp.
void fill | ( | double | value | ) |
Fill the matrix with a constant value.
Definition at line 125 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 129 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 136 of file Matrix.cpp.
|
static |
|
static |
|
static |
Create a matrix filled with a constant value.
Definition at line 157 of file Matrix.cpp.
|
static |
|
static |
Create a square identity matrix.
Definition at line 169 of file Matrix.cpp.
|
static |
Create a matrix with uniformly distributed random values.
Definition at line 172 of file Matrix.cpp.
void swap_rows | ( | size_t | a, |
size_t | b | ||
) |
Swap two rows of the matrix.
Definition at line 189 of file Matrix.cpp.
void swap_columns | ( | size_t | a, |
size_t | b | ||
) |
Swap two columns of the matrix.
Definition at line 184 of file Matrix.cpp.
bool operator== | ( | const Matrix & | other | ) | const |
Check for equality of two matrices.
Definition at line 198 of file Matrix.cpp.
|
inline |
Check for inequality of two matrices.
Definition at line 193 of file Matrix.hpp.
double normFro | ( | ) | const & |
Compute the Frobenius norm of the matrix.
Definition at line 219 of file Matrix.cpp.
double normFro | ( | ) | && |
Compute the Frobenius norm of the matrix.
Definition at line 228 of file Matrix.cpp.
|
inline |
Get the iterator to the first element of the matrix.
Definition at line 213 of file Matrix.hpp.
|
inline |
Get the iterator to the first element of the matrix.
Definition at line 215 of file Matrix.hpp.
|
inline |
Get the iterator to the first element of the matrix.
Definition at line 217 of file Matrix.hpp.
|
inline |
Get the iterator to the element past the end of the matrix.
Definition at line 220 of file Matrix.hpp.
|
inline |
Get the iterator to the element past the end of the matrix.
Definition at line 222 of file Matrix.hpp.
|
inline |
Get the iterator to the element past the end of the matrix.
Definition at line 224 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 242 of file Matrix.cpp.
void print | ( | Print & | print, |
uint8_t | precision = 0 , |
||
uint8_t | width = 0 |
||
) | const |
Print a matrix.
The printer 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 48 of file ArduinoMatrixPrinter.cpp.
|
inlineoverride |
Implements the Arduino Printable interface.
Definition at line 259 of file Matrix.hpp.
|
related |
Print a matrix.
Definition at line 255 of file Matrix.cpp.
|
related |
Print a matrix.
Definition at line 62 of file ArduinoMatrixPrinter.cpp.
|
protected |
Definition at line 268 of file Matrix.hpp.
|
protected |
Definition at line 268 of file Matrix.hpp.
|
protected |
Definition at line 269 of file Matrix.hpp.