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에서 Big Data Processing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!