diff --git a/.cproject b/.cproject index 959372067..762d3102e 100644 --- a/.cproject +++ b/.cproject @@ -322,14 +322,6 @@ true true - - make - -j2 - testGaussianFactor.run - true - true - true - make -j2 @@ -356,6 +348,7 @@ make + tests/testBayesTree.run true false @@ -363,6 +356,7 @@ make + testBinaryBayesNet.run true false @@ -410,6 +404,7 @@ make + testSymbolicBayesNet.run true false @@ -417,6 +412,7 @@ make + tests/testSymbolicFactor.run true false @@ -424,6 +420,7 @@ make + testSymbolicFactorGraph.run true false @@ -439,11 +436,20 @@ make + tests/testBayesTree true false true + + make + -j2 + testGaussianFactor.run + true + true + true + make -j2 @@ -478,7 +484,6 @@ make - testGraph.run true false @@ -574,7 +579,6 @@ make - testInference.run true false @@ -582,7 +586,6 @@ make - testGaussianBayesNet.run true false @@ -590,7 +593,6 @@ make - testGaussianFactor.run true false @@ -598,7 +600,6 @@ make - testJunctionTree.run true false @@ -606,7 +607,6 @@ make - testSymbolicBayesNet.run true false @@ -614,7 +614,6 @@ make - testSymbolicFactorGraph.run true false @@ -958,6 +957,7 @@ make + testErrors.run true false @@ -1317,7 +1317,6 @@ make - testSimulated2DOriented.run true false @@ -1357,7 +1356,6 @@ make - testSimulated2D.run true false @@ -1365,7 +1363,6 @@ make - testSimulated3D.run true false @@ -1379,6 +1376,14 @@ true true + + make + -j2 + tests/testVectorValues.run + true + true + true + make -j2 @@ -1421,7 +1426,6 @@ make - tests/testGaussianISAM2 true false @@ -1443,6 +1447,86 @@ true true + + make + -j2 + install + true + true + true + + + make + -j2 + clean + true + true + true + + + make + -j2 + check + true + true + true + + + make + -j2 + all + true + true + true + + + make + -j2 + dist + true + true + true + + + make + -j2 + inference/tests/testEliminationTree + true + true + true + + + make + -j2 + slam/tests/testGaussianISAM2 + true + true + true + + + make + -j2 + inference/tests/testVariableIndex + true + true + true + + + make + -j2 + inference/tests/testJunctionTree + true + true + true + + + make + -j2 + linear/tests/testGaussianJunctionTree + true + true + true + make -j2 @@ -1539,94 +1623,6 @@ true true - - make - -j2 - install - true - true - true - - - make - -j2 - clean - true - true - true - - - make - -j2 - check - true - true - true - - - make - -j2 - all - true - true - true - - - make - -j2 - dist - true - true - true - - - make - -j2 - inference/tests/testEliminationTree - true - true - true - - - make - -j2 - slam/tests/testGaussianISAM2 - true - true - true - - - make - -j2 - inference/tests/testVariableIndex - true - true - true - - - make - -j2 - inference/tests/testJunctionTree - true - true - true - - - make - -j2 - linear/tests/testGaussianJunctionTree - true - true - true - - - make - -j2 - check - true - true - true - make -j2 @@ -1659,6 +1655,14 @@ true true + + make + -j2 + check + true + true + true + @@ -1981,14 +1985,6 @@ true true - - make - -j2 - testGaussianFactor.run - true - true - true - make -j2 @@ -2015,6 +2011,7 @@ make + tests/testBayesTree.run true false @@ -2022,6 +2019,7 @@ make + testBinaryBayesNet.run true false @@ -2069,6 +2067,7 @@ make + testSymbolicBayesNet.run true false @@ -2076,6 +2075,7 @@ make + tests/testSymbolicFactor.run true false @@ -2083,6 +2083,7 @@ make + testSymbolicFactorGraph.run true false @@ -2098,11 +2099,20 @@ make + tests/testBayesTree true false true + + make + -j2 + testGaussianFactor.run + true + true + true + make -j2 @@ -2137,7 +2147,6 @@ make - testGraph.run true false @@ -2233,7 +2242,6 @@ make - testInference.run true false @@ -2241,7 +2249,6 @@ make - testGaussianBayesNet.run true false @@ -2249,7 +2256,6 @@ make - testGaussianFactor.run true false @@ -2257,7 +2263,6 @@ make - testJunctionTree.run true false @@ -2265,7 +2270,6 @@ make - testSymbolicBayesNet.run true false @@ -2273,7 +2277,6 @@ make - testSymbolicFactorGraph.run true false @@ -2617,6 +2620,7 @@ make + testErrors.run true false @@ -2976,7 +2980,6 @@ make - testSimulated2DOriented.run true false @@ -3016,7 +3019,6 @@ make - testSimulated2D.run true false @@ -3024,7 +3026,6 @@ make - testSimulated3D.run true false @@ -3038,6 +3039,14 @@ true true + + make + -j2 + tests/testVectorValues.run + true + true + true + make -j2 @@ -3080,7 +3089,6 @@ make - tests/testGaussianISAM2 true false @@ -3102,6 +3110,86 @@ true true + + make + -j2 + install + true + true + true + + + make + -j2 + clean + true + true + true + + + make + -j2 + check + true + true + true + + + make + -j2 + all + true + true + true + + + make + -j2 + dist + true + true + true + + + make + -j2 + inference/tests/testEliminationTree + true + true + true + + + make + -j2 + slam/tests/testGaussianISAM2 + true + true + true + + + make + -j2 + inference/tests/testVariableIndex + true + true + true + + + make + -j2 + inference/tests/testJunctionTree + true + true + true + + + make + -j2 + linear/tests/testGaussianJunctionTree + true + true + true + make -j2 @@ -3198,94 +3286,6 @@ true true - - make - -j2 - install - true - true - true - - - make - -j2 - clean - true - true - true - - - make - -j2 - check - true - true - true - - - make - -j2 - all - true - true - true - - - make - -j2 - dist - true - true - true - - - make - -j2 - inference/tests/testEliminationTree - true - true - true - - - make - -j2 - slam/tests/testGaussianISAM2 - true - true - true - - - make - -j2 - inference/tests/testVariableIndex - true - true - true - - - make - -j2 - inference/tests/testJunctionTree - true - true - true - - - make - -j2 - linear/tests/testGaussianJunctionTree - true - true - true - - - make - -j2 - check - true - true - true - make -j2 @@ -3318,6 +3318,14 @@ true true + + make + -j2 + check + true + true + true + diff --git a/gtsam/linear/VectorValues.h b/gtsam/linear/VectorValues.h index 90aeef935..aadb6cf31 100644 --- a/gtsam/linear/VectorValues.h +++ b/gtsam/linear/VectorValues.h @@ -33,7 +33,7 @@ namespace gtsam { class VectorValues : public Testable { protected: Vector values_; - std::vector varStarts_; + std::vector varStarts_; // start at 0 with size nVars + 1 public: template class _impl_iterator; // Forward declaration of iterator implementation @@ -66,6 +66,9 @@ public: */ VectorValues(const std::vector& dimensions, const Vector& values); + /** Construct forom the variable dimensions in varaible order and a double array that contains actual values */ + VectorValues(const std::vector& dimensions, const double* values); + /** Named constructor to create a VectorValues that matches the structure of * the specified VectorValues, but do not initialize the new values. */ @@ -259,6 +262,17 @@ inline VectorValues::VectorValues(const std::vector& dimensions, const V assert(varStarts_.back() == values.size()); } +inline VectorValues::VectorValues(const std::vector& dimensions, const double* values) : + varStarts_(dimensions.size()+1) { + varStarts_[0] = 0; + size_t varStart = 0; + Index var = 0; + BOOST_FOREACH(size_t dim, dimensions) { + varStarts_[++var] = (varStart += dim); + } + values_ = Vector_(varStart, values); +} + inline VectorValues VectorValues::SameStructure(const VectorValues& otherValues) { VectorValues ret; ret.varStarts_ = otherValues.varStarts_; diff --git a/gtsam/linear/tests/testVectorValues.cpp b/gtsam/linear/tests/testVectorValues.cpp index 950fcd962..cdc74af61 100644 --- a/gtsam/linear/tests/testVectorValues.cpp +++ b/gtsam/linear/tests/testVectorValues.cpp @@ -26,6 +26,21 @@ using namespace gtsam; using namespace std; +/* ************************************************************************* */ +TEST(VectorValues, constructor) { + vector dims; + dims.push_back(1); + dims.push_back(2); + dims.push_back(2); + double v[] = {1., 2., 3., 4., 5.}; + + VectorValues actual(dims, v); + LONGS_EQUAL(3, actual.size()); + DOUBLES_EQUAL(1., *actual.ptr(0), 1e-15); + DOUBLES_EQUAL(2., *actual.ptr(1), 1e-15); + DOUBLES_EQUAL(4., *actual.ptr(2), 1e-15); +} + /* ************************************************************************* */ TEST(VectorValues, standard) { Vector v1 = Vector_(3, 1.0,2.0,3.0);