grabbing specific/not all files in a folder

3 views (last 30 days)
Hi everyone,
I'm doing a fMRI analysis with a script I got from a collegue and adapted it for my purpose. Unfortunately, I stuck on one problem, so I would like to ask you for help. I have 320 .IMA files for each participant in a folder called "CUE*". Since the first 5 files are dummy scans, I only want to grab file 6 to 320 and ignore the first five. This is how the files are called: e.g. CBM210.MR.STUDIES_PSYCHOLOGY.0008.0001.2022. with the 0001 in bold showing the numbers, running until 0320.
This is the respective part in the script, were I grab the .IMA files and work with them:
MRI_dir = fullfile(raw_dir,, 'STU*', 'CUE*');
func_files = dir(fullfile(fMRI_dir,'*.IMA'));
func_files_cell = orderFiles4SPM(func_files);
fprintf('%d func input files found...\n',length(func_files_cell))
matlabbatch{2} = func_files_cell';
matlabbatch{2}.spm.util.import.dicom.outdir = {out_dir_func};
I was thinking about doing something like *[0006;0320]*.IMA or for i=1:nimg with i+5 but I could not make it so far...
Any help is more then welcome!

Accepted Answer

Walter Roberson
Walter Roberson on 10 Aug 2022
Unfortunately the wildcards that MATLAB accepts are only a subset of what is generally supported by the operating system. You will need to use other ways, such as
[~, basenames, ~] = fileparts({});
prefixpattern = '(?<=\w+\.\w+\.\w+\.\w+\.)(\d+)';
prefixes = regexp(basenames, prefixpattern, 'match', 'once');
wanted = ~ismember(prefixes, {'0001', '0002', '0003', '0004', '0005'});
func_files = func_files(wanted);
  1 Comment
Franziska Motka
Franziska Motka on 11 Aug 2022
Hi Walter,
thank you very much, it worked and saved me tons of time and clicking :)

Sign in to comment.

More Answers (0)




Community Treasure Hunt

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

Start Hunting!