gtsam  4.0.0
gtsam
gtsam::VectorValues Class Reference

Detailed Description

This class represents a collection of vector-valued variables associated each with a unique integer index.

It is typically used to store the variables of a GaussianFactorGraph. Optimizing a GaussianFactorGraph or GaussianBayesNet returns this class.

For basic usage, such as receiving a linear solution from gtsam solving functions, or creating this class in unit tests and examples where speed is not important, you can use a simple interface:

Example:

VectorValues values;
values.emplace(3, Vector3(1.0, 2.0, 3.0));
values.emplace(4, Vector2(4.0, 5.0));
values.emplace(0, (Vector(4) << 6.0, 7.0, 8.0, 9.0).finished());
// Prints [ 3.0 4.0 ]
gtsam::print(values[1]);
// Prints [ 8.0 9.0 ]
values[1] = Vector2(8.0, 9.0);
gtsam::print(values[1]);

Advanced Interface and Performance Information

Access is through the variable Key j, and returns a SubVector, which is a view on the underlying data structure.

This class is additionally used in gradient descent and dog leg to store the gradient.

Standard Constructors

 VectorValues ()
 Default constructor creates an empty VectorValues.
 
 VectorValues (const VectorValues &first, const VectorValues &second)
 Merge two VectorValues into one, this is more efficient than inserting elements one by one. More...
 
template<class CONTAINER >
 VectorValues (const CONTAINER &c)
 Create from another container holding pair<Key,Vector>. More...
 
 VectorValues (const VectorValues &c)
 Implicit copy constructor to specialize the explicit constructor from any container. More...
 
template<typename ITERATOR >
 VectorValues (ITERATOR first, ITERATOR last)
 Create from a pair of iterators over pair<Key,Vector>. More...
 
 VectorValues (const Vector &c, const Dims &dims)
 Constructor from Vector, with Dims.
 
 VectorValues (const Vector &c, const Scatter &scatter)
 Constructor from Vector, with Scatter.
 
static VectorValues Zero (const VectorValues &other)
 Create a VectorValues with the same structure as other, but filled with zeros. More...
 

Standard Interface

size_t size () const
 Number of variables stored. More...
 
size_t dim (Key j) const
 Return the dimension of variable j. More...
 
bool exists (Key j) const
 Check whether a variable with key j exists. More...
 
Vector & at (Key j)
 Read/write access to the vector value with key j, throws std::out_of_range if j does not exist, identical to operator[](Key).
 
const Vector & at (Key j) const
 Access the vector value with key j (const version), throws std::out_of_range if j does not exist, identical to operator[](Key).
 
Vector & operator[] (Key j)
 Read/write access to the vector value with key j, throws std::out_of_range if j does not exist, identical to at(Key). More...
 
const Vector & operator[] (Key j) const
 Access the vector value with key j (const version), throws std::out_of_range if j does not exist, identical to at(Key). More...
 
void update (const VectorValues &values)
 For all key/value pairs in values, replace values with corresponding keys in this class with those in values. More...
 
iterator insert (const std::pair< Key, Vector > &key_value)
 Insert a vector value with key j. More...
 
iterator emplace (Key j, const Vector &value)
 Emplace a vector value with key j. More...
 
iterator insert (Key j, const Vector &value)
 Insert a vector value with key j. More...
 
void insert (const VectorValues &values)
 Insert all values from values. More...
 
std::pair< iterator, bool > tryInsert (Key j, const Vector &value)
 insert that mimics the STL map insert - if the value already exists, the map is not modified and an iterator to the existing value is returned, along with 'false'. More...
 
void erase (Key var)
 Erase the vector with the given key, or throw std::out_of_range if it does not exist.
 
void setZero ()
 Set all values to zero vectors. More...
 
iterator begin ()
 Iterator over variables.
 
const_iterator begin () const
 Iterator over variables.
 
iterator end ()
 Iterator over variables.
 
const_iterator end () const
 Iterator over variables.
 
iterator find (Key j)
 Return the iterator corresponding to the requested key, or end() if no variable is present with this key.
 
const_iterator find (Key j) const
 Return the iterator corresponding to the requested key, or end() if no variable is present with this key.
 
void print (const std::string &str="VectorValues: ", const KeyFormatter &formatter=DefaultKeyFormatter) const
 print required by Testable for unit testing
 
bool equals (const VectorValues &x, double tol=1e-9) const
 equals required by Testable for unit testing
 

Advanced Interface

Vector vector () const
 Retrieve the entire solution as a single vector.
 
template<typename CONTAINER >
Vector vector (const CONTAINER &keys) const
 Access a vector that is a subset of relevant keys. More...
 
Vector vector (const Dims &dims) const
 Access a vector that is a subset of relevant keys, dims version. More...
 
void swap (VectorValues &other)
 Swap the data in this VectorValues with another. More...
 
bool hasSameStructure (const VectorValues other) const
 Check if this VectorValues has the same structure (keys and dimensions) as another.
 

Linear algebra operations

GTSAM_EXPORT VectorValues operator * (const double a, const VectorValues &v)
 Element-wise scaling by a constant. More...
 
double dot (const VectorValues &v) const
 Dot product with another VectorValues, interpreting both as vectors of their concatenated values. More...
 
double norm () const
 Vector L2 norm.
 
double squaredNorm () const
 Squared vector L2 norm.
 
VectorValues operator+ (const VectorValues &c) const
 Element-wise addition, synonym for add(). More...
 
VectorValues add (const VectorValues &c) const
 Element-wise addition, synonym for operator+(). More...
 
VectorValuesoperator+= (const VectorValues &c)
 Element-wise addition in-place, synonym for operator+=(). More...
 
VectorValuesaddInPlace (const VectorValues &c)
 Element-wise addition in-place, synonym for operator+=(). More...
 
VectorValuesaddInPlace_ (const VectorValues &c)
 Element-wise addition in-place, but allows for empty slots in *this. More...
 
VectorValues operator- (const VectorValues &c) const
 Element-wise subtraction, synonym for subtract(). More...
 
VectorValues subtract (const VectorValues &c) const
 Element-wise subtraction, synonym for operator-(). More...
 
VectorValues scale (const double a) const
 Element-wise scaling by a constant. More...
 
VectorValuesoperator *= (double alpha)
 Element-wise scaling by a constant in-place. More...
 
VectorValuesscaleInPlace (double alpha)
 Element-wise scaling by a constant in-place. More...
 

Public Types

typedef Values::iterator iterator
 Iterator over vector values.
 
typedef Values::const_iterator const_iterator
 Const iterator over vector values.
 
typedef boost::shared_ptr< Thisshared_ptr
 shared_ptr to this class
 
typedef Values::value_type value_type
 Typedef to pair<Key, Vector>
 
typedef value_type KeyValuePair
 Typedef to pair<Key, Vector>
 
typedef std::map< Key, size_t > Dims
 Keyed vector dimensions.
 

Protected Types

typedef VectorValues This
 
typedef ConcurrentMap< Key, Vector > Values
 Collection of Vectors making up a VectorValues.
 

Protected Attributes

Values values_
 Vectors making up this VectorValues.
 

Friends

class boost::serialization::access
 Serialization function.
 

Constructor & Destructor Documentation

◆ VectorValues() [1/4]

gtsam::VectorValues::VectorValues ( const VectorValues first,
const VectorValues second 
)

Merge two VectorValues into one, this is more efficient than inserting elements one by one.

◆ VectorValues() [2/4]

template<class CONTAINER >
gtsam::VectorValues::VectorValues ( const CONTAINER &  c)
inlineexplicit

Create from another container holding pair<Key,Vector>.

◆ VectorValues() [3/4]

gtsam::VectorValues::VectorValues ( const VectorValues c)
inline

Implicit copy constructor to specialize the explicit constructor from any container.

◆ VectorValues() [4/4]

template<typename ITERATOR >
gtsam::VectorValues::VectorValues ( ITERATOR  first,
ITERATOR  last 
)
inline

Create from a pair of iterators over pair<Key,Vector>.

Member Function Documentation

◆ add()

VectorValues gtsam::VectorValues::add ( const VectorValues c) const

Element-wise addition, synonym for operator+().

Both VectorValues must have the same structure (checked when NDEBUG is not defined).

◆ addInPlace()

VectorValues & gtsam::VectorValues::addInPlace ( const VectorValues c)

Element-wise addition in-place, synonym for operator+=().

Both VectorValues must have the same structure (checked when NDEBUG is not defined).

◆ addInPlace_()

VectorValues & gtsam::VectorValues::addInPlace_ ( const VectorValues c)

Element-wise addition in-place, but allows for empty slots in *this.

Slower

◆ dim()

size_t gtsam::VectorValues::dim ( Key  j) const
inline

Return the dimension of variable j.

◆ dot()

double gtsam::VectorValues::dot ( const VectorValues v) const

Dot product with another VectorValues, interpreting both as vectors of their concatenated values.

Both VectorValues must have the same structure (checked when NDEBUG is not defined).

◆ emplace()

VectorValues::iterator gtsam::VectorValues::emplace ( Key  j,
const Vector &  value 
)

Emplace a vector value with key j.

Throws an invalid_argument exception if the key j is already used.

Parameters
valueThe vector to be inserted.
jThe index with which the value will be associated.

◆ exists()

bool gtsam::VectorValues::exists ( Key  j) const
inline

Check whether a variable with key j exists.

◆ insert() [1/3]

VectorValues::iterator gtsam::VectorValues::insert ( const std::pair< Key, Vector > &  key_value)

Insert a vector value with key j.

Throws an invalid_argument exception if the key j is already used.

Parameters
valueThe vector to be inserted.
jThe index with which the value will be associated.

◆ insert() [2/3]

iterator gtsam::VectorValues::insert ( Key  j,
const Vector &  value 
)
inline

Insert a vector value with key j.

Throws an invalid_argument exception if the key j is already used.

Parameters
valueThe vector to be inserted.
jThe index with which the value will be associated.

◆ insert() [3/3]

void gtsam::VectorValues::insert ( const VectorValues values)

Insert all values from values.

Throws an invalid_argument exception if any keys to be inserted are already used.

◆ operator *=()

VectorValues & gtsam::VectorValues::operator *= ( double  alpha)

Element-wise scaling by a constant in-place.

◆ operator+()

VectorValues gtsam::VectorValues::operator+ ( const VectorValues c) const

Element-wise addition, synonym for add().

Both VectorValues must have the same structure (checked when NDEBUG is not defined).

◆ operator+=()

VectorValues & gtsam::VectorValues::operator+= ( const VectorValues c)

Element-wise addition in-place, synonym for operator+=().

Both VectorValues must have the same structure (checked when NDEBUG is not defined).

◆ operator-()

VectorValues gtsam::VectorValues::operator- ( const VectorValues c) const

Element-wise subtraction, synonym for subtract().

Both VectorValues must have the same structure (checked when NDEBUG is not defined).

◆ operator[]() [1/2]

Vector& gtsam::VectorValues::operator[] ( Key  j)
inline

Read/write access to the vector value with key j, throws std::out_of_range if j does not exist, identical to at(Key).

◆ operator[]() [2/2]

const Vector& gtsam::VectorValues::operator[] ( Key  j) const
inline

Access the vector value with key j (const version), throws std::out_of_range if j does not exist, identical to at(Key).

◆ scale()

VectorValues gtsam::VectorValues::scale ( const double  a) const

Element-wise scaling by a constant.

◆ scaleInPlace()

VectorValues & gtsam::VectorValues::scaleInPlace ( double  alpha)

Element-wise scaling by a constant in-place.

◆ setZero()

void gtsam::VectorValues::setZero ( )

Set all values to zero vectors.

◆ size()

size_t gtsam::VectorValues::size ( ) const
inline

Number of variables stored.

◆ subtract()

VectorValues gtsam::VectorValues::subtract ( const VectorValues c) const

Element-wise subtraction, synonym for operator-().

Both VectorValues must have the same structure (checked when NDEBUG is not defined).

◆ swap()

void gtsam::VectorValues::swap ( VectorValues other)

Swap the data in this VectorValues with another.

◆ tryInsert()

std::pair<iterator, bool> gtsam::VectorValues::tryInsert ( Key  j,
const Vector &  value 
)
inline

insert that mimics the STL map insert - if the value already exists, the map is not modified and an iterator to the existing value is returned, along with 'false'.

If the value did not exist, it is inserted and an iterator pointing to the new element, along with 'true', is returned.

◆ update()

void gtsam::VectorValues::update ( const VectorValues values)

For all key/value pairs in values, replace values with corresponding keys in this class with those in values.

Throws std::out_of_range if any keys in values are not present in this class.

◆ vector() [1/2]

template<typename CONTAINER >
Vector gtsam::VectorValues::vector ( const CONTAINER &  keys) const
inline

Access a vector that is a subset of relevant keys.

◆ vector() [2/2]

Vector gtsam::VectorValues::vector ( const Dims dims) const

Access a vector that is a subset of relevant keys, dims version.

◆ Zero()

VectorValues gtsam::VectorValues::Zero ( const VectorValues other)
static

Create a VectorValues with the same structure as other, but filled with zeros.

Friends And Related Function Documentation

◆ operator *

GTSAM_EXPORT VectorValues operator * ( const double  a,
const VectorValues v 
)
friend

Element-wise scaling by a constant.


The documentation for this class was generated from the following files: