Concatenating 'mat' files into a single file
35 views (last 30 days)
Show older comments
Hi. I have 6 mat files with file names A,B,C,D,E,F each of size 1X36. Now I want to concatenate all this mat files(order same as above) in to new mat file that should be of size 1X216. Please help me in this regard...
Thanks,
srikanth
3 Comments
José-Luis
on 11 Feb 2013
Then you need to load them, concatenate the variables you want and save the result. You cannot simply concatenate mat files.
Answers (2)
Jan
on 11 Feb 2013
Edited: Jan
on 11 Feb 2013
The size of a MAT file is not exactly correlated to the size of the included data, because MAT files can be compressed and they have a header. Therefore it is unlikely, that joining the contents of 6 Matlab files leads to a MAT file, whose size is the sum of the single files. And concatenating the files directly will not work also.
I assume Jos is right: The size of MAT files is measured in Bytes, while an expression like "{1x36}" implies, that you are talking of a vector. Do you mean, that the contents of the MAT files are [1x36] double vectors?
FileList = {'A', 'B', 'C', 'D', 'E', 'F'};
Value = [];
for iFile = 1:numel(FileList)
Data = load([FileList{iFile}, '.mat']);
Field = struct2cell(Data);
if length(Field) ~= 1
error('Unexpected contents of [%s]', FileList{iFile});
end
Value = cat(2, Value, Field{1});
end
save('Joined.mat', 'Value');
If this does not help, please explain, what you actually want to combine.
4 Comments
Walter Roberson
on 15 Oct 2019
What do you want as the 14th column for the block that corresponds to C ?
Thorsten
on 11 Feb 2013
First load the file, assuming that each file contains a variable same as its filename, so after load A you have variable A in your workspace
load A
load B
load C
load D
load E
load F
Concatenate
X = [ A B C D E F];
Save to new mat file
save('X.mat', 'X')
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!