Bayesian Filtering Library  Generated from SVN r
vector_EIGEN.h
1 #include "../config.h"
2 #ifdef __MATRIXWRAPPER_EIGEN__
3 
4 #ifndef __VECTOR_EIGEN__
5 #define __VECTOR_EIGEN__
6 
7 #include "matrix_wrapper.h"
8 #include "vector_wrapper.h"
9 
10 #include <Eigen/Core>
11 
12 typedef Eigen::VectorXd EigenColumnVector;
13 typedef Eigen::RowVectorXd EigenRowVector;
14 
15 
16 namespace MatrixWrapper
17 {
18 
20 class ColumnVector : public EigenColumnVector, public ColumnVector_Wrapper
21 {
22 public:
23 
25  ColumnVector();
26 
28  ColumnVector(int nrows);
29  ColumnVector(int nrows,double value);
30 
32  ColumnVector(const MyColumnVector& a, const MyColumnVector& b);
33 
35  virtual ~ColumnVector();
36 
38  ColumnVector (const MyColumnVector& a);
39 
41  ColumnVector (const EigenColumnVector& a);
42 
43  virtual void resize(int num_rows);
44  virtual unsigned int rows() const;
45  virtual unsigned int columns() const;
46  virtual unsigned int capacity() const;
47  virtual void assign(int size, double value) ;
48  virtual ColumnVector vectorAdd(const MyColumnVector& v2) const;
49 
50  using EigenColumnVector::operator ==;
51  using EigenColumnVector::operator =;
52  using EigenColumnVector::operator +=;
53  using EigenColumnVector::operator -=;
54  using EigenColumnVector::operator +;
55  using EigenColumnVector::operator -;
56 
57  virtual ColumnVector& operator =(const MyColumnVector& a);
58  virtual ColumnVector& operator =(double a);
59 
60  virtual MyColumnVector & operator+= (const MyColumnVector& a);
61  virtual MyColumnVector & operator-= (const MyColumnVector& a);
62  virtual MyColumnVector operator+ (const MyColumnVector &a) const;
63  virtual MyColumnVector operator- (const MyColumnVector &a) const;
64 
65  virtual MyColumnVector& operator+= (double b);
66  virtual MyColumnVector& operator-= (double b);
67  virtual MyColumnVector& operator*= (double b);
68  virtual MyColumnVector& operator/= (double b);
69  virtual MyColumnVector operator+ (double b) const;
70  virtual MyColumnVector operator- (double b) const;
71  virtual MyColumnVector operator* (double b) const;
72  virtual MyColumnVector operator/ (double b) const;
73 
75  virtual double operator[](unsigned int i) const
76  {
77  //std::cout << "(BOOSTVECTOR) operator[] called " << i << std::endl;
78  // if (i==0)
79  // std::cout << "(BOOSTVECTOR) operator[0]" << std::endl;
80 
81  return (*this)(i+1);
82  }
83 
85  virtual double& operator[](unsigned int i)
86  {
87  //std::cout << "(BOOSTVECTOR) operator[] called " << i << std::endl;
88  // if (i==0)
89  // std::cout << "(BOOSTVECTOR) operator[0]" << std::endl;
90  return (*this)(i+1);
91  }
92 
93  virtual double operator()(unsigned int) const;
94  virtual bool operator==(const MyColumnVector& a) const;
95  virtual double& operator()(unsigned int);
96  virtual MyMatrix operator* (const MyRowVector &a) const;
97  virtual MyColumnVector sub(int j_start , int j_end) const;
98  virtual MyRowVector transpose() const;
99 
100 
101 };
102 
104 class RowVector : public EigenRowVector, public RowVector_Wrapper
105 {
106  // No private member: We don't add anything.
107 
108  // Public Members
109  public:
110  RowVector();
111  RowVector(int ncols);
112  RowVector(int ncols,double value);
113  // If you have another constructor in the matrix library you
114  // want to use, you'll have to redefine it yourself
115 
116  // Copy constructor
117  RowVector (const MyRowVector& a);
118  // Copy constructor for Eigen
119  RowVector (const EigenRowVector& a);
120 
121  virtual ~RowVector();
122 
123  virtual void resize(int num_cols);
124  virtual void assign(int size, double value) ;
125  virtual RowVector vectorAdd(const MyRowVector& v2) const;
126  virtual unsigned int rows() const;
127  virtual unsigned int columns() const;
128  virtual unsigned int capacity() const;
129  virtual RowVector& operator =(double a);
130  virtual RowVector& operator =(const MyRowVector& a);
131 
132  using EigenRowVector::operator ==;
133  using EigenRowVector::operator =;
134  using EigenRowVector::operator +=;
135  using EigenRowVector::operator -=;
136  using EigenRowVector::operator +;
137  using EigenRowVector::operator -;
138 
139  virtual MyRowVector & operator+= (const MyRowVector& a);
140  virtual MyRowVector & operator-= (const MyRowVector& a);
141  virtual MyRowVector operator+ (const MyRowVector &a) const;
142  virtual MyRowVector operator- (const MyRowVector &a) const;
143 
144  virtual MyRowVector& operator+= (double b);
145  virtual MyRowVector& operator-= (double b);
146  virtual MyRowVector& operator*= (double b);
147  virtual MyRowVector& operator/= (double b);
148  virtual MyRowVector operator+ (double b) const;
149  virtual MyRowVector operator- (double b) const;
150  virtual MyRowVector operator* (double b) const;
151  virtual MyRowVector operator/ (double b) const;
152 
153  virtual double operator()(unsigned int) const;
154  virtual bool operator==(const MyRowVector& a) const;
155  virtual double& operator()(unsigned int);
156  virtual MyRowVector sub(int j_start , int j_end) const;
157  virtual MyColumnVector transpose() const;
158  virtual double operator*(const MyColumnVector& a) const;
159 
160 };
161 
162 }
163 
164 #endif
165 
166 #endif