Combine hundred of mat files into one mat file (same quantity of row and column)
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (3)
Voss
am 20 Feb. 2022
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
am 20 Feb. 2022
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 Kommentare
Turlough Hughes
am 20 Feb. 2022
Additionally, a handy way to write the filenames is:
files = "bearing1_1_" + (1:123) + ".mat"
Siehe auch
Kategorien
Mehr zu Big Data Processing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!