including subject_name in variable with a loop
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Dear all,
We are running a script over several subjects in order to get mean reaction time data per condition out of each of them independently.
We have a simple loop:
subject = {subject_1 subject_2 subject_3 ...}
for i = 1: (length(subject))
... run the script
and here we would like to save our results in a new variable whose name would be accordingly "subject_1", "subject_2" and so on.. For example:
final_subject_1 = [mean1 mean2 mean3 mean4]
We thank you very much for any suggestion!
Best,
Udiubu
0 comentarios
Respuesta aceptada
Grzegorz Knor
el 20 de Mzo. de 2012
eval(['final_subject_' num2str(i) '= [mean1 mean2 mean3 mean4]'])
2 comentarios
Daniel Shub
el 20 de Mzo. de 2012
Conceptually it is the same thing. Just replace num2str(i) with subject{i}.
Más respuestas (2)
Geoff
el 20 de Mzo. de 2012
This has already been solved for you, but I'll chip in.
In this case, there doesn't appear to be a good reason to use dynamic names. Why not put all your data into matrix form in the same order as the subjects?
means = zeros(length(subject), 4);
for row = 1:length(subject)
% do your stuff...
means(row,:) = [mean1 mean2 mean3 mean4];
end
If you're concerned about looking up a subject, make a quick helper function:
subject = { etc etc etc }; % This needs to come first.
find_subj = @(name) find( cellfun(@(s) strcmp(s,name), subject) );
Now, the means for subject_2:
means( find_subj('subject_2'), : )
This approach is far more flexible than using dynamic names. Consider this: how were you intending to plot your results?
3 comentarios
Geoff
el 20 de Mzo. de 2012
Yeah I guess that's the proper term for that specific syntax. But I just meant any situation where you create a variable (or field) using a name that is set at runtime. I'm a MatLab newbie so I may be a bit loose with terminology. =)
Daniel Shub
el 25 de Mzo. de 2012
That is a fine use of "dynamic names", I just wanted to check to make sure I understood.
Daniel Shub
el 20 de Mzo. de 2012
You can do it with eval, but then in a few days you will be back asking how to use the variables. This is a FAQ, and is generally not a good idea ...
0 comentarios
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!