MATLAB Answers

ARN
0

Keeping record of Number of concatenated files

Asked by ARN
on 17 Apr 2019
Latest activity Edited by Stephen Cobeldick on 2 May 2019 at 11:45
I am vertically concatinating some .mat files and i want to keep the track record of how many files i have concatinated;
Like putting 1 infront of values of file 1 (13780x1) and 2 infront of values of 2 (13840x1). Is there a way to do that?
Attached is the pic of random values; 3 files (15x1) concatinated so i want the left or the right answer.
2019-04-17_14h42_57.png

  4 Comments

Show 1 older comment
i did it manually in excel? Need a method to do that in MATLAB.
Stephen Cobeldick's solution does what you're asking.
"I am vertically concatinating some .mat files ..."
I doubt that: .mat files are a binary file format, it does not make much sense to concatenate them. You can certainly import their contents into MATLAB and concatenate those.

Sign in to comment.

1 Answer

Answer by Stephen Cobeldick on 17 Apr 2019
Edited by Stephen Cobeldick on 17 Apr 2019
 Accepted Answer

Inside your loop:
N = ... the total number of files.
C = cell(1,N)
for k = 1:N
M = ... import the matrix here.
M(:,end+1) = k;
C{k} = M;
end
Z = vertcat(C{:})

  9 Comments

+1 for the 'neat' structure option. Nice and tidy.
Hi,
Thanks for the answer. Sorry for asking late, but this method is good for concatination of one matrix while i have got 30. That is why, i was creating the structure afterwards. Any suggestions on that...:)
" Any suggestions on that..."
Sure: using the code from my earlier comment, simply call fieldnames on T and then add a nested loop over those fields.
Then inside the nested loop add the extra column. After the nested loop allocate T to C.
Or, if you are feeling particularly adventurous, write something using structfun.

Sign in to comment.