27 #include <gtsam/3rdparty/gtsam_eigen_includes.h>
34 typedef Eigen::VectorXd Vector;
37 typedef Eigen::Vector2d Vector2;
38 typedef Eigen::Vector3d Vector3;
39 typedef Eigen::Matrix<double, 6, 1> Vector6;
41 typedef Eigen::VectorBlock<Vector> SubVector;
42 typedef Eigen::VectorBlock<const Vector> ConstSubVector;
49 GTSAM_EXPORT Vector
repeat(
size_t n,
double value);
59 GTSAM_EXPORT Vector
delta(
size_t n,
size_t i,
double value);
68 inline Vector
basis(
size_t n,
size_t i) {
return delta(n, i, 1.0); }
74 inline Vector
zero(
size_t n) {
return Vector::Zero(n);}
80 inline Vector
ones(
size_t n) {
return Vector::Ones(n); }
85 GTSAM_EXPORT
bool zero(
const Vector& v);
90 inline size_t dim(
const Vector& v) {
return v.size(); }
95 GTSAM_EXPORT
void print(
const Vector& v,
const std::string& s =
"", std::ostream& stream = std::cout);
100 GTSAM_EXPORT
void save(
const Vector& A,
const std::string &s,
const std::string& filename);
105 GTSAM_EXPORT
bool operator==(
const Vector& vec1,
const Vector& vec2);
117 GTSAM_EXPORT
bool equal_with_abs_tol(
const Vector& vec1,
const Vector& vec2,
double tol=1e-9);
118 GTSAM_EXPORT
bool equal_with_abs_tol(
const SubVector& vec1,
const SubVector& vec2,
double tol=1e-9);
123 inline bool equal(
const Vector& vec1,
const Vector& vec2,
double tol) {
130 inline bool equal(
const Vector& vec1,
const Vector& vec2) {
141 GTSAM_EXPORT
bool assert_equal(
const Vector& vec1,
const Vector& vec2,
double tol=1e-9);
150 GTSAM_EXPORT
bool assert_inequal(
const Vector& vec1,
const Vector& vec2,
double tol=1e-9);
159 GTSAM_EXPORT
bool assert_equal(
const SubVector& vec1,
const SubVector& vec2,
double tol=1e-9);
160 GTSAM_EXPORT
bool assert_equal(
const ConstSubVector& vec1,
const ConstSubVector& vec2,
double tol=1e-9);
169 GTSAM_EXPORT
bool linear_dependent(
const Vector& vec1,
const Vector& vec2,
double tol=1e-9);
178 GTSAM_EXPORT ConstSubVector
sub(
const Vector &v,
size_t i1,
size_t i2);
186 GTSAM_EXPORT
void subInsert(Vector& fullVector,
const Vector& subVector,
size_t i);
194 GTSAM_EXPORT Vector
emul(
const Vector &a,
const Vector &b);
202 GTSAM_EXPORT Vector
ediv(
const Vector &a,
const Vector &b);
210 GTSAM_EXPORT Vector
ediv_(
const Vector &a,
const Vector &b);
217 GTSAM_EXPORT
double sum(
const Vector &a);
225 GTSAM_EXPORT
double norm_2(
const Vector& v);
232 GTSAM_EXPORT Vector
reciprocal(
const Vector &a);
239 GTSAM_EXPORT Vector
esqrt(
const Vector& v);
246 GTSAM_EXPORT Vector
abs(
const Vector& v);
253 GTSAM_EXPORT
double max(
const Vector &a);
258 template<
class V1,
class V2>
259 inline double dot(
const V1 &a,
const V2& b) {
260 assert (b.size()==a.size());
265 template<
class V1,
class V2>
267 assert (b.size()==a.size());
275 inline void scal(
double alpha, Vector& x) { x *= alpha; }
281 template<
class V1,
class V2>
282 inline void axpy(
double alpha,
const V1& x, V2& y) {
283 assert (y.size()==x.size());
286 inline void axpy(
double alpha,
const Vector& x, SubVector y) {
287 assert (y.size()==x.size());
296 GTSAM_EXPORT std::pair<double,Vector>
house(
const Vector &x);
311 GTSAM_EXPORT std::pair<Vector, double>
312 weightedPseudoinverse(
const Vector& v,
const Vector& weights);
319 GTSAM_EXPORT
double weightedPseudoinverse(
const Vector& a,
const Vector& weights, Vector& pseudo);
324 GTSAM_EXPORT Vector
concatVectors(
const std::list<Vector>& vs);
333 #include <boost/serialization/nvp.hpp>
334 #include <boost/serialization/array.hpp>
335 #include <boost/serialization/split_free.hpp>
338 namespace serialization {
341 template<
class Archive>
342 void save(Archive & ar,
const gtsam::Vector & v,
unsigned int version) {
343 const size_t size = v.size();
344 ar << BOOST_SERIALIZATION_NVP(size);
345 ar << make_nvp(
"data", make_array(v.data(), v.size()));
348 template<
class Archive>
349 void load(Archive & ar, gtsam::Vector & v,
unsigned int version) {
351 ar >> BOOST_SERIALIZATION_NVP(size);
353 ar >> make_nvp(
"data", make_array(v.data(), v.size()));
357 template<
class Archive,
int D>
358 void save(Archive & ar,
const Eigen::Matrix<double,D,1> & v,
unsigned int version) {
359 ar << make_nvp(
"data", make_array(v.data(), v.RowsAtCompileTime));
362 template<
class Archive,
int D>
363 void load(Archive & ar, Eigen::Matrix<double,D,1> & v,
unsigned int version) {
364 ar >> make_nvp(
"data", make_array(v.data(), v.RowsAtCompileTime));
370 BOOST_SERIALIZATION_SPLIT_FREE(gtsam::Vector)
371 BOOST_SERIALIZATION_SPLIT_FREE(gtsam::Vector2)
372 BOOST_SERIALIZATION_SPLIT_FREE(gtsam::Vector3)
373 BOOST_SERIALIZATION_SPLIT_FREE(gtsam::Vector6)
bool assert_inequal(const Matrix &A, const Matrix &B, double tol)
inequals with an tolerance, prints out message if within tolerance
Definition: Matrix.cpp:80
double dot(const V1 &a, const V2 &b)
Dot product.
Definition: Vector.h:259
Vector reciprocal(const Vector &a)
Elementwise reciprocal of vector elements.
Definition: Vector.cpp:219
double houseInPlace(Vector &v)
beta = house(x) computes the HouseHolder vector in place
Definition: Vector.cpp:244
double inner_prod(const V1 &a, const V2 &b)
compatibility version for ublas' inner_prod()
Definition: Vector.h:266
void save(const Matrix &A, const string &s, const string &filename)
save a matrix to file, which can be loaded by matlab
Definition: Matrix.cpp:202
Eigen::Block< const MATRIX > sub(const MATRIX &A, size_t i1, size_t i2, size_t j1, size_t j2)
extract submatrix, slice semantics, i.e.
Definition: Matrix.h:205
Vector abs(const Vector &v)
Absolute values of vector elements.
Definition: Vector.cpp:233
void axpy(double alpha, const V1 &x, V2 &y)
BLAS Level 1 axpy: y <- alpha*x + y.
Definition: Vector.h:282
bool linear_dependent(const Matrix &A, const Matrix &B, double tol)
check whether the rows of two matrices are linear dependent
Definition: Matrix.cpp:134
pair< double, Vector > house(const Vector &x)
house(x,j) computes HouseHolder vector v and scaling factor beta from x, such that the corresponding ...
Definition: Vector.cpp:269
Vector concatVectors(const std::list< Vector > &vs)
concatenate Vectors
Definition: Vector.cpp:330
Included from all GTSAM files.
Vector esqrt(const Vector &v)
Elementwise sqrt of vector elements.
Definition: Vector.cpp:228
size_t dim(const Vector &v)
dimensionality == size
Definition: Vector.h:90
Vector ediv(const Vector &a, const Vector &b)
elementwise division
Definition: Vector.cpp:191
bool operator==(const Matrix &A, const Matrix &B)
equality is just equal_with_abs_tol 1e-9
Definition: Matrix.h:104
bool zero(const Vector &v)
check if all zero
Definition: Vector.cpp:39
double sum(const Vector &a)
sum vector elements
Definition: Vector.cpp:209
void print(const Matrix &A, const string &s, ostream &stream)
print a matrix
Definition: Matrix.cpp:183
void subInsert(Vector &fullVector, const Vector &subVector, size_t i)
Inserts a subvector into a vector IN PLACE.
Definition: Vector.cpp:180
double max(const Vector &a)
Return the max element of a vector.
Definition: Vector.cpp:238
Vector ediv_(const Vector &a, const Vector &b)
elementwise division, but 0/0 = 0, not inf
Definition: Vector.cpp:197
double norm_2(const Vector &v)
Calculates L2 norm for a vector modeled after boost.ublas for compatibility.
Definition: Vector.cpp:214
bool greaterThanOrEqual(const Vector &vec1, const Vector &vec2)
Greater than or equal to operation returns true if all elements in v1 are greater than corresponding ...
Definition: Vector.cpp:86
void scal(double alpha, Vector &x)
BLAS Level 1 scal: x <- alpha*x.
Definition: Vector.h:275
bool assert_equal(const Matrix &expected, const Matrix &actual, double tol)
equals with an tolerance, prints out message if unequal
Definition: Matrix.cpp:60
Matrix ones(size_t m, size_t n)
Creates an ones matrix, with matlab-like syntax.
Definition: Matrix.cpp:45
Vector basis(size_t n, size_t i)
Create basis vector of dimension n, with one in spot i.
Definition: Vector.h:68
bool equal(const T &obj1, const T &obj2, double tol)
Call equal on the object.
Definition: Testable.h:75
Vector emul(const Vector &a, const Vector &b)
elementwise multiplication
Definition: Vector.cpp:185
Vector delta(size_t n, size_t i, double value)
Create basis vector of dimension n, with a constant in spot i.
Definition: Vector.cpp:53
Vector repeat(size_t n, double value)
Create vector initialized to a constant value.
Definition: Vector.cpp:48
bool equal_with_abs_tol(const Eigen::DenseBase< MATRIX > &A, const Eigen::DenseBase< MATRIX > &B, double tol=1e-9)
equals with an tolerance
Definition: Matrix.h:84