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
12typedef Eigen::VectorXd EigenColumnVector;
13typedef Eigen::RowVectorXd EigenRowVector;
14
15
16namespace MatrixWrapper
17{
18
20class ColumnVector : public EigenColumnVector, public ColumnVector_Wrapper
21{
22public:
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
104class 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