How do I run a loop through multiple subjects?
15 views (last 30 days)
Show older comments
Hello.
I'm sure this question has been asked a fair amount, and I've been attempting to look up the answer on various forums and tutorials, but they don't seem to answer my specific question.
If I have a group of subjects that I want to run a matlab command for, I understand how to set the subjects up as an array (subject_list = {'subject1','subject2'}), but if I am then attempting to run the command through these subjects, how would I enter the new 'subject_list' variable into the command? The command I have is:
roast('subject1/mri/T1.nii') where 'roast' is the command, and /mri/T1.nii is the same for each subject, so the only thing that would be changing is 'subject1' where I would like to loop all of my subjects.
0 Comments
Accepted Answer
Robert U
on 20 Mar 2020
Hi Troy Tyszkowski,
subject_list = {'subject1','subject2'};
for nSubject = 1:numel(subject_list)
cmdString = strcat( subject_list{nSubject},'/mri/T1.nii');
disp(cmdString)
end
Alternatively, use the cellfun()-function to shorten your code. Not so nice to read and debug, but quite quick in execution:
cellfun(@(cIn) disp(strcat(cIn,'/mri/T1.nii')),subject_list)
Kind regards,
Robert
2 Comments
Robert U
on 20 Mar 2020
Therefore, you can use try, catch-statement. Just leave the catch part empty or fill a warning in to keep track what subject did not work.
More Answers (0)
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!