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
00020 #include "../config.h"
00021 #ifdef __MATRIXWRAPPER_LTI__
00022
00023 #include "vector_LTI.h"
00024
00025
00026 using std::cout;
00027 using std::endl;
00028
00029
00030
00031 MyColumnVector::ColumnVector() : ltiColumnVector() {}
00032 MyColumnVector::ColumnVector(int num_rows) : ltiColumnVector(num_rows){}
00033 MyColumnVector::ColumnVector(const MyColumnVector& a,
00034 const MyColumnVector& b)
00035 : ltiColumnVector(a.rows() + b.rows())
00036 {
00037 ltiColumnVector& opl = (*this);
00038
00039 unsigned int i;
00040
00041
00042 for (i=0; i< a.rows(); i++)
00043 opl.at(i) = a(i+1);
00044
00045
00046 for (i=0; i< b.rows(); i++)
00047 opl.at(a.rows() + i) = b(i+1);
00048 }
00049
00050
00051 MyColumnVector::ColumnVector(const MyMatrix &a)
00052 : ltiColumnVector(a.rows())
00053 {
00054 assert(a.columns() == 1);
00055
00056
00057 ltiColumnVector& opl = (*this);
00058 for (unsigned int i=0; i< a.rows(); i++)
00059 {
00060 opl.at(i) = a(i+1,1);
00061 }
00062 }
00063
00064
00065 MyColumnVector::~ColumnVector(){}
00066
00067
00068 MyColumnVector::ColumnVector(const MyColumnVector& a) :
00069 ltiColumnVector(a){}
00070 MyColumnVector::ColumnVector(const ltiColumnVector & a) :
00071 ltiColumnVector(a){}
00072
00073
00074 void MyColumnVector::resize(int num_rows)
00075 {
00076 ltiColumnVector & op1 = (*this);
00077 op1.resize(num_rows);
00078 }
00079
00080
00081 unsigned int MyColumnVector::rows() const { return this->size();}
00082 unsigned int MyColumnVector::columns() const { return 1;}
00083
00084 MyColumnVector
00085 MyColumnVector::vectorAdd(const MyColumnVector& v2) const
00086 {
00087 const MyColumnVector& v1 = *this;
00088 MyColumnVector res(v1.rows() + v2.rows());
00089
00090 for (unsigned int i=0; i<v1.rows(); i++)
00091 res(i) = v1(i);
00092
00093 for (unsigned int i=0; i<v2.rows(); i++)
00094 res(v1.rows()+i) = v2(i);
00095
00096 return res;
00097 }
00098
00099 const bool MyColumnVector::operator==(const MyColumnVector& a) const
00100 {
00101 const ltiColumnVector& op1 = *this;
00102 const ltiColumnVector& op2 = a;
00103 return (op1 == op2);
00104 }
00105
00106
00107
00108 MyColumnVector & MyColumnVector::operator+= (const MyColumnVector& a)
00109 {
00110 ltiColumnVector & op1 = (*this);
00111 const ltiColumnVector & op2 = a;
00112 op1 += op2;
00113 return (MyColumnVector &) op1 ;
00114 }
00115
00116 MyColumnVector & MyColumnVector::operator-= (const MyColumnVector& a)
00117 {
00118 ltiColumnVector & op1 = (*this);
00119 const ltiColumnVector & op2 = a;
00120 op1 -= op2;
00121 return (MyColumnVector &) op1 ;
00122 }
00123
00124 MyColumnVector MyColumnVector::operator+ (const MyColumnVector &a) const
00125 {
00126 ltiColumnVector op1(*this);
00127 const ltiColumnVector & op2 = a;
00128 ltiColumnVector result = (ltiColumnVector) (op1.add(op2));
00129 return (MyColumnVector) result;
00130 }
00131
00132 MyColumnVector MyColumnVector::operator- (const MyColumnVector &a) const
00133 {
00134 ltiColumnVector op1(*this);
00135 const ltiColumnVector & op2 = a;
00136 ltiColumnVector result = (ltiColumnVector) (op1.subtract(op2));
00137 return (MyColumnVector) result;
00138 }
00139
00140
00141
00142 MyColumnVector& MyColumnVector::operator+= (double a)
00143 {
00144 ltiColumnVector& op1 = *this;
00145 op1 += a;
00146 return (MyColumnVector&) op1;
00147 }
00148
00149 MyColumnVector& MyColumnVector::operator-= (double a)
00150 {
00151 ltiColumnVector& op1 = *this;
00152 op1 -= a;
00153 return (MyColumnVector&) op1;
00154 }
00155
00156
00157 MyColumnVector& MyColumnVector::operator*= (double a)
00158 {
00159 ltiColumnVector& op1 = *this;
00160 op1 *= a;
00161 return (MyColumnVector&) op1;
00162 }
00163
00164 MyColumnVector& MyColumnVector::operator/= (double a)
00165 {
00166 ltiColumnVector& op1 = *this;
00167 op1 /= a;
00168 return (MyColumnVector&) op1;
00169 }
00170
00171
00172 MyColumnVector MyColumnVector::operator+ (double a) const
00173 {
00174 ltiColumnVector op1(*this);
00175 op1 += a;
00176 return (MyColumnVector&) op1;
00177 }
00178
00179
00180 MyColumnVector MyColumnVector::operator- (double a) const
00181 {
00182 ltiColumnVector op1(*this);
00183 op1 -= a;
00184 return (MyColumnVector&) op1;
00185 }
00186
00187 MyColumnVector MyColumnVector::operator* (double a) const
00188 {
00189 ltiColumnVector op1(*this);
00190 return (MyColumnVector) (op1.multiply(a));
00191 }
00192
00193
00194 MyColumnVector MyColumnVector::operator/ (double a) const
00195 {
00196 ltiColumnVector op1(*this);
00197 return (MyColumnVector) (op1.divide(a));
00198 }
00199
00200
00201
00202
00203
00204
00205
00206 MyRowVector MyColumnVector::transpose() const
00207 {
00208 ltiRowVector transposedbase((*this));
00209 return (MyRowVector) transposedbase;
00210 }
00211
00212 MyMatrix MyColumnVector::operator* (const MyRowVector &a) const
00213 {
00214 const ltiColumnVector& op1 = *this;
00215 const ltiRowVector & op2 = a;
00216 ltiMatrix result(op1.size(),op2.size());
00217 result.outerProduct(op1,op2);
00218 return (MyMatrix) result;
00219 }
00220
00221 MyColumnVector& MyColumnVector::operator=(const MyColumnVector &a)
00222 {
00223
00224 ltiColumnVector * op1; const ltiColumnVector * op2;
00225 op1 = this; op2 = &a;
00226 *op1 = *op2;
00227
00228 return *this;
00229 }
00230
00231 MyColumnVector& MyColumnVector::operator=(const double a)
00232 {
00233
00234 ltiColumnVector * op1;
00235 op1 = this;
00236 (*op1).fill(a,0,(*op1).size());
00237
00238 return *this;
00239 }
00240
00241 double &MyColumnVector::operator()(unsigned int i)
00242 {
00243 assert (i != 0);
00244
00245
00246 return this->at(i-1);
00247 }
00248
00249 const double MyColumnVector::operator()(unsigned int i) const
00250 {
00251 assert (i != 0);
00252
00253 return this->at(i-1);
00254 }
00255
00256
00257 MyColumnVector MyColumnVector::sub(int j_start , int j_end) const
00258 {
00259 ltiColumnVector result(*this,j_start-1,j_end-1);
00260 return (MyColumnVector) result;
00261 }
00262
00266
00267
00268 MyRowVector::RowVector() : ltiRowVector() {}
00269 MyRowVector::RowVector(int num_rows) : ltiRowVector(num_rows){}
00270
00271
00272 MyRowVector::~RowVector(){}
00273
00274
00275 MyRowVector::RowVector(const MyRowVector& a) : ltiRowVector(a){}
00276 MyRowVector::RowVector(const ltiRowVector & a) : ltiRowVector(a){}
00277
00278
00279 unsigned int MyRowVector::rows() const { return 1;}
00280 unsigned int MyRowVector::columns() const { return this->size();}
00281
00282 const bool MyRowVector::operator==(const MyRowVector& a) const
00283 {
00284 const ltiRowVector& op1 = *this;
00285 const ltiRowVector& op2 = a;
00286 return (op1 == op2);
00287 }
00288
00289
00290
00291 MyRowVector & MyRowVector::operator+= (const MyRowVector& a)
00292 {
00293 ltiRowVector & op1 = (*this);
00294 const ltiRowVector & op2 = a;
00295 op1 += op2;
00296 return (MyRowVector &) op1 ;
00297 }
00298
00299 MyRowVector & MyRowVector::operator-= (const MyRowVector& a)
00300 {
00301 ltiRowVector & op1 = (*this);
00302 const ltiRowVector & op2 = a;
00303 op1 -= op2;
00304 return (MyRowVector &) op1 ;
00305 }
00306
00307 MyRowVector MyRowVector::operator+ (const MyRowVector &a) const
00308 {
00309 ltiRowVector op1(*this);
00310 const ltiRowVector & op2 = a;
00311 ltiRowVector result = (ltiRowVector) (op1.add(op2));
00312 return (MyRowVector) result;
00313 }
00314
00315 MyRowVector MyRowVector::operator- (const MyRowVector &a) const
00316 {
00317 ltiRowVector op1(*this);
00318 const ltiRowVector & op2 = a;
00319 ltiRowVector result = (ltiRowVector) (op1.subtract(op2));
00320 return (MyRowVector) result;
00321 }
00322
00323
00324
00325
00326
00327
00328 MyRowVector& MyRowVector::operator+= (double a)
00329 {
00330 ltiRowVector& op1 = *this;
00331 op1 += a;
00332 return (MyRowVector&) op1;
00333 }
00334
00335 MyRowVector& MyRowVector::operator-= (double a)
00336 {
00337 ltiRowVector& op1 = *this;
00338 op1 -= a;
00339 return (MyRowVector&) op1;
00340 }
00341
00342
00343 MyRowVector& MyRowVector::operator*= (double a)
00344 {
00345 ltiRowVector& op1 = *this;
00346 op1 *= a;
00347 return (MyRowVector&) op1;
00348 }
00349
00350 MyRowVector& MyRowVector::operator/= (double a)
00351 {
00352 ltiRowVector& op1 = *this;
00353 op1 /= a;
00354 return (MyRowVector&) op1;
00355 }
00356
00357
00358 MyRowVector MyRowVector::operator+ (double a) const
00359 {
00360 ltiRowVector op1(*this);
00361 op1 += a;
00362 return (MyRowVector&) op1;
00363 }
00364
00365
00366 MyRowVector MyRowVector::operator- (double a) const
00367 {
00368 ltiRowVector op1(*this);
00369 op1 -= a;
00370 return (MyRowVector&) op1;
00371 }
00372
00373 MyRowVector MyRowVector::operator* (double a) const
00374 {
00375 ltiRowVector op1(*this);
00376 return (MyRowVector) (op1.multiply(a));
00377 }
00378
00379
00380 MyRowVector MyRowVector::operator/ (double a) const
00381 {
00382 ltiRowVector op1(*this);
00383 return (MyRowVector) (op1.divide(a));
00384 }
00385
00386 MyRowVector MyRowVector::operator*(const MyMatrix& a)
00387 {
00388 assert(this->columns() == a.rows());
00389
00390 ltiRowVector & op1 = (*this);
00391 const ltiMatrix & op2 = a;
00392 ltiRowVector result = op2.leftMultiply(op1);
00393 return (MyRowVector) result;
00394 }
00395
00396
00397 double MyRowVector::operator*(const MyColumnVector& a) const
00398 {
00399 assert(this->columns() == a.rows());
00400
00401 const ltiRowVector & op1 = (*this);
00402 const ltiColumnVector & op2 = a;
00403 double result=op1.dot(op2);
00404 return result;
00405 }
00406
00407 MyRowVector& MyRowVector::operator=(const MyRowVector &a)
00408 {
00409
00410 ltiRowVector * op1;
00411 const ltiRowVector * op2;
00412 op1 = this;
00413 op2 = &a;
00414 *op1 = *op2;
00415
00416 return *this;
00417 }
00418
00419
00420 MyRowVector& MyRowVector::operator=(const double a)
00421 {
00422
00423 ltiRowVector * op1;
00424 op1 = this;
00425 (*op1).fill(a,0,(*op1).size());
00426
00427 return *this;
00428 }
00429
00430
00431 MyColumnVector MyRowVector::transpose() const
00432 {
00433 ltiColumnVector transposedbase((*this));
00434 return (MyColumnVector) transposedbase;
00435 }
00436
00437
00438 double &MyRowVector::operator()(unsigned int i)
00439 {
00440 assert (i != 0);
00441 ltiRowVector * op1;
00442 op1 = this;
00443 return op1->at(i-1);
00444 }
00445
00446 const double MyRowVector::operator()(unsigned int i) const
00447 {
00448 assert (i != 0);
00449 ltiRowVector op1(*this);
00450 return ((op1.at(i-1)));
00451 }
00452
00453
00454
00455 MyRowVector MyRowVector::sub(int j_start , int j_end) const
00456 {
00457 ltiRowVector result(*this,j_start-1,j_end-1);
00458 return (MyRowVector) result;
00459 }
00460
00461
00462 void MyRowVector::resize(int num_cols)
00463 {
00464 ltiRowVector & op1 = (*this);
00465 op1.resize(num_cols);
00466 }
00467
00468
00469
00470 MyRowVector
00471 MyRowVector::vectorAdd(const MyRowVector& v2) const
00472 {
00473 const MyRowVector& v1 = *this;
00474 MyRowVector res(v1.columns() + v2.columns());
00475
00476 for (unsigned int i=0; i<v1.columns(); i++)
00477 res(i) = v1(i);
00478
00479 for (unsigned int i=0; i<v2.columns(); i++)
00480 res(v1.columns()+i) = v2(i);
00481
00482 return res;
00483 }
00484
00485 #endif
bfl
Author(s): Klaas Gadeyne, Wim Meeussen, Tinne Delaet and many others. See web page for a full contributor list. ROS package maintained by Wim Meeussen.
autogenerated on Sun Oct 5 2014 22:29:53