# Assembly of matrices using for loop

2 views (last 30 days)
Silver on 31 Aug 2018
Commented: Silver on 6 Sep 2018
I have 20 excel files containing matrix, each matrix has 49 columns (all the matrix has the same number of columns) and a variable number of lines (the number of lines is not always the same for all the matrix I have). I want to assemble all of them in one excel file , what makes a new matrix with 49 columns.This should not be addition but assembly. For exemple if I have these two matrix : A = [1 2;3 4] B = [5 6;7 8] The result I wish to have is a new matrix C while : C =
1 2
3 4
5 6
7 8
In other words it is sort of like joining the matrices but by adding each matrix to the previous one, successively from the line where the previous matrix has stopped while keeping the same number of columns (49).
Any idea how to do this? Thanks in advance
##### 2 CommentsShow 1 older commentHide 1 older comment
Silver on 1 Sep 2018
Thank you for answering.It does for this exemple, but for larger amounts of data, I need to use the For loop, and that's the problem.

James Tursa on 31 Aug 2018
Read each individual file into a cell array element, then vertically concatenate the cells all at once.
##### 2 CommentsShow 1 older commentHide 1 older comment
Stephen23 on 1 Sep 2018
Edited: Stephen23 on 1 Sep 2018
@Silver: you do not need to use any loops, as MATLAB's file importing functions are quite capable of importing the entire file by themselves. Also importing the data as character and then using str2double is most likely a misdirection: MATLAB's file importing function already import numeric data as numeric. So none of your code is very useful, or a good way to approach this task. A much better approach is to read the documentation:
"And what about "vertically concatenate the cells all at once" I dont see what that means"
Once you have all of the imported numeric data into one cell array, after the loop you can vertically concatenate the imported data into one matrix, exactly as you requested, e.g.:
mat = vertcat(C{:})

Stephen23 on 1 Sep 2018
Edited: Stephen23 on 1 Sep 2018
Following the examples in the MATLAB documentation:
N = 20;
C = cell(1,N);
for k = 1:N
F = sprintf('file%d.txt', k);
C{k} = importdata(F);
end
out = vertcat(C{:})
Or use dir, as shown in the link I gave above.
Silver on 6 Sep 2018
It really helps me ! thank you again , For sure I've accepted the answer and flagged it ^^

### Categories

Find more on Logical in Help Center and File Exchange

R2017a

### Community Treasure Hunt

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

Start Hunting!