MATLAB: Combining consecutive vectors into a matrix

consecutive vectorsmatrixrowsseperation

I am trying to combine 108 consecutive vectors (100×1 double) into a matrix in such a way that I will get a 100×108 matrix. The vectors are called like HH_1, HH_2, etc., so I can do it by using M=[HH_1,HH_2,…], but this is really a lot of work for 108 vectors. Therefore, I was wondering if there is a short and easy way to perform this action. After I obtain the 100×108 matrix, I want to seperate this matrix into 100 rows, how can I do this easily?

Best Answer

You should very much try to work backward and try to get these dynamically named variables into MATLAB in a different way. For example, if you are somehow reading them in from a database via a for loop, maybe write directly into a matrix from there. Or something better than dynamically named variables!
Please read this tutorial.
But, if you are really, truly stuck with these variable names ... yes, you can work with them.
I will probably forfeit all of my Answers street cred for even mentioning eval, but ...
HH_all = zeros(100,108);
for nh = 1:108
eval(sprintf('HH_all(:,%d) = HH_%d',nh,nh))
end
will write each of your variables into a column of the new variable HH_all.