フィルターのクリア

convert strings back to variable names?

10 ビュー (過去 30 日間)
Iman Alsharkawi
Iman Alsharkawi 2011 年 7 月 8 日
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!

採用された回答

Fangjun Jiang
Fangjun Jiang 2011 年 7 月 9 日
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');

その他の回答 (1 件)

Paulo Silva
Paulo Silva 2011 年 7 月 9 日
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

カテゴリ

Help Center および File ExchangeCell Arrays についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by