How to populate a new variable from an old one

3 views (last 30 days)
Good morning,
I have have had to create a dynamic variable (I am well aware of the posts about this) to prevent the cell content being overwritten during a save and load cycle. What I would like to do is take the core variable and transfer its content to the new one before it is overritten.
I am having the chicken and egg probelm, I cannot isolate the new variable exclusively.
eval(['IN_D_mat_G_sqz_' char(SA_type)]); % Appends var name with slope angle
WS = who;
IN_index = find(contains(WS,'IN_D_mat_G_sqz')); % finds in the workspace core and new var
% Now I am stuck
  1 Comment
Stephen23 on 1 Jun 2021
"I have have had to create a dynamic variable..."
I doubt that. What is much much more likely is this:

Sign in to comment.

Answers (1)

Jan on 1 Jun 2021
Edited: Jan on 1 Jun 2021
You are aware of the warning about creating variables dynamically. So why do you try to do this? This method is a shot in you kneed and "now I am stuck" is exactly what is expected.
I have over 40 years of experiences in programming and I would stuck with this approach also. Even if I'd find a way, it would slow down the processing speed massively and increase the level of complexity until the code can not be debugged efficiently anymore.
The name "IN_D_mat_G_sqz_" sounds like too much information is hidden in the name of the variable. This is one of the typical problem of the dynamic creation.
The problem will not occur, if you store the information e.g. in fields of a struct instead:
data(1).value = 1:17;
data(1).conditions = {'IN', 'D', 'G', 'sqz'};
data(1).type = char(SA_type);
The finding a "free variable" is done by:
numel(data) + 1
That you are stuck with the dynamic creation of variables is a secure makrer, that it is time to refactor your code. Therefore this is a really good question. Only the level of the solution differs from what you expect.


Find more on Get Started with MATLAB in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by