how to concatenate Vectors in Eigen?
Asked Answered
D

1

16

I have two vectorXd in my program and I like to concatenate them into one vector, so that the second one's values goes after the first one, I found this for matrix but it doesn't seem to work on Vectors:

Eigen how to concatenate matrix along a specific dimension?

Dennard answered 5/9, 2014 at 17:47 Comment(0)
U
19

Like so, assuming you have vec1 and vec2 already:

VectorXd vec_joined(vec1.size() + vec2.size());
vec_joined << vec1, vec2;

(Note that the vector types are simply typedefs of matrix types constrained to have only one column.)

Further reading: Advanced initialization

Uella answered 5/9, 2014 at 17:50 Comment(2)
Shouldn't the first line above be VectorXd vec_joined( vec1.rows() + vec2.rows() );? Without first initializing the vector vec_joined it will spit assertion failures ...Escalade
Would this syntax work with more than two vectors? For example, provided proper initialisation has been done before hand: vec_joined << vec1, vec2, vec3;Fillip

© 2022 - 2024 — McMap. All rights reserved.