Assigning data to variable names in a vector during a for loop.

22 visualizaciones (últimos 30 días)
Mamed
Mamed el 1 de Nov. de 2011
Editada: Stephen23 el 12 de Sept. de 2023
Hi
I wanna make a vector with variable names and then assign values to the from a for loop.
Estimates = [1 2 3 4 5 6 7];
variables = (a b c d e f g};
for i = 1:length(variables)
variables(i) = Estimates(1);
end
So that
a = 1 b = 2 etc
and so on. Is this possible?
And also is i possible to make it so that you create variables named in incremental way? I.e
b = [2 5 45];
for i = 1:length(b)
'a'+int2str(i) = b(i);
end
that is
a1 = 2 a2 = 5 and a3 = 45
Kind Regards

Respuesta aceptada

Jonas Reber
Jonas Reber el 1 de Nov. de 2011
yes this is possible. you could use the command "eval" that comes with matlab. have a look at the documentation.
for your case you would have to change the variables array to have chars inside - i.e.:
vars = {'a', 'b', 'c'}
and in the for loop use
vals = [1 2 3 4]
vars = {'a', 'b', 'c', 'd'}
for i = vals
eval([vars{i} '= vals(i)'])
end
also, you might want to have a look at the "genvarname" command of matlab that does exactly what you want in the second part of your question.
  2 comentarios
Mamed
Mamed el 1 de Nov. de 2011
Thanks a lot. Just a smal question is there a way to stop it from showing the values that are being assigned? the ; doesn't work.
Kind regards
Daniel Shub
Daniel Shub el 1 de Nov. de 2011
Just add a semicolon inside the eval
eval([vars{i} '= vals(i);'])

Iniciar sesión para comentar.

Más respuestas (1)

Daniel Shub
Daniel Shub el 1 de Nov. de 2011
While you can do this with eval, it is generally not recommended. This is pretty well covered in the FAQ: http://matlab.wikia.com/wiki/FAQ#How_can_I_create_variables_A1.2C_A2.2C....2CA10_in_a_loop.3F

Categorías

Más información sobre Matrices and Arrays 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!

Translated by