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