How to collate two mat files with similar name pattern from two different sub-folders?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi all,
I have a folder with subfolders containing multiple mat files that have a smiliar name pattern.

I would like to access each subfolder and collate two mat files that have similar name pattern. For example two files indicated red above both end in 'T001'. I would like to collate those two and save it as a separte file . Similalry, I would like to do the same for each pair of mat files that have similar name pattern ending . Number of mat files in each subfolder is the same and endings are the same. Can you help please?
I can list files and load them in a loop but not sure how to progress
clear all
clc
%% Specify each subfolder containing all mat files
subfolder1 = 'C:\Users\whctc4\Desktop\Data\EWWD_ID001\Processed data\Xsens Awinda MTw';
subfolder2 = 'C:\Users\whctc4\Desktop\Data\EWWD_ID001\Processed data\Xsens Dot';
%% get file names and start loading and collating files in a loop
all_Mt2files = dir(fullfile(subfolder1, '*.mat'));
all_Dotfiles = dir(fullfile(subfolder2, '*.mat'));
%% load files from subfolder 1
for k = 1:length(all_Mt2files)
F = fullfile(subfolder1,all_Mt2files(k).name);
load(F);
end
%% load files from subfolder 2
for k = 1:length(all_Dotfiles)
J = fullfile(subfolder2,all_Dotfiles(k).name);
load(J);
end
%% Collate loaded files according to name pattern
2 Kommentare
Voss
am 13 Dez. 2021
The best way to combine each pair of .mat files depends on the contents of the .mat files. For example, if they each contain only a matrix, should each pair of matrices be concatenated vertically, concatenated horizontally, concatenated in the third dimension, interleaved somehow, etc.? Are the matrices guaranteed to be compatible sizes for the way they should be combined? If the .mat files contain some other data structure, how should they be combined?
If you can upload a pair of .mat files and explain how they should be combined (maybe an example output .mat file, if available), it would be helpful.
Akzeptierte Antwort
Jan
am 13 Dez. 2021
Maybe you want:
all_Mt2files = dir(fullfile(subfolder1, '*.mat'));
all_Dotfiles = dir(fullfile(subfolder2, '*.mat'));
for k = 1:length(all_Mt2files)
F = fullfile(subfolder1,all_Mt2files(k).name);
TF = load(F);
J = fullfile(subfolder2,all_Dotfiles(k).name);
TJ = load(J);
T = join(TF, ZJ);
% And now?
end
What exactly is a "single mat file table 1918x230"? Do you want to save T in a MAT file?
3 Kommentare
Jan
am 14 Dez. 2021
What do the MAT files contain? table objects? With which name?
What is the contents of TF and TJ after loading?
Maybe you need
T = join(TF.nameOfYourTable, ZJ.nameOfYourOtherTable);
save(fullfile(subfolder1, ['Joined', all_Mt2files(k).name]), 'T');
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Workspace Variables and MAT Files 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!