Convert character vector to evaluable expression

However, the elements in my cell array are not numerical expressions, but rather variables and struct paths. I tried using sscanf using %f, %d, or %s as formatSpecs. The first 2 returns empty arrays and the latter just returns the original character vector. This is what I am doing.
struct.field1.subfield = 5;
vec = {'struct.field1.subfield'};
sscanf(vec{1},'%s')
ans = 'struct.field1.subfield'
I want to get 5.

 采纳的回答

S.field1.subfield = 5; % do NOT use STRUCT as a variable name.
vec = 'S.field1.subfield';
spl = split(vec,'.');
val = getfield(S,spl{2:end})
val = 5
Good data design avoids dynamically accessing the variable name (S in the above example):

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Structures 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by