How do I run a loop through multiple subjects?

12 visualizaciones (últimos 30 días)
Troy Tyszkowski
Troy Tyszkowski el 20 de Mzo. de 2020
Comentada: Robert U el 20 de Mzo. de 2020
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.

Respuesta aceptada

Robert U
Robert U el 20 de Mzo. de 2020
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 comentarios
Troy Tyszkowski
Troy Tyszkowski el 20 de Mzo. de 2020
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 el 20 de Mzo. de 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.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Programming en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by