Trate genvarname
.
varname = genvarname(str)
es la sintaxis básica para su uso. La documentación de MATLAB contiene ejemplos detallados del uso de esta función con una lista de exclusión (para garantizar nombres únicos de variables). Tendrá que usar eval
u otra función (por ejemplo, assignin
, mencionada en una respuesta anterior) para utilizar este nombre de variable.
Para responder a la pregunta por completo,
varnamelist = genvarname({'a','a','a','a','a'});
for l=1:length(varnamelist)
eval([varnamelist{l} '= l^2']);
end
Por supuesto, hay formas más eficientes de la elaboración de una lista de entrada para genvarname
, esto se deja como ejercicio;)
Si eres preocupado por el rendimiento, tenga en cuenta que eval
puede ralentizar la secuencia de comandos/función en gran medida; Personalmente, recomendaría el uso de tipos de datos struct o cell si necesita nombres dinámicos de variables.
Aunque esto es posible, por supuesto (como las respuestas ya lo demostraron), no es muy útil en la mayoría de los casos. ¿Hay alguna razón por la cual no se puede usar una estructura o matriz? – groovingandi
Gracioso. Hace un tiempo, uno de mis colegas que no programaron hizo la misma pregunta . Mi respuesta fue "no". Luego le mostré cómo podría usar una matriz para el mismo propósito. – Kena
Creo que esto debería mencionarse: [¿Cómo puedo crear las variables A1, A2, ..., A10 en un bucle?] (Http://matlab.wikia.com/wiki/FAQ#How_can_I_create_variables_A1.2C_A2.2C ... ..2CA10_in_a_loop.3F) – Amro