# Combining consecutive vectors into a matrix

5 views (last 30 days)
Lars Bouten on 2 Oct 2019
Edited: Guillaume on 2 Oct 2019
I am trying to combine 108 consecutive vectors (100x1 double) into a matrix in such a way that I will get a 100x108 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 100x108 matrix, I want to seperate this matrix into 100 rows, how can I do this easily?
Lars Bouten on 2 Oct 2019
I imported them from a .xlsx file via the Matlab import data wizard for Excel sheets.

the cyclist on 2 Oct 2019
Edited: the cyclist on 2 Oct 2019
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!
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.

Guillaume on 2 Oct 2019
Edited: Guillaume on 2 Oct 2019
You must have changed the options of the wizard to specifically create variables from the columns of the excel spreadsheet. Don't do that. Import the data as a table (best), or cell array and your problem will go away.
Or better, don't use the import wizard. Use readtable, readmatrix (if on a version new enough) or xlsread.
Obtaining your M matrix may be as simple as :
If not, an example file would help us understand better.

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by