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.

 Réponse acceptée

Stephen23
Stephen23 le 7 Fév 2022
Modifié(e) : Stephen23 le 7 Fév 2022
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):

Plus de réponses (0)

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by