Added a simple scaling function for VectorConfigs

release/4.3a0
Alex Cunningham 2009-11-20 05:10:55 +00:00
parent 714edb57f0
commit acfe742c29
3 changed files with 28 additions and 0 deletions

View File

@ -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
{

View File

@ -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();}

View File

@ -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)