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
13typedef Eigen::MatrixXd EigenMatrix;
14typedef Eigen::MatrixXd EigenSymmetricMatrix;
15typedef Eigen::MatrixXd::ConstSelfAdjointViewReturnType<Eigen::Upper>::Type EigenSymmetricView;
16
17namespace MatrixWrapper
18{
19
21class 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
91class 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