CluE  1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
matrix.h
Go to the documentation of this file.
1 #ifndef MATRIX_H
2 #define MATRIX_H
3 
4 #include "point.h"
5 
6 #include <iostream>
7 #include <vector>
8 
9 namespace CluE
10 {
11 
17 class Matrix
18 {
19 public:
23  Matrix(size_t r = 0, size_t c = 0):rows(r),cols(c),entries(std::vector<double>(rows*cols, 0))
24  {
25  }
26 
30  Matrix(size_t r, size_t c, std::vector<double> const & e);
31 
35  Matrix(Point const & p, bool isRow = false);
36 
37  virtual ~Matrix()
38  {
39  }
40 
41  Matrix transpose() const;
42 
43  Matrix cholesky() const;
44 
45  bool isSPD() const;
46 
47  double spdDeterminant() const;
48 
49  Matrix spdInverse() const;
50 
51  Matrix gramSchmidt() const;
52 
56  Matrix& operator+=(Matrix const & m);
57 
61  Matrix& operator-=(Matrix const & m);
62 
66  Matrix& operator*=(Matrix const & m);
67 
71  Matrix operator+(Matrix const & m) const;
72 
76  Matrix operator-(Matrix const & m) const;
77 
81  Matrix operator*(Matrix const & m) const;
82 
86  double& operator()(size_t row, size_t col)
87  {
88  return this->entries[row*this->cols+col];
89  }
90 
94  double operator()(size_t row, size_t col) const
95  {
96  return this->entries[row*this->cols+col];
97  }
98 
102  size_t numRows() const
103  {
104  return this->rows;
105  }
106 
110  size_t numColumns() const
111  {
112  return this->cols;
113  }
114 
115  static Matrix identity(double dimension);
116 
117  static Matrix ltInverse(Matrix const& lt);
118 
119 private:
120  size_t rows, cols;
121  std::vector<double> entries;
122 };
123 
124 std::ostream& operator<<(std::ostream&, Matrix const&);
125 
126 Matrix operator*(double scalar, Matrix const& m);
127 
128 Point operator*(Point const& row, Matrix const& m);
129 
130 Point operator*(Matrix const& m, Point const& column);
131 
132 }
133 
134 #endif
Matrix operator-(Matrix const &m) const
Definition: matrix.cpp:206
virtual ~Matrix()
Definition: matrix.h:37
Matrix spdInverse() const
Definition: matrix.cpp:124
size_t numColumns() const
Definition: matrix.h:110
static Matrix ltInverse(Matrix const &lt)
Definition: matrix.cpp:312
size_t rows
Definition: matrix.h:120
Matrix & operator-=(Matrix const &m)
Definition: matrix.cpp:186
Matrix operator*(Matrix const &m) const
Definition: matrix.cpp:217
Weighted matrix of arbitrary dimension.
Definition: matrix.h:17
std::vector< double > entries
Definition: matrix.h:121
Matrix & operator*=(Matrix const &m)
Definition: matrix.cpp:211
Matrix(size_t r=0, size_t c=0)
Constructs a matrix.
Definition: matrix.h:23
Matrix cholesky() const
Definition: matrix.cpp:49
Matrix & operator+=(Matrix const &m)
Definition: matrix.cpp:171
size_t numRows() const
Definition: matrix.h:102
double & operator()(size_t row, size_t col)
Definition: matrix.h:86
double spdDeterminant() const
Definition: matrix.cpp:112
double operator()(size_t row, size_t col) const
Definition: matrix.h:94
bool isSPD() const
Definition: matrix.cpp:82
Matrix operator*(double scalar, Matrix const &m)
Definition: matrix.cpp:257
static Matrix identity(double dimension)
Definition: matrix.cpp:303
Weighted point of arbitrary dimension.
Definition: point.h:17
Matrix transpose() const
Definition: matrix.cpp:40
Matrix gramSchmidt() const
Definition: matrix.cpp:146
Matrix operator+(Matrix const &m) const
Definition: matrix.cpp:201
std::ostream & operator<<(std::ostream &, FrequencyDistribution &)
size_t cols
Definition: matrix.h:120