Combine hundred of mat files into one mat file (same quantity of row and column)

37 ビュー (過去 30 日間)
Hello Sir,
I have 123 mat files with the same quantity of column and row (example in the attachments).
The problem is I want to combine all these 123 mat files into one mat file in order to plot graph.
How can I do?
Thank you for your support.

回答 (3 件)

Image Analyst
Image Analyst 2022 年 2 月 20 日

Voss 2022 年 2 月 20 日
Here's one way:
% file_names = sprintfc('bearing1_1_%d.mat',1:123); % use this for files 1-123
file_names = sprintfc('bearing1_1_%d.mat',1:3);
% load the files into a struct array:
for ii = 1:numel(file_names)
data(ii) = load(file_names{ii});
1×3 struct array with fields: a
% vertically concatenate each struct's 'a' field into
% the 'a' field of a scalar struct 'all_data':
all_data = struct('a',vertcat(data.a))
all_data = struct with fields:
a: [98304×2 double]
% plot all the data:
% save the combined data to a mat file:
% check the mat file:
S = load('bearing1_1_all.mat')
S = struct with fields:
a: [98304×2 double]

Ive J
Ive J 2022 年 2 月 20 日
You can load all together:
files = ["bearing1_1_1.mat", "bearing1_1_2.mat"]; % add all files here, use dir or ls
ds = fileDatastore(files, 'ReadFcn', @(x)struct2array(load(x)));
ds = readall(ds);
ds = vertcat(ds{:});
  2 件のコメント
Pasu Surananchanok
Pasu Surananchanok 2022 年 2 月 20 日
Thank you Bro. You save my life.


Community Treasure Hunt

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

Start Hunting!

Translated by