new concatVectors call
parent
ac72d1cc22
commit
bf504d30db
|
@ -239,32 +239,37 @@ namespace gtsam {
|
|||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
Vector concatVectors(size_t nrVectors, ...)
|
||||
Vector concatVectors(const std::list<Vector>& vs)
|
||||
{
|
||||
int dimA = 0;
|
||||
va_list ap;
|
||||
va_start(ap, nrVectors);
|
||||
Vector* V;
|
||||
for( size_t i = 0 ; i < nrVectors ; i++)
|
||||
{
|
||||
V = va_arg(ap, Vector*);
|
||||
dimA += V->size();
|
||||
}
|
||||
va_end(ap);
|
||||
va_start(ap, nrVectors);
|
||||
Vector A(dimA);
|
||||
int dim = 0;
|
||||
BOOST_FOREACH(Vector v, vs)
|
||||
dim += v.size();
|
||||
|
||||
Vector A(dim);
|
||||
int index = 0;
|
||||
for( size_t i = 0 ; i < nrVectors ; i++)
|
||||
{
|
||||
V = va_arg(ap, Vector *);
|
||||
for(size_t d = 0; d < V->size(); d++)
|
||||
A(d+index) = (*V)(d);
|
||||
index += V->size();
|
||||
BOOST_FOREACH(Vector v, vs) {
|
||||
for(size_t d = 0; d < v.size(); d++)
|
||||
A(d+index) = v(d);
|
||||
index += v.size();
|
||||
}
|
||||
|
||||
return A;
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
Vector concatVectors(size_t nrVectors, ...)
|
||||
{
|
||||
va_list ap;
|
||||
list<Vector> vs;
|
||||
va_start(ap, nrVectors);
|
||||
for( size_t i = 0 ; i < nrVectors ; i++) {
|
||||
Vector* V = va_arg(ap, Vector*);
|
||||
vs.push_back(*V);
|
||||
}
|
||||
va_end(ap);
|
||||
return concatVectors(vs);
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
Vector rand_vector_norm(size_t dim, double mean, double sigma)
|
||||
{
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <list>
|
||||
#include <boost/numeric/ublas/vector.hpp>
|
||||
#include <boost/random/linear_congruential.hpp>
|
||||
|
||||
|
@ -167,8 +168,12 @@ std::pair<Vector, double> weightedPseudoinverse(const Vector& v, const Vector& s
|
|||
/**
|
||||
* concatenate Vectors
|
||||
*/
|
||||
Vector concatVectors(size_t nrVectors, ...);
|
||||
Vector concatVectors(const std::list<Vector>& vs);
|
||||
|
||||
/**
|
||||
* concatenate Vectors
|
||||
*/
|
||||
Vector concatVectors(size_t nrVectors, ...);
|
||||
|
||||
/**
|
||||
* random vector
|
||||
|
|
|
@ -121,9 +121,14 @@ TEST( TestVector, concatVectors)
|
|||
for(int i = 0; i < 2; i++) C(i) = A(i);
|
||||
for(int i = 0; i < 5; i++) C(i+2) = B(i);
|
||||
|
||||
Vector AB = concatVectors(2, &A, &B);
|
||||
list<Vector> vs;
|
||||
vs.push_back(A);
|
||||
vs.push_back(B);
|
||||
Vector AB1 = concatVectors(vs);
|
||||
CHECK(AB1 == C);
|
||||
|
||||
CHECK(AB == C);
|
||||
Vector AB2 = concatVectors(2, &A, &B);
|
||||
CHECK(AB2 == C);
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
|
|
Loading…
Reference in New Issue