46 #include "../../Clonable.h" 47 #include "../NumConstants.h" 48 #include "../NumTools.h" 49 #include "../VectorExceptions.h" 57 template<
class Scalar>
72 virtual const Scalar&
operator()(
size_t i,
size_t j)
const = 0;
79 virtual Scalar&
operator()(
size_t i,
size_t j) = 0;
89 if (NumTools::abs<double>(static_cast<double>(
operator()(i, j)) - static_cast<double>(m(i, j))) > threshold)
return false;
106 virtual std::vector<Scalar>
row(
size_t i)
const = 0;
111 virtual std::vector<Scalar>
col(
size_t j)
const = 0;
118 virtual void resize(
size_t nRows,
size_t nCols) = 0;
128 template<
class Scalar>
133 std::vector< std::vector<Scalar> >
m_;
140 for (
size_t i = 0; i < nRow; i++)
150 for (
size_t i = 0; i < nr; i++)
153 for (
size_t j = 0; j < nc; j++)
165 for (
size_t i = 0; i < nr; i++)
168 for (
size_t j = 0; j < nc; j++)
181 const Scalar&
operator()(
size_t i,
size_t j)
const {
return m_[i][j]; }
189 std::vector<Scalar>
row(
size_t i)
const 196 const std::vector<Scalar>&
getRow(
size_t i)
const 201 std::vector<Scalar>
col(
size_t j)
const 211 for (
size_t i = 0; i < nRows; i++)
221 m_.push_back(newRow);
231 template<
class Scalar>
236 std::vector< std::vector<Scalar> >
m_;
243 for (
size_t i = 0; i < nCol; i++)
253 for (
size_t i = 0; i < nc; i++)
256 for (
size_t j = 0; j < nr; j++)
268 for (
size_t i = 0; i < nc; i++)
271 for (
size_t j = 0; j < nr; j++)
284 const Scalar&
operator()(
size_t i,
size_t j)
const {
return m_[j][i]; }
292 std::vector<Scalar>
row(
size_t i)
const 299 const std::vector<Scalar>&
getCol(
size_t i)
const 304 std::vector<Scalar>
col(
size_t j)
const 314 for (
size_t i = 0; i < nCols; i++)
324 m_.push_back(newCol);
344 template<
class Scalar>
349 std::vector<Scalar>
m_;
372 for (
size_t i = 0; i < nr; i++)
374 for (
size_t j = 0; j < nc; j++)
386 for (
size_t i = 0; i < nr; i++)
389 for (
size_t j = 0; j < nc; j++)
413 std::vector<Scalar>
row(
size_t i)
const 423 std::vector<Scalar>
col(
size_t j)
const 441 resize(nRows, nCols,
true);
487 void resize(
size_t nRows,
size_t nCols,
bool keepValues)
495 for (
size_t i = 0; i < nRows; i++)
497 for (
size_t j = 0; j < nCols; j++)
518 m_.resize(nRows * nCols);
524 template<
class Scalar>
533 if (m1(i, j) != m2(i, j))
void resize(size_t nRows, size_t nCols)
Resize the matrix.
The matrix template interface.
size_t getNumberOfRows() const
Scalar & operator()(size_t i, size_t j)
RowMatrix & operator=(const Matrix< Scalar > &m)
void resize(size_t nRows, size_t nCols, bool keepValues)
Resize the matrix.
LinearMatrix & operator=(const Matrix< Scalar > &m)
This class allows to perform a correspondence analysis.
virtual void resize(size_t nRows, size_t nCols)=0
Resize the matrix.
const Scalar & operator()(size_t i, size_t j) const
size_t getNumberOfRows() const
ColMatrix * clone() const
Create a copy of this object and send a pointer to it.
Scalar & operator()(size_t i, size_t j)
void resize_(size_t nRows, size_t nCols)
Internal basic resize fonctionnalities.
LinearMatrix(size_t nRow, size_t nCol)
build a nRow x nCol matrix.
const Scalar & operator()(size_t i, size_t j) const
std::vector< Scalar > col(size_t j) const
size_t getNumberOfColumns() const
Matrix storage in one vector.
std::vector< std::vector< Scalar > > m_
RowMatrix(const Matrix< Scalar > &m)
std::vector< Scalar > col(size_t j) const
void resize(size_t nRows, size_t nCols)
Resize the matrix.
virtual const Scalar & operator()(size_t i, size_t j) const =0
ColMatrix & operator=(const Matrix< Scalar > &m)
Matrix storage by column.
RowMatrix * clone() const
Create a copy of this object and send a pointer to it.
ColMatrix(size_t nRow, size_t nCol)
size_t getNumberOfColumns() const
virtual size_t getNumberOfColumns() const =0
virtual std::vector< Scalar > col(size_t j) const =0
void addCol(const std::vector< Scalar > &newCol)
void resize(size_t nRows, size_t nCols)
Resize the matrix.
bool operator==(const Matrix< Scalar > &m1, const Matrix< Scalar > &m2)
LinearMatrix()
Build a 0 x 0 matrix.
const std::vector< Scalar > & getCol(size_t i) const
The Clonable interface (allow an object to be cloned).
size_t getNumberOfRows() const
LinearMatrix * clone() const
Create a copy of this object and send a pointer to it.
std::vector< Scalar > row(size_t i) const
virtual std::vector< Scalar > row(size_t i) const =0
std::vector< Scalar > col(size_t j) const
const std::vector< Scalar > & getRow(size_t i) const
void addRow(const std::vector< Scalar > &newRow)
std::vector< Scalar > row(size_t i) const
ColMatrix(const Matrix< Scalar > &m)
RowMatrix(size_t nRow, size_t nCol)
virtual size_t getNumberOfRows() const =0
Scalar & operator()(size_t i, size_t j)
std::vector< std::vector< Scalar > > m_
virtual bool equals(const Matrix &m, double threshold=NumConstants::TINY())
const Scalar & operator()(size_t i, size_t j) const
LinearMatrix(const Matrix< Scalar > &m)
virtual ~LinearMatrix()
Destructor.
size_t getNumberOfColumns() const
std::vector< Scalar > row(size_t i) const
Exception thrown when a dimension problem occured.