Load different mat files using for loop
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello guys!! I'm trying to load several subjects from a folder, with the data of those subjects having different mat filenames.
What I have implemented at the moment is this:
DataLocation = 'D:\ABIDEdataset\Outputs\dparsf\nofilt_noglobal\rois_aal\Leuven';
FileType = fullfile(DataLocation, '*.mat');
dirFicheiroMat = dir(FileType);
number_subjects = length(dirFicheiroMat);
for i=1:number_subjects
baseFileName = fullfile(DataLocation, dirFicheiroMat(i).name);
lfp = load(baseFileName);
end
Where lfp variable will be used after, to compute some calculation for each subject iterated.
But the problem of this code lies in the fact that lfp will be a structure after each iteration, and I want that variable to store the "true" values of each subject, instead of a structure...
Can anyone give me any help in this?
Thanks in advance,
Hugo
2 commentaires
Stephen23
le 20 Fév 2021
" I want that variable to store the "true" values of each subject, instead of a structure..."
Sure.
But mat files can contain any number of variables with any (permitted) names. So far you have not told us how many variables there are in the mat files nor what their names are, which makes it difficult for us to help you.
Réponse acceptée
Stephen23
le 20 Fév 2021
Assuming that each mat file contains exactly one variable of unknown name, then try this:
D = 'D:\ABIDEdataset\Outputs\dparsf\nofilt_noglobal\rois_aal\Leuven';
S = dir(fullfile(D,'*.mat'););
for k = 1:numel(S)
F = fullfile(D, S(k).name);
C = struct2cell(load(F));
S(k).data = C{1};
end
You can trivially access the file data using indexing, e.g. the second file:
S(2).data
If your mat files actually contain more than one variable then you will need to give us more information: how many, their names, etc.
6 commentaires
Stephen23
le 20 Fév 2021
Modifié(e) : Stephen23
le 20 Fév 2021
"How can I save each subject's output (which are a structure) in that ConnectivityMatrix_Corr third dimension?"
I don't know, because I have no idea about the structure size, how many fields the structure has, what classes the fields are, or what sizes the fields might have. If at all possible, the answer to your question would be to extract the data from the fields of that structure and allocate them to the desired array.
"Or, if possible, how can I save each field of the structure for every subject in different matrices?"
They already are different matrices, referenced by the fieldname/index of that structure.
Rather than putting the data into one numeric matrix, perhaps using a non-scalar structure might be better:
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Whos dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!