How do I run a loop through multiple subjects?

10 ビュー (過去 30 日間)
Troy Tyszkowski
Troy Tyszkowski 2020 年 3 月 20 日
コメント済み: Robert U 2020 年 3 月 20 日
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.

採用された回答

Robert U
Robert U 2020 年 3 月 20 日
Hi Troy Tyszkowski,
loop through your subject list (replace the disp()-command by your 'roast'):
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)
If you use paths you might want to look into fullfile() and filesep().
Kind regards,
Robert
  2 件のコメント
Troy Tyszkowski
Troy Tyszkowski 2020 年 3 月 20 日
Hello Robert.
Thank you very much for your help! This is gonna cut down on my time by a large margin!
I'm not sure if it's already built into that code, but the 'roast' process doesn't work with every subject. Is there anything I would need to add to the code in order for it to not stop when there is an error and just move on to the next subject?
Robert U
Robert U 2020 年 3 月 20 日
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.

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

その他の回答 (0 件)

カテゴリ

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

タグ

製品


リリース

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by