Added a simple scaling function for VectorConfigs
parent
714edb57f0
commit
acfe742c29
|
@ -26,6 +26,16 @@ void check_size(const string& key, const Vector & vj, const Vector & dj) {
|
|||
}
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
VectorConfig VectorConfig::scale(double gain) {
|
||||
VectorConfig scaled;
|
||||
string key; Vector val;
|
||||
FOREACH_PAIR(key, val, values) {
|
||||
scaled.insert(key, gain*val);
|
||||
}
|
||||
return scaled;
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
VectorConfig VectorConfig::exmap(const VectorConfig & delta) const
|
||||
{
|
||||
|
|
|
@ -52,6 +52,9 @@ namespace gtsam {
|
|||
* For VectorConfig, this is just addition.
|
||||
*/
|
||||
VectorConfig exmap(const VectorConfig & delta) const;
|
||||
|
||||
/** Scales the configuration by a gain */
|
||||
VectorConfig scale(double gain);
|
||||
|
||||
const_iterator begin() const {return values.begin();}
|
||||
const_iterator end() const {return values.end();}
|
||||
|
|
|
@ -88,6 +88,21 @@ TEST( VectorConfig, plus)
|
|||
CHECK(actual.equals(expected));
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
TEST( VectorConfig, scale) {
|
||||
VectorConfig cfg;
|
||||
cfg.insert("x", Vector_(2, 1.0, 2.0));
|
||||
cfg.insert("y", Vector_(2,-1.0,-2.0));
|
||||
|
||||
VectorConfig actual = cfg.scale(2.0);
|
||||
|
||||
VectorConfig expected;
|
||||
expected.insert("x", Vector_(2, 2.0, 4.0));
|
||||
expected.insert("y", Vector_(2,-2.0,-4.0));
|
||||
|
||||
CHECK(assert_equal(actual, expected));
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
#ifdef HAVE_BOOST_SERIALIZATION
|
||||
TEST( VectorConfig, serialize)
|
||||
|
|
Loading…
Reference in New Issue