Bayesian Filtering Library  Generated from SVN r
matrix_EIGEN.h
1 #include "../config.h"
2 #ifdef __MATRIXWRAPPER_EIGEN__
3 
4 #ifndef __MATRIX_EIGEN__
5 #define __MATRIX_EIGEN__
6 #include "../../bfl_constants.h"
7 #include "matrix_wrapper.h"
8 #include "vector_wrapper.h"
9 
10 #include <Eigen/Core>
11 #include <assert.h>
12 
13 typedef Eigen::MatrixXd EigenMatrix;
14 typedef Eigen::MatrixXd EigenSymmetricMatrix;
15 typedef Eigen::MatrixXd::ConstSelfAdjointViewReturnType<Eigen::Upper>::Type EigenSymmetricView;
16 
17 namespace MatrixWrapper
18 {
19 
21 class Matrix : public EigenMatrix, public Matrix_Wrapper
22 {
23  private: // No private members: We don't add anything.
24 
25  public: // Public Members
26 
27  // Constructors
28  Matrix();
29  Matrix(int m, int n);
30 
31  // Destructor
32  virtual ~Matrix();
33 
34  // Copy constructor
35  Matrix (const MyMatrix& a);
36  Matrix(const EigenMatrix & a);
37 
38  Matrix(int num_rows,const RowVector& v);
39 
40 
41  virtual unsigned int size() const;
42  virtual unsigned int capacity() const;
43  virtual unsigned int rows() const;
44  virtual unsigned int columns() const;
45  virtual double& operator()(unsigned int,unsigned int);
46  virtual double operator()(unsigned int,unsigned int) const;
47  virtual RowVector operator[](unsigned int)const;
48 
49  using EigenMatrix::operator ==;
50  using EigenMatrix::operator =;
51  using EigenMatrix::operator +=;
52  using EigenMatrix::operator -=;
53  using EigenMatrix::operator +;
54  using EigenMatrix::operator -;
55 
56  virtual bool operator==(const MyMatrix& a) const;
57 
58  virtual MyMatrix& operator =(double a);
59 
60  virtual MyMatrix& operator +=(double a);
61  virtual MyMatrix& operator -=(double a);
62  virtual MyMatrix& operator *=(double b);
63  virtual MyMatrix& operator /=(double b);
64  virtual MyMatrix operator+ (double b) const;
65  virtual MyMatrix operator- (double b) const;
66  virtual MyMatrix operator* (double b) const;
67  virtual MyMatrix operator/ (double b) const;
68 
69  virtual MyMatrix& operator =(const MySymmetricMatrix& a);
70  virtual MyMatrix& operator +=(const MyMatrix& a);
71  virtual MyMatrix& operator -=(const MyMatrix& a);
72  virtual MyMatrix operator+ (const MyMatrix &a) const;
73  virtual MyMatrix operator- (const MyMatrix &a) const;
74  virtual MyMatrix operator* (const MyMatrix &a) const;
75 
76  virtual MyColumnVector operator* ( const MyColumnVector &b) const;
77 
78  virtual MyRowVector rowCopy(unsigned int r) const;
79  virtual MyColumnVector columnCopy(unsigned int c) const;
80 
81  virtual void resize(unsigned int i, unsigned int j,
82  bool copy=true, bool initialize=true);
83  virtual MyMatrix inverse() const;
84  virtual MyMatrix transpose() const;
85  virtual double determinant() const;
86  virtual int convertToSymmetricMatrix(MySymmetricMatrix& sym);
87  virtual MyMatrix sub(int i_start, int i_end, int j_start , int j_end) const;
88 
89 };
90 
91 class SymmetricMatrix : public EigenSymmetricMatrix, public SymmetricMatrix_Wrapper
92 {
93  private: //
94 
95  public: //
96  // Constructors
97  SymmetricMatrix();
98  SymmetricMatrix(int n);
99 
100  // Copy constructors
101  SymmetricMatrix(const MySymmetricMatrix& a);
102  SymmetricMatrix(const EigenSymmetricMatrix& a);
103  SymmetricMatrix(const EigenSymmetricView & a);
104 
105  SymmetricMatrix(int num_rows,const RowVector& v);
106 
107  // Destructor
108  virtual ~SymmetricMatrix();
109 
110  virtual unsigned int size() const;
111  virtual unsigned int capacity() const;
112  virtual unsigned int rows() const;
113  virtual unsigned int columns() const;
114  virtual MySymmetricMatrix inverse() const;
115  virtual MySymmetricMatrix transpose() const;
116  virtual double determinant() const;
117 
118  virtual double& operator()(unsigned int,unsigned int);
119  virtual double operator()(unsigned int,unsigned int) const;
120  virtual RowVector operator[](unsigned int)const;
121 
122  using EigenSymmetricMatrix::operator ==;
123  using EigenSymmetricMatrix::operator =;
124  using EigenSymmetricMatrix::operator +=;
125  using EigenSymmetricMatrix::operator -=;
126  using EigenSymmetricMatrix::operator +;
127  using EigenSymmetricMatrix::operator -;
128 
129  virtual bool operator==(const MySymmetricMatrix& a) const;
130 
131  virtual MySymmetricMatrix& operator=(double a);
132 
133  virtual MySymmetricMatrix& operator +=(double a);
134  virtual MySymmetricMatrix& operator -=(double a);
135  virtual MySymmetricMatrix& operator *=(double b);
136  virtual MySymmetricMatrix& operator /=(double b);
137  virtual MySymmetricMatrix operator + (double b) const;
138  virtual MySymmetricMatrix operator - (double b) const;
139  virtual MySymmetricMatrix operator * (double b) const;
140  virtual MySymmetricMatrix operator / (double b) const;
141 
142  virtual MyRowVector rowCopy(unsigned int r) const;
143 
144  virtual MyMatrix& operator +=(const MyMatrix& a);
145  virtual MyMatrix& operator -=(const MyMatrix& a);
146  virtual MyMatrix operator + (const MyMatrix &a) const;
147  virtual MyMatrix operator - (const MyMatrix &a) const;
148  virtual MyMatrix operator * (const MyMatrix &a) const;
149 
150  virtual MySymmetricMatrix& operator +=(const MySymmetricMatrix& a);
151  virtual MySymmetricMatrix& operator -=(const MySymmetricMatrix& a);
152  virtual MySymmetricMatrix operator + (const MySymmetricMatrix &a) const;
153  virtual MySymmetricMatrix operator - (const MySymmetricMatrix &a) const;
154  virtual MyMatrix operator * (const MySymmetricMatrix& a) const;
155 
156  virtual MyColumnVector operator* (const MyColumnVector &b) const;
157  virtual void multiply (const MyColumnVector &b, MyColumnVector &result) const;
158 
159  virtual void resize(unsigned int i, bool copy=true, bool initialize=true);
160  virtual MyMatrix sub(int i_start, int i_end, int j_start , int j_end) const;
161 
162 };
163 
164 }
165 
166 #endif
167 
168 #endif
MatrixWrapper::SymmetricMatrix::operator=
virtual MySymmetricMatrix & operator=(double a)
Set all elements of the Matrix equal to a.
MatrixWrapper::Matrix::columnCopy
virtual MyColumnVector columnCopy(unsigned int c) const
Get column from matrix.
MatrixWrapper::Matrix::determinant
virtual double determinant() const
get determinant
MatrixWrapper::Matrix::rowCopy
virtual MyRowVector rowCopy(unsigned int r) const
Get row from matrix.
MatrixWrapper::SymmetricMatrix::operator*=
virtual MySymmetricMatrix & operator*=(double b)
SYMMETRICMATRIX - SCALAR operator.
MatrixWrapper::SymmetricMatrix::size
virtual unsigned int size() const
Ask Number of Rows.
MatrixWrapper::Matrix::rows
virtual unsigned int rows() const
Ask Number of Rows.
MatrixWrapper::Matrix::columns
virtual unsigned int columns() const
Ask Number of Columns.
MatrixWrapper::Matrix::operator==
virtual bool operator==(const MyMatrix &a) const
Operator ==.
MatrixWrapper::Matrix::size
virtual unsigned int size() const
Ask Number of Rows.
MatrixWrapper::SymmetricMatrix::operator/=
virtual MySymmetricMatrix & operator/=(double b)
SYMMETRICMATRIX - SCALAR operator.
MatrixWrapper::SymmetricMatrix::inverse
virtual MySymmetricMatrix inverse() const
get inverse
MatrixWrapper::Matrix::resize
virtual void resize(unsigned int i, unsigned int j, bool copy=true, bool initialize=true)
resize matrix
MatrixWrapper::Matrix::operator*
virtual MyMatrix operator*(double b) const
MATRIX - SCALAR operator.
MatrixWrapper::SymmetricMatrix::operator-
virtual MySymmetricMatrix operator-(double b) const
SYMMETRICMATRIX - SCALAR operator.
MatrixWrapper::Matrix::operator=
virtual MyMatrix & operator=(double a)
Set all elements of the Matrix equal to a.
MatrixWrapper::Matrix::operator-=
virtual MyMatrix & operator-=(double a)
MATRIX - SCALAR operator.
MatrixWrapper::Matrix::operator*=
virtual MyMatrix & operator*=(double b)
MATRIX - SCALAR operator.
MatrixWrapper::SymmetricMatrix::columns
virtual unsigned int columns() const
Ask Number of Columns.
MatrixWrapper::SymmetricMatrix::operator+=
virtual MySymmetricMatrix & operator+=(double a)
SYMMETRICMATRIX - SCALAR operator.
MatrixWrapper::SymmetricMatrix::determinant
virtual double determinant() const
get determinant
MatrixWrapper::Matrix::operator/
virtual MyMatrix operator/(double b) const
MATRIX - SCALAR operator.
MatrixWrapper::Matrix::operator+
virtual MyMatrix operator+(double b) const
MATRIX - SCALAR operator.
MatrixWrapper::SymmetricMatrix::operator-=
virtual MySymmetricMatrix & operator-=(double a)
SYMMETRICMATRIX - SCALAR operator.
MatrixWrapper::SymmetricMatrix::transpose
virtual MySymmetricMatrix transpose() const
get transpose
MatrixWrapper::Matrix::capacity
virtual unsigned int capacity() const
Ask Number of Rows.
MatrixWrapper::SymmetricMatrix::operator==
virtual bool operator==(const MySymmetricMatrix &a) const
Operator ==.
MatrixWrapper::SymmetricMatrix::multiply
virtual void multiply(const MyColumnVector &b, MyColumnVector &result) const
SYMMETRICMATRIX - VECTOR operator.
MatrixWrapper::SymmetricMatrix::operator+
virtual MySymmetricMatrix operator+(double b) const
SYMMETRICMATRIX - SCALAR operator.
MatrixWrapper::Matrix::sub
virtual MyMatrix sub(int i_start, int i_end, int j_start, int j_end) const
get sub matrix
MatrixWrapper::SymmetricMatrix::operator/
virtual MySymmetricMatrix operator/(double b) const
SYMMETRICMATRIX - SCALAR operator.
MatrixWrapper::Matrix::transpose
virtual MyMatrix transpose() const
get transpose
MatrixWrapper::Matrix::operator-
virtual MyMatrix operator-(double b) const
MATRIX - SCALAR operator.
MatrixWrapper::SymmetricMatrix::sub
virtual MyMatrix sub(int i_start, int i_end, int j_start, int j_end) const
get sub matrix
MatrixWrapper::SymmetricMatrix::operator*
virtual MySymmetricMatrix operator*(double b) const
SYMMETRICMATRIX - SCALAR operator.
MatrixWrapper::Matrix::operator/=
virtual MyMatrix & operator/=(double b)
MATRIX - SCALAR operator.
MatrixWrapper::Matrix::convertToSymmetricMatrix
virtual int convertToSymmetricMatrix(MySymmetricMatrix &sym)
Turn matrix into Symmetric one.
MatrixWrapper::SymmetricMatrix::resize
virtual void resize(unsigned int i, bool copy=true, bool initialize=true)
resize symmetric matrix
MatrixWrapper::SymmetricMatrix::rows
virtual unsigned int rows() const
Ask Number of Rows.
MatrixWrapper::Matrix::inverse
virtual MyMatrix inverse() const
get inverse
MatrixWrapper::SymmetricMatrix::capacity
virtual unsigned int capacity() const
Ask Number of Rows.
MatrixWrapper::SymmetricMatrix::operator()
virtual double & operator()(unsigned int, unsigned int)
Operator ()
MatrixWrapper::Matrix::operator+=
virtual MyMatrix & operator+=(double a)
MATRIX - SCALAR operator.
MatrixWrapper::Matrix::operator()
virtual double & operator()(unsigned int, unsigned int)
Operator ()