convert strings back to variable names?

9 views (last 30 days)
I copied a piece of code below. xs, ys and zs contain strings that happen to be variable names, and I'm checking to see if these variables exist using the find.. = ismember() function. Each of those strings that are variable names are variables whos values are arrays and I'd like to concatenate whatever variables do exist.
For example: if x1a and xA exist, I want to join both of those arrays to make one array stored in grids2project.x.xgrdc(i) = [x1a;xA]. (This piece of code is in a for-loop, hence the (i)). The code below just gives me the strings when i set the value = xs(findxs).
xs = {'x1a','x2b','xA'};
findxs = ismember(xs,who);
ys = {'y1a','yB','y2c'};
findys = ismember(ys,who);
zs = {'zC','z1b','z2c'};
findzs = ismember(zs,who);
grids2project.x.(genvarname(['xgridc' num2str(i)],who)) = xs(findxs);
grids2project.y.(genvarname(['ygridc' num2str(i)],who)) = ys(findys);
grids2project.z.(genvarname(['zgridc' num2str(i)],who)) = zs(findzs);
Thanks!

Accepted Answer

Fangjun Jiang
Fangjun Jiang on 9 Jul 2011
In this case, you need to use eval() to get its value.
a=1; VarName={'a','b','c'}; eval(VarName{1})
Use ismember() and who() is a good way to check existing variables. I wonder if you know this function. exist('a','var');

More Answers (1)

Paulo Silva
Paulo Silva on 9 Jul 2011
Just a simple example on how to create 3 variables with predetermined values.
v={'x1a','x2b','xA'};
values={10,20,30};
for n=1:numel(v)
vn=values(n);
assignin('base',char(v(n)),vn{:})
end

Categories

Find more on Characters and Strings in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!