gtsam  4.0.0
gtsam
FixedVector.h
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2 
3  * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4  * Atlanta, Georgia 30332-0415
5  * All Rights Reserved
6  * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7 
8  * See LICENSE for the license information
9 
10  * -------------------------------------------------------------------------- */
11 
18 #pragma once
19 
20 #include <stdarg.h>
21 #include <gtsam/base/Vector.h>
22 
23 namespace gtsam {
24 
29 template<size_t N>
30 class FixedVector : public Eigen::Matrix<double, N, 1> {
31 public:
32  typedef Eigen::Matrix<double, N, 1> Base;
33 
36 
38  FixedVector(const FixedVector& v) : Base(v) {}
39 
41  FixedVector(const Vector& v) : Base(v) {}
42 
44  FixedVector(const double* values) {
45  std::copy(values, values+N, this->data());
46  }
47 
52  inline static FixedVector repeat(double value) {
53  return FixedVector(Base::Constant(value));
54  }
55 
63  inline static FixedVector delta(size_t i, double value) {
64  return FixedVector(Base::Unit(i) * value);
65  }
66 
73  inline static FixedVector basis(size_t i) { return FixedVector(Base::Unit(i)); }
74 
78  inline static FixedVector zero() { return FixedVector(Base::Zero());}
79 
83  inline static FixedVector ones() { return FixedVector(FixedVector::Ones());}
84 
85  static size_t dim() { return Base::max_size; }
86 
87  void print(const std::string& name="") const { gtsam::print(Vector(*this), name); }
88 
89  template<size_t M>
90  bool equals(const FixedVector<M>& other, double tol=1e-9) const {
91  return false;
92  }
93 
94  bool equals(const FixedVector& other, double tol=1e-9) const {
95  return equal_with_abs_tol(*this,other,tol);
96  }
97 
98 };
99 
100 
101 } // \namespace
FixedVector(const Vector &v)
Convert from a variable-size vector to a fixed size vector.
Definition: FixedVector.h:41
Fixed size vectors - compatible with boost vectors, but with compile-type size checking.
Definition: FixedVector.h:30
FixedVector()
default constructor
Definition: FixedVector.h:35
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:141
bool equal_with_abs_tol(const Eigen::DenseBase< MATRIX > &A, const Eigen::DenseBase< MATRIX > &B, double tol=1e-9)
equals with a tolerance
Definition: Matrix.h:82
FixedVector(const double *values)
Initialize with a C-style array.
Definition: FixedVector.h:44
static FixedVector ones()
Create vector initialized to ones.
Definition: FixedVector.h:83
static FixedVector zero()
Create zero vector.
Definition: FixedVector.h:78
static FixedVector basis(size_t i)
Create basis vector, with one in spot i.
Definition: FixedVector.h:73
static FixedVector repeat(double value)
Create vector initialized to a constant value.
Definition: FixedVector.h:52
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
static FixedVector delta(size_t i, double value)
Create basis vector of with a constant in spot i.
Definition: FixedVector.h:63
FixedVector(const FixedVector &v)
copy constructors
Definition: FixedVector.h:38
typedef and functions to augment Eigen's VectorXd