Load different mat files using for loop

4 ビュー (過去 30 日間)
Iugo
Iugo 2021 年 2 月 19 日
コメント済み: Iugo 2021 年 2 月 20 日
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 件のコメント
Stephen23
Stephen23 2021 年 2 月 20 日
" 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.
Iugo
Iugo 2021 年 2 月 20 日
Sorry about that...
So basically in each folder I have several mat files, with these being respective to one subject, and they contain a 2D matrix (between each mat file the size can be different) with the values of fMRI BOLD time-series.
The names of these files are from this type "Leuven10050682roisaal, Leuven20050726roisaal" and so on.

サインインしてコメントする。

採用された回答

Stephen23
Stephen23 2021 年 2 月 20 日
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 件のコメント
Stephen23
Stephen23 2021 年 2 月 20 日
編集済み: Stephen23 2021 年 2 月 20 日
"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:
Iugo
Iugo 2021 年 2 月 20 日
Thank you for your help @Stephen Cobeldick!!
I'll check those files.
Best regards,
Hugo

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeWhos についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by