gtsam 4.1.1 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
6 * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7
9
10 * -------------------------------------------------------------------------- */
11
18#pragma once
19
20#include <stdarg.h>
21#include <gtsam/base/Vector.h>
22
23namespace gtsam {
24
29template<size_t N>
30class FixedVector : public Eigen::Matrix<double, N, 1> {
31public:
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
typedef and functions to augment Eigen's VectorXd
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:155
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:84
Fixed size vectors - compatible with boost vectors, but with compile-type size checking.
Definition: FixedVector.h:30
FixedVector()
default constructor
Definition: FixedVector.h:35
FixedVector(const Vector &v)
Convert from a variable-size vector to a fixed size vector.
Definition: FixedVector.h:41
static FixedVector basis(size_t i)
Create basis vector, with one in spot i.
Definition: FixedVector.h:73
FixedVector(const FixedVector &v)
copy constructors
Definition: FixedVector.h:38
static FixedVector delta(size_t i, double value)
Create basis vector of with a constant in spot i.
Definition: FixedVector.h:63
static FixedVector zero()
Create zero vector.
Definition: FixedVector.h:78
static FixedVector ones()
Create vector initialized to ones.
Definition: FixedVector.h:83
static FixedVector repeat(double value)
Create vector initialized to a constant value.
Definition: FixedVector.h:52
FixedVector(const double *values)
Initialize with a C-style array.
Definition: FixedVector.h:44