19 Matrix(
size_t rows,
size_t cols, std::vector<float> data)
27 return mData.at(i * mCols + j);
32 return mData.at(i * mCols + j);
38 auto M_T =
Matrix{mCols, mRows};
39 for (
size_t i = 0; i < mRows; ++i) {
40 for (
size_t j = 0; j < mCols; ++j) {
41 M_T(j, i) = mData.at(i * mCols + j);
54 std::vector<float>
operator*(
const std::vector<float> & v)
const
56 if (v.size() != mCols) {
57 Serial.println(
"Matrix multiplication error: vector size does not match matrix columns");
60 std::vector<float> v_(mRows);
61 for (
size_t i = 0; i < mRows; ++i) {
63 for (
size_t j = 0; j < mCols; ++j) {
64 sum += v.at(j) * mData.at(i * mCols + j);
87 std::vector<float> mData;
Class that treats a std::vector as a matrix and implements simple operations.
Matrix T() const
Alias for transpose()
float operator()(size_t i, size_t j) const
bool operator==(const Matrix &rhs) const
Overloaded equality operator that returns true if matrices are equal value-wise.
Matrix transpose() const
Gets the transpose of the matrix.
float & operator()(size_t i, size_t j)
std::vector< float > operator*(const std::vector< float > &v) const
Overloaded multiplication operator for matrix-matrix multiplication.
Matrix(size_t rows, size_t cols, std::vector< float > data)
Matrix(size_t rows, size_t cols)
std::vector< float > getData() const
Gets the data vector of the matrix.