Merging several mat files in a row order
Show older comments
Hi everyone,
I have 65 mat files with different names and each mat file is 1x1 struct, contains information as longitude, latitude, year(335x1), month(335x1) etc.
So how can i combine them as a single mat file which should have first row as a information of first mat file, second row as a information of second mat file, until 65 rows of each mat file?
I would be very pleased if you have any idea about how to do it?
Answers (1)
Jan
on 11 Jul 2021
You did not explain, how a list of the files names can be obtained. I guess, that they can be found in the same folder:
Folder = 'C:\your\folder';
Files = dir(fullfile(Folder, '*.mat'));
DataC = cell(1, numel(Files));
for iFile = 1:numel(Files)
aFile = fullfile(Folder, Files(iFile).name);
DataC{iFile} = load(aFile);
end
Data = cat(2, DataC{:});
4 Comments
Ahmet Hakan UYANIK
on 11 Jul 2021
Edited: Ahmet Hakan UYANIK
on 11 Jul 2021
Jan
on 13 Jul 2021
Of course I cannot guess, what the contents of your MAT files is. Now it is clear, that the files contains structs with a field name "astoria" and "betio" with the subfield "longitude". But where does "latitude", "datetime" and "observation" come from? It is no save strategy, if I guess this.
What is the wanted output? You want "a single MAT file", but your example looks like a table. Should it be a text file?
Ahmet Hakan UYANIK
on 14 Jul 2021
Jan
on 15 Jul 2021
What are "subfields in a row"? Fields do not have an orientation. What is "calling with the row order"?
I assume, you want to create either a struct array, or to write a text file containing rows.
Categories
Find more on Structures 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!