Combine hundred of mat files into one mat file (same quantity of row and column)
2 次查看(过去 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.
0 个评论
回答(3 个)
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});
end
disp(data)
% vertically concatenate each struct's 'a' field into
% the 'a' field of a scalar struct 'all_data':
all_data = struct('a',vertcat(data.a))
% plot all the data:
plot(all_data.a(:,1),all_data.a(:,2),'.');
% save the combined data to a mat file:
save('bearing1_1_all.mat','-struct','all_data');
% check the mat file:
S = load('bearing1_1_all.mat')
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 个评论
Turlough Hughes
2022-2-20
Additionally, a handy way to write the filenames is:
files = "bearing1_1_" + (1:123) + ".mat"
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!