 # Converting an array of vectors into a matrix

I’m currently using `ode_bdf_tol`, which returns an array of `T` vectors, each of size `N`, where `T` is the number of timepoints and `N` the number of state variables. My data is a sum of a subset of the states, so I would like to do something like the following:

``````data {
real x[T];
}
transformed_data {
vector[N] w = [0, 0, 0, 1, 1, ..., 1]'; // select states to sum
}
model {
vector[N] sol[T];
sol[1:T] = ode_bdf_tol(...);  // an array of vectors
to_matrix(sol[1:T]) * w   // I want to do something like this
}
``````

Conceptually, I’d like to ‘stack’ the array of vectors from `ode_bdf_tol`'s output into a `T x N` matrix, which would enable the above and other vector/matrix operations. Is this something that’s currently supported?

Thanks!

We don’t have a function built for that (yet), but any implementation would just copy each vector to a row of a matrix, so you can just write your own in pure Stan:

``````functions {
matrix arr_to_matrix(vector[] vec_arr) {
// Get matrix dimensions (row, col)
int arr_dims = dims(vec_arr);

// Declare matrix to copy vectors into
matrix[arr_dims, arr_dims] mat;

// Copy vectors into matrix and return
for(r in 1:arr_dims) {
mat[r] = vec_arr[r]';
}

return mat;
}
}
``````