Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __MATRIX_WRAPPER__
00020 #define __MATRIX_WRAPPER__
00021
00022
00023
00024
00025 #define use_namespace
00026 #define MyMatrix MatrixWrapper::Matrix
00027 #define MyColumnVector MatrixWrapper::ColumnVector
00028 #define MyRowVector MatrixWrapper::RowVector
00029 #define MySymmetricMatrix MatrixWrapper::SymmetricMatrix
00030
00031 namespace MatrixWrapper{
00032
00033 class Matrix;
00034 class ColumnVector;
00035 class RowVector;
00036 class SymmetricMatrix;
00037
00039 class Matrix_Wrapper
00040 {
00041 public:
00042
00044 Matrix_Wrapper() {};
00045
00047 virtual ~Matrix_Wrapper() {};
00048
00050 virtual unsigned int size() const = 0;
00051
00053 virtual unsigned int capacity() const = 0;
00054
00056 virtual unsigned int rows() const = 0;
00057
00059 virtual unsigned int columns() const = 0;
00060
00062 virtual double& operator()(unsigned int,unsigned int) = 0;
00063
00065 virtual double operator()(unsigned int,unsigned int) const = 0;
00066
00068 virtual bool operator==(const MyMatrix& a) const = 0;
00069
00070
00072 virtual MyMatrix& operator =(double a) = 0;
00073
00074
00075
00077 virtual MyMatrix& operator +=(double a) = 0;
00078
00080 virtual MyMatrix& operator -=(double a) = 0;
00081
00083 virtual MyMatrix& operator *=(double b) = 0;
00084
00086 virtual MyMatrix& operator /=(double b) = 0;
00087
00089 virtual MyMatrix operator+ (double b) const = 0;
00090
00092 virtual MyMatrix operator- (double b) const = 0;
00093
00095 virtual MyMatrix operator* (double b) const = 0;
00096
00098 virtual MyMatrix operator/ (double b) const = 0;
00099
00101 virtual MyMatrix& operator =(const MySymmetricMatrix& a) = 0;
00102
00104 virtual MyMatrix& operator +=(const MyMatrix& a) = 0;
00105
00107 virtual MyMatrix& operator -=(const MyMatrix& a) = 0;
00108
00110 virtual MyMatrix operator+ (const MyMatrix &a) const = 0;
00111
00113 virtual MyMatrix operator- (const MyMatrix &a) const = 0;
00114
00116 virtual MyMatrix operator* (const MyMatrix &a) const = 0;
00117
00118
00119
00121 virtual MyColumnVector operator* ( const MyColumnVector &b) const = 0;
00122
00123
00125 virtual MyRowVector rowCopy(unsigned int r) const = 0;
00126
00128 virtual MyColumnVector columnCopy(unsigned int c) const = 0;
00129
00131 virtual void resize(unsigned int i, unsigned int j,
00132 bool copy=true, bool initialize=true) = 0;
00133
00135 virtual MyMatrix pseudoinverse(double epsilon = 0.01 ) const;
00136
00138 virtual MyMatrix inverse() const = 0;
00139
00141 virtual MyMatrix transpose() const = 0;
00142
00144 virtual double determinant() const = 0;
00145
00147
00150 virtual int convertToSymmetricMatrix(MySymmetricMatrix& sym) = 0;
00151
00153 virtual MyMatrix sub(int i_start, int i_end, int j_start , int j_end) const = 0;
00154
00156 virtual bool SVD(MyColumnVector& D, MyMatrix& U, MyMatrix& V) const ;
00157
00158 double PYTHAG(double a,double b) const;
00159
00160 double SIGN(double a,double b) const;
00161
00162 };
00163
00164
00166 class SymmetricMatrix_Wrapper
00167 {
00168 public:
00170 SymmetricMatrix_Wrapper() {};
00171
00173 virtual ~SymmetricMatrix_Wrapper() {};
00174
00176 virtual unsigned int size() const = 0;
00177
00179 virtual unsigned int capacity() const = 0;
00180
00181
00183 virtual unsigned int rows() const = 0;
00184
00186 virtual unsigned int columns() const = 0;
00187
00189 virtual double& operator()(unsigned int,unsigned int) = 0;
00190
00192 virtual double operator()(unsigned int,unsigned int) const = 0;
00193
00195 virtual bool operator==(const MySymmetricMatrix& a) const = 0;
00196
00198 virtual MySymmetricMatrix& operator =(double a) = 0;
00199
00200
00201
00203 virtual MySymmetricMatrix& operator +=(double a) = 0;
00204
00206 virtual MySymmetricMatrix& operator -=(double a) = 0;
00207
00209 virtual MySymmetricMatrix& operator *=(double b) = 0;
00210
00212 virtual MySymmetricMatrix& operator /=(double b) = 0;
00213
00215 virtual MySymmetricMatrix operator+ (double b) const = 0;
00216
00218 virtual MySymmetricMatrix operator- (double b) const = 0;
00219
00221 virtual MySymmetricMatrix operator* (double b) const = 0;
00222
00224 virtual MySymmetricMatrix operator/ (double b) const = 0;
00225
00226
00228 virtual MyMatrix& operator +=(const MyMatrix& a) = 0;
00229
00231 virtual MyMatrix& operator -=(const MyMatrix& a) = 0;
00232
00234 virtual MyMatrix operator+ (const MyMatrix &a) const = 0;
00235
00237 virtual MyMatrix operator- (const MyMatrix &a) const = 0;
00238
00240 virtual MyMatrix operator* (const MyMatrix &a) const = 0;
00241
00243 virtual MySymmetricMatrix& operator +=(const MySymmetricMatrix& a) = 0;
00244
00246 virtual MySymmetricMatrix& operator -=(const MySymmetricMatrix& a) = 0;
00247
00249 virtual MySymmetricMatrix operator+ (const MySymmetricMatrix &a) const = 0;
00250
00252 virtual MySymmetricMatrix operator- (const MySymmetricMatrix &a) const= 0;
00253
00255 virtual MyMatrix operator* (const MySymmetricMatrix &a) const = 0;
00256
00257
00258
00260 virtual ColumnVector operator* ( const MyColumnVector &b) const = 0;
00261
00263 virtual void multiply( const MyColumnVector &b, MyColumnVector &result) const = 0;
00264
00266 virtual void resize(unsigned int i, bool copy=true, bool initialize=true) = 0;
00267
00269 virtual MySymmetricMatrix inverse() const = 0;
00270
00272 virtual MySymmetricMatrix transpose() const = 0;
00273
00275 virtual double determinant() const = 0;
00276
00278 virtual MyMatrix sub(int i_start, int i_end, int j_start , int j_end) const = 0;
00279
00281 virtual bool cholesky_semidefinite(MyMatrix& m) const ;
00282
00283 };
00284
00285
00286 }
00287
00288
00289
00290
00291 #include "matrix_NEWMAT.h"
00292 #include "matrix_LTI.h"
00293 #include "matrix_BOOST.h"
00294 #include "matrix_EIGEN.h"
00295
00296
00297 #endif // __MATRIX_WRAPPER__
bfl_eigen
Author(s): Klaas Gadeyne, Wim Meeussen, Tinne Delaet and many others. See web page for a full contributor list. Eigen matrix library support added by Johannes Meyer.
autogenerated on Mon Oct 6 2014 00:20:35