#include <VectorValues.h>
Public Types | |
typedef Values::const_iterator | const_iterator |
Const iterator over vector values. More... | |
typedef std::map< Key, size_t > | Dims |
Keyed vector dimensions. More... | |
typedef Values::iterator | iterator |
Iterator over vector values. More... | |
typedef value_type | KeyValuePair |
Typedef to pair<Key, Vector> More... | |
typedef std::shared_ptr< This > | shared_ptr |
shared_ptr to this class More... | |
typedef Values::value_type | value_type |
Typedef to pair<Key, Vector> More... | |
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. More... | |
Protected Member Functions | |
std::map< Key, Vector > | sorted () const |
Protected Attributes | |
Values | values_ |
Vectors making up this VectorValues. More... | |
Standard Constructors | |
VectorValues () | |
Default constructor creates an empty VectorValues. More... | |
VectorValues (std::initializer_list< std::pair< Key, Vector >> init) | |
Construct from initializer list. More... | |
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. More... | |
VectorValues (const Vector &c, const Scatter &scatter) | |
Constructor from Vector, with Scatter. More... | |
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 | 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 More... | |
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.
Definition at line 74 of file VectorValues.h.
typedef Values::const_iterator gtsam::VectorValues::const_iterator |
Const iterator over vector values.
Definition at line 85 of file VectorValues.h.
typedef std::map<Key, size_t> gtsam::VectorValues::Dims |
Keyed vector dimensions.
Definition at line 89 of file VectorValues.h.
typedef Values::iterator gtsam::VectorValues::iterator |
Iterator over vector values.
Definition at line 84 of file VectorValues.h.
Typedef to pair<Key, Vector>
Definition at line 88 of file VectorValues.h.
typedef std::shared_ptr<This> gtsam::VectorValues::shared_ptr |
shared_ptr to this class
Definition at line 86 of file VectorValues.h.
|
protected |
Definition at line 76 of file VectorValues.h.
typedef Values::value_type gtsam::VectorValues::value_type |
Typedef to pair<Key, Vector>
Definition at line 87 of file VectorValues.h.
|
protected |
Collection of Vectors making up a VectorValues.
Definition at line 77 of file VectorValues.h.
|
inline |
Default constructor creates an empty VectorValues.
Definition at line 95 of file VectorValues.h.
Construct from initializer list.
Definition at line 98 of file VectorValues.h.
VectorValues::VectorValues | ( | const VectorValues & | first, |
const VectorValues & | second | ||
) |
Merge two VectorValues into one, this is more efficient than inserting elements one by one.
Definition at line 33 of file VectorValues.cpp.
|
inlineexplicit |
Create from another container holding pair<Key,Vector>.
Definition at line 107 of file VectorValues.h.
|
inline |
Implicit copy constructor to specialize the explicit constructor from any container.
Definition at line 110 of file VectorValues.h.
|
inline |
Create from a pair of iterators over pair<Key,Vector>.
Definition at line 114 of file VectorValues.h.
Constructor from Vector, with Dims.
Definition at line 44 of file VectorValues.cpp.
Constructor from Vector, with Scatter.
Definition at line 57 of file VectorValues.cpp.
VectorValues 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).
Definition at line 289 of file VectorValues.cpp.
VectorValues & 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).
Definition at line 312 of file VectorValues.cpp.
VectorValues & VectorValues::addInPlace_ | ( | const VectorValues & | c | ) |
Element-wise addition in-place, but allows for empty slots in *this. Slower
Definition at line 318 of file VectorValues.cpp.
Read/write access to the vector value with key j
, throws std::out_of_range if j
does not exist, identical to operator[](Key).
Definition at line 142 of file VectorValues.h.
Access the vector value with key j
(const version), throws std::out_of_range if j
does not exist, identical to operator[](Key).
Definition at line 155 of file VectorValues.h.
Return the dimension of variable j
.
Definition at line 133 of file VectorValues.h.
double 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).
Definition at line 237 of file VectorValues.cpp.
|
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. |
Definition at line 188 of file VectorValues.h.
bool VectorValues::equals | ( | const VectorValues & | x, |
double | tol = 1e-9 |
||
) | const |
equals required by Testable for unit testing
Definition at line 161 of file VectorValues.cpp.
|
inline |
Erase the vector with the given key, or throw std::out_of_range if it does not exist
Definition at line 229 of file VectorValues.h.
|
inline |
Check whether a variable with key j
exists.
Definition at line 136 of file VectorValues.h.
Return the iterator corresponding to the requested key, or end() if no variable is present with this key.
Definition at line 248 of file VectorValues.h.
|
inline |
Return the iterator corresponding to the requested key, or end() if no variable is present with this key.
Definition at line 254 of file VectorValues.h.
bool VectorValues::hasSameStructure | ( | const VectorValues | other | ) | const |
Check if this VectorValues has the same structure (keys and dimensions) as another
Definition at line 228 of file VectorValues.cpp.
std::string VectorValues::html | ( | const KeyFormatter & | keyFormatter = DefaultKeyFormatter | ) | const |
Output as a html table.
keyFormatter | function that formats keys. |
Definition at line 390 of file VectorValues.cpp.
VectorValues::iterator 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.
value | The vector to be inserted. |
j | The index with which the value will be associated. |
Definition at line 90 of file VectorValues.cpp.
VectorValues & VectorValues::insert | ( | const VectorValues & | values | ) |
Insert all values from values
. Throws an invalid_argument exception if any keys to be inserted are already used.
Definition at line 120 of file VectorValues.cpp.
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. |
Definition at line 200 of file VectorValues.h.
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.
Definition at line 222 of file VectorValues.h.
double VectorValues::norm | ( | ) | const |
Vector L2 norm
Definition at line 255 of file VectorValues.cpp.
VectorValues & VectorValues::operator*= | ( | double | alpha | ) |
Element-wise scaling by a constant in-place.
Definition at line 375 of file VectorValues.cpp.
VectorValues 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).
Definition at line 269 of file VectorValues.cpp.
VectorValues & 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).
Definition at line 295 of file VectorValues.cpp.
VectorValues 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).
Definition at line 331 of file VectorValues.cpp.
Read/write access to the vector value with key j
, throws std::out_of_range if j
does not exist, identical to at(Key).
Definition at line 166 of file VectorValues.h.
Access the vector value with key j
(const version), throws std::out_of_range if j
does not exist, identical to at(Key).
Definition at line 170 of file VectorValues.h.
void VectorValues::print | ( | const std::string & | str = "VectorValues" , |
const KeyFormatter & | formatter = DefaultKeyFormatter |
||
) | const |
print required by Testable for unit testing
Definition at line 153 of file VectorValues.cpp.
VectorValues VectorValues::scale | ( | const double | a | ) | const |
Element-wise scaling by a constant.
Definition at line 369 of file VectorValues.cpp.
VectorValues & VectorValues::scaleInPlace | ( | double | alpha | ) |
Element-wise scaling by a constant in-place.
Definition at line 384 of file VectorValues.cpp.
void VectorValues::setZero | ( | ) |
Set all values to zero vectors.
Definition at line 131 of file VectorValues.cpp.
|
inline |
Number of variables stored.
Definition at line 130 of file VectorValues.h.
Sort by key (primarily for use with TBB, which uses an unordered map)
Definition at line 70 of file VectorValues.cpp.
double VectorValues::squaredNorm | ( | ) | const |
Squared vector L2 norm
Definition at line 260 of file VectorValues.cpp.
VectorValues 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).
Definition at line 351 of file VectorValues.cpp.
void VectorValues::swap | ( | VectorValues & | other | ) |
Swap the data in this VectorValues with another.
Definition at line 214 of file VectorValues.cpp.
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.
Definition at line 212 of file VectorValues.h.
VectorValues & 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.
Definition at line 100 of file VectorValues.cpp.
Vector VectorValues::vector | ( | ) | const |
Retrieve the entire solution as a single vector
Definition at line 175 of file VectorValues.cpp.
|
inline |
Access a vector that is a subset of relevant keys.
Definition at line 275 of file VectorValues.h.
Access a vector that is a subset of relevant keys, dims version.
Definition at line 198 of file VectorValues.cpp.
|
static |
Create a VectorValues with the same structure as other
, but filled with zeros.
Definition at line 77 of file VectorValues.cpp.
|
friend |
Element-wise scaling by a constant.
Definition at line 357 of file VectorValues.cpp.
|
friend |
overload operator << to print to stringstream
Definition at line 139 of file VectorValues.cpp.
|
protected |
Vectors making up this VectorValues.
Definition at line 78 of file VectorValues.h.