Filter löschen
Filter löschen

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

19 Ansichten (letzte 30 Tage)
Mamed
Mamed am 1 Nov. 2011
Bearbeitet: Stephen23 am 12 Sep. 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

Akzeptierte Antwort

Jonas Reber
Jonas Reber am 1 Nov. 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 Kommentare
Mamed
Mamed am 1 Nov. 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 am 1 Nov. 2011
Just add a semicolon inside the eval
eval([vars{i} '= vals(i);'])

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Daniel Shub
Daniel Shub am 1 Nov. 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

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by