GTSAM
4.0.2
C++ library for smoothing and mapping (SAM)
|
#include <VectorValues.h>
Public Types | |
typedef Values::iterator | iterator |
Iterator over vector values. | |
typedef Values::const_iterator | const_iterator |
Const iterator over vector values. | |
typedef std::shared_ptr< This > | shared_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. | |
Public Member Functions | |
Advanced Interface | |
Vector | vector () const |
template<typename CONTAINER > | |
Vector | vector (const CONTAINER &keys) const |
Vector | vector (const Dims &dims) const |
void | swap (VectorValues &other) |
bool | hasSameStructure (const VectorValues other) const |
Wrapper support | |
std::string | html (const KeyFormatter &keyFormatter=DefaultKeyFormatter) const |
Output as a html table. More... | |
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. | |
Standard Constructors | |
VectorValues () | |
Default constructor creates an empty VectorValues. | |
VectorValues (std::initializer_list< std::pair< Key, Vector >> init) | |
Construct from initializer list. | |
VectorValues (const VectorValues &first, const VectorValues &second) | |
template<class CONTAINER > | |
VectorValues (const CONTAINER &c) | |
VectorValues (const VectorValues &c) | |
template<typename ITERATOR > | |
VectorValues (ITERATOR first, ITERATOR last) | |
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) |
Standard Interface | |
size_t | size () const |
size_t | dim (Key j) const |
bool | exists (Key j) const |
Vector & | at (Key j) |
const Vector & | at (Key j) const |
Vector & | operator[] (Key j) |
const Vector & | operator[] (Key j) const |
VectorValues & | update (const VectorValues &values) |
iterator | insert (const std::pair< Key, Vector > &key_value) |
template<class... Args> | |
std::pair< VectorValues::iterator, bool > | emplace (Key j, Args &&... args) |
iterator | insert (Key j, const Vector &value) |
VectorValues & | insert (const VectorValues &values) |
std::pair< iterator, bool > | tryInsert (Key j, const Vector &value) |
void | insert_or_assign (Key j, const Vector &value) |
void | erase (Key var) |
void | setZero () |
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) |
const_iterator | find (Key j) const |
void | print (const std::string &str="VectorValues", const KeyFormatter &formatter=DefaultKeyFormatter) const |
bool | equals (const VectorValues &x, double tol=1e-9) const |
GTSAM_EXPORT friend std::ostream & | operator<< (std::ostream &, const VectorValues &) |
overload operator << to print to stringstream | |
Linear algebra operations | |
double | dot (const VectorValues &v) const |
double | norm () const |
double | squaredNorm () const |
VectorValues | operator+ (const VectorValues &c) const |
VectorValues | add (const VectorValues &c) const |
VectorValues & | operator+= (const VectorValues &c) |
VectorValues & | addInPlace (const VectorValues &c) |
VectorValues & | addInPlace_ (const VectorValues &c) |
VectorValues | operator- (const VectorValues &c) const |
VectorValues | subtract (const VectorValues &c) const |
VectorValues | scale (const double a) const |
VectorValues & | operator*= (double alpha) |
VectorValues & | scaleInPlace (double alpha) |
GTSAM_EXPORT VectorValues | operator* (const double a, const VectorValues &v) |
VectorValues 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:
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.
gtsam::VectorValues::VectorValues | ( | const VectorValues & | first, |
const VectorValues & | second | ||
) |
Merge two VectorValues into one, this is more efficient than inserting elements one by one.
|
inlineexplicit |
Create from another container holding pair<Key,Vector>.
|
inline |
Implicit copy constructor to specialize the explicit constructor from any container.
|
inline |
Create from a pair of iterators over pair<Key,Vector>.
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).
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).
VectorValues& gtsam::VectorValues::addInPlace_ | ( | const VectorValues & | c | ) |
Element-wise addition in-place, but allows for empty slots in *this. Slower
|
inline |
Read/write access to the vector value with key j
, throws std::out_of_range if j
does not exist, identical to operator[](Key).
|
inline |
Access the vector value with key j
(const version), throws std::out_of_range if j
does not exist, identical to operator[](Key).
|
inline |
Return the dimension of variable j
.
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).
|
inline |
Emplace a vector value
with key j
. Throws an invalid_argument exception if the key j
is already used.
value | The vector to be inserted. |
j | The index with which the value will be associated. |
bool gtsam::VectorValues::equals | ( | const VectorValues & | x, |
double | tol = 1e-9 |
||
) | const |
equals required by Testable for unit testing
|
inline |
Erase the vector with the given key, or throw std::out_of_range if it does not exist
|
inline |
Check whether a variable with key j
exists.
Return the iterator corresponding to the requested key, or end() if no variable is present with this key.
|
inline |
Return the iterator corresponding to the requested key, or end() if no variable is present with this key.
bool gtsam::VectorValues::hasSameStructure | ( | const VectorValues | other | ) | const |
Check if this VectorValues has the same structure (keys and dimensions) as another
std::string gtsam::VectorValues::html | ( | const KeyFormatter & | keyFormatter = DefaultKeyFormatter | ) | const |
Output as a html table.
keyFormatter | function that formats keys. |
Insert a vector value
with key j
. Throws an invalid_argument exception if the key j
is already used.
value | The vector to be inserted. |
j | The index with which the value will be associated. |
Insert a vector value
with key j
. Throws an invalid_argument exception if the key j
is already used.
value | The vector to be inserted. |
j | The index with which the value will be associated. |
VectorValues& 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.
|
inline |
insert_or_assign that mimics the STL map insert_or_assign - if the value already exists, the map is updated, otherwise a new value is inserted at j.
double gtsam::VectorValues::norm | ( | ) | const |
Vector L2 norm
VectorValues& gtsam::VectorValues::operator*= | ( | double | alpha | ) |
Element-wise scaling by a constant in-place.
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).
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).
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).
|
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).
|
inline |
Access the vector value with key j
(const version), throws std::out_of_range if j
does not exist, identical to at(Key).
void gtsam::VectorValues::print | ( | const std::string & | str = "VectorValues" , |
const KeyFormatter & | formatter = DefaultKeyFormatter |
||
) | const |
print required by Testable for unit testing
VectorValues gtsam::VectorValues::scale | ( | const double | a | ) | const |
Element-wise scaling by a constant.
VectorValues& gtsam::VectorValues::scaleInPlace | ( | double | alpha | ) |
Element-wise scaling by a constant in-place.
void gtsam::VectorValues::setZero | ( | ) |
Set all values to zero vectors.
|
inline |
Number of variables stored.
double gtsam::VectorValues::squaredNorm | ( | ) | const |
Squared vector L2 norm
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).
void gtsam::VectorValues::swap | ( | VectorValues & | other | ) |
Swap the data in this VectorValues with another.
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.
VectorValues& 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 gtsam::VectorValues::vector | ( | ) | const |
Retrieve the entire solution as a single vector
|
inline |
Access a vector that is a subset of relevant keys.
Vector gtsam::VectorValues::vector | ( | const Dims & | dims | ) | const |
Access a vector that is a subset of relevant keys, dims version.
|
static |
Create a VectorValues with the same structure as other
, but filled with zeros.
|
friend |
Element-wise scaling by a constant.