Load different mat files using for loop
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Iugo
el 19 de Feb. de 2021
Comentada: Iugo
el 20 de Feb. de 2021
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 comentarios
Stephen23
el 20 de Feb. de 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.
Respuesta aceptada
Stephen23
el 20 de Feb. de 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 comentarios
Stephen23
el 20 de Feb. de 2021
Editada: Stephen23
el 20 de Feb. de 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:
Más respuestas (0)
Ver también
Categorías
Más información sobre Whos en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!