Concatination over write issue

12 views (last 30 days)
I have code that pulls files successfully except once the first loop is completed fnm is overwritten and the previous files contents disappear. I need to add code that allows each loop to store the file contents(a Matrix). Once the files are saved and the for loop is complete dependent of the size(CatRow)I will concatenate the matrixes together.
%
for ii= 1: CatRow
[num,txt,data] = xlsread(stateTable{ii,1})
fnm = sprintf('file_%d.mat',ii);
save(fnm,'data');
horzcat(fnm's into one matrix)
end

Accepted Answer

Walter Roberson
Walter Roberson on 10 Jan 2018
Edited: Walter Roberson on 10 Jan 2018
all_data = cell(CatRow,1);
for ii= 1: CatRow
[num,txt,data] = xlsread(stateTable{ii,1})
fnm = sprintf('file_%d.mat',ii);
save(fnm,'data');
all_data{ii} = data;
end
big_data = horzcat(all_data{:});
I have to ask whether you really want to horzcat() them together. If they are the same size, more common would be to
big_data = cat(3, all_data{:});
which would concatenate them on the third dimension.
  2 Comments
Tessa Aus
Tessa Aus on 10 Jan 2018
Edited: Tessa Aus on 10 Jan 2018
It looks like it worked but it is now a 2x1 cell with each matrix inside each cell? How do I pull the data out of the cells?
matrix has I am not concatenating the more common way because I must do the same for all columns in the future as the user can specify and create any number of column and row matrix sizes to break down one large one.
Walter Roberson
Walter Roberson on 10 Jan 2018
I had some typing mistakes in what I posted; I have corrected them.
To get a 2 x 1 cell you must have used vertcat() or cat(1) instead of horzcat()

Sign in to comment.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!