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
virtual MyMatrix & operator *=(double b)
MATRIX - SCALAR operator.
virtual MyMatrix operator *(double b) const
MATRIX - SCALAR operator.
virtual MySymmetricMatrix & operator=(double a)
Set all elements of the Matrix equal to a.
virtual MyMatrix & operator+=(double a)
MATRIX - SCALAR operator.
virtual MySymmetricMatrix & operator -=(double a)
SYMMETRICMATRIX - SCALAR operator.
virtual MySymmetricMatrix & operator/=(double b)
SYMMETRICMATRIX - SCALAR operator.
virtual unsigned int size() const
Ask Number of Rows.
virtual MySymmetricMatrix inverse() const
get inverse
virtual MyColumnVector columnCopy(unsigned int c) const
Get column from matrix.
virtual double & operator()(unsigned int, unsigned int)
Operator ()
virtual double determinant() const
get determinant
virtual double determinant() const
get determinant
virtual unsigned int columns() const
Ask Number of Columns.
virtual MyMatrix operator+(double b) const
MATRIX - SCALAR operator.
virtual bool operator==(const MyMatrix &a) const
Operator ==.
virtual MyRowVector rowCopy(unsigned int r) const
Get row from matrix.
virtual unsigned int rows() const
Ask Number of Rows.
virtual unsigned int capacity() const
Ask Number of Rows.
virtual MySymmetricMatrix operator/(double b) const
SYMMETRICMATRIX - SCALAR operator.
virtual MySymmetricMatrix & operator *=(double b)
SYMMETRICMATRIX - SCALAR operator.
virtual void resize(unsigned int i, unsigned int j, bool copy=true, bool initialize=true)
resize matrix
virtual MySymmetricMatrix transpose() const
get transpose
virtual unsigned int columns() const
Ask Number of Columns.
virtual MySymmetricMatrix operator *(double b) const
SYMMETRICMATRIX - SCALAR operator.
virtual int convertToSymmetricMatrix(MySymmetricMatrix &sym)
Turn matrix into Symmetric one.
virtual MySymmetricMatrix operator+(double b) const
SYMMETRICMATRIX - SCALAR operator.
virtual MyMatrix & operator=(double a)
Set all elements of the Matrix equal to a.
virtual MyMatrix operator-(double b) const
MATRIX - SCALAR operator.
virtual MySymmetricMatrix & operator+=(double a)
SYMMETRICMATRIX - SCALAR operator.
virtual unsigned int rows() const
Ask Number of Rows.
virtual MyMatrix & operator/=(double b)
MATRIX - SCALAR operator.
virtual MyMatrix operator/(double b) const
MATRIX - SCALAR operator.
virtual void multiply(const MyColumnVector &b, MyColumnVector &result) const
SYMMETRICMATRIX - VECTOR operator.
virtual double & operator()(unsigned int, unsigned int)
Operator ()
virtual MyMatrix sub(int i_start, int i_end, int j_start, int j_end) const
get sub matrix
virtual MyMatrix inverse() const
get inverse
virtual unsigned int capacity() const
Ask Number of Rows.
virtual MyMatrix & operator -=(double a)
MATRIX - SCALAR operator.
virtual MyMatrix transpose() const
get transpose
virtual void resize(unsigned int i, bool copy=true, bool initialize=true)
resize symmetric matrix
virtual bool operator==(const MySymmetricMatrix &a) const
Operator ==.
virtual unsigned int size() const
Ask Number of Rows.
virtual MyMatrix sub(int i_start, int i_end, int j_start, int j_end) const
get sub matrix