How to concatenate multiple .mat files and generate a 3D matrix?

1 visualizzazione (ultimi 30 giorni)
I have 100 files which are 30482x43 (number of data x layers), and what I am trying to do is make a single 30482x100x43 matrix.
I would appreciate your help please!!

Risposta accettata

Stephen23
Stephen23 il 3 Ago 2022
Modificato: Stephen23 il 3 Ago 2022
"I have 100 files ..."
which are probably named using some sequential numbering, so you will need to take that into account in the code:
P = 'absolute or relative path to where the files are saved';
S = dir(fullfile(P,'*.mat'));
S = natsortfiles(S); % download: https://www.mathworks.com/matlabcentral/fileexchange/47434-natural-order-filename-sort
for k = 1:numel(S)
F = fullfile(P,S(k).name);
L = load(F);
S(k).data = L.nameOfTheVariableWhichYouDidNotTellUs;
end
A = permute(cat(3,S.data),[1,3,2]);

Più risposte (1)

KSSV
KSSV il 3 Ago 2022
matFiles = dir('*.mat') ;
N = length(matFiles) ;
iwant = zeros(3048,43,N) ;
for i = 1:N
S = matfile(matFiles(i).name) ;
iwant(:,:,i) = S.myvar ; % myvar is the variable in your mat file
end

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Prodotti


Release

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by