Essayez genvarname
.
varname = genvarname(str)
est la syntaxe de base à utiliser. La documentation MATLAB contient des exemples détaillés d'utilisation de cette fonction avec une liste d'exclusion (pour garantir des noms de variables uniques). Vous devrez utiliser eval
ou une autre fonction (par exemple assignin
, mentionnée dans une réponse précédente) pour utiliser ce nom de variable.
Pour répondre à la question complètement,
varnamelist = genvarname({'a','a','a','a','a'});
for l=1:length(varnamelist)
eval([varnamelist{l} '= l^2']);
end
Bien sûr, il existe des moyens plus efficaces de mettre sur pied une liste d'entrée pour genvarname
, cela est laissé en exercice;)
Si vous êtes préoccupé par les performances, notez que eval
peut ralentir considérablement le script/la fonction; Personnellement, je recommanderais l'utilisation de types de données struct ou cell si vous avez besoin de noms de variables dynamiques.
Bien que ce soit bien sûr possible (comme les réponses le montraient déjà), il n'est pas très utile dans la plupart des cas.Y a-t-il une raison pour laquelle une structure ou un tableau ne peut pas être utilisé? – groovingandi
Funny.Un de mes collègues hors programmation a posé la même question la semaine dernière Ma réponse était "ne pas", puis je lui ai montré comment il pouvait utiliser un tableau pour le même but. – Kena
Je pense que cela devrait être mentionné: [Comment puis-je créer des variables A1, A2, ..., A10 dans une boucle?] (Http://matlab.wikia.com/wiki/FAQ#How_can_I_create_variables_A1.2C_A2.2C .. ..2CA10_in_a_loop.3F) – Amro