Can someone advise how I fix this loop?

I am using a MatLab based interface for processing EEG files collected from 59 subjects. The below code works but only for 1 file and I have 59 files I want a result from. sFiles filters the files stored in this interface and correctly returns 59 files. However, sStudy only returns a result for the first file. How do I run a loop on the below code so I can get 'n' for all 59 files? I would like to get the result 'n' for each file along with the subject name (in sFiles as SubjectName).
sFiles = bst_process('CallProcess', 'process_select_search', [], [], ...
'search', '(([name CONTAINS "resample"]))');
sStudy = bst_get('Study', sFiles.iStudy);
DataMat = in_bst_data(sStudy.Data(i).FileName);
n = numel(DataMat.F.events(3).times)

 Accepted Answer

Hi,
That would be somewhat in this way:
for ii = 1:59
sFiles(ii).iStudy = bst_process('CallProcess', 'process_select_search', [], [], ...
'search', '(([name CONTAINS "resample"]))');
sStudy = bst_get('Study', sFiles(ii).iStudy);
DataMat = in_bst_data(sStudy.Data(ii).FileName);
n(ii) = numel(DataMat.F.events(ii).times);
end

5 Comments

Hi Sulaymon
Thank you for your reply. I ran it and got the below error.
Unrecognized function or variable 'iStudies'.
Error in bst_get (line 515)
if ~isempty(iStudies)
Error in Working_file (line 5)
sStudy = bst_get('Study', sFiles(ii).iStudy);
In that case, you can edit: sFiles(ii).iStudy to be sFiles(ii)
Note that it is all blindly written by me without much knowledge about your data files.
Is that working ok, now? if so, hit accept the answer. Thx.
Hi Sulaymon,
That was the right approach thanks. I had to change the variables.

Sign in to comment.

More Answers (0)

Categories

Tags

Community Treasure Hunt

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

Start Hunting!