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.

 Respuesta aceptada

Stephen23
Stephen23 el 7 de Feb. de 2022
Editada: Stephen23 el 7 de Feb. de 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):

Más respuestas (0)

Categorías

Etiquetas

Preguntada:

el 7 de Feb. de 2022

Comentada:

el 7 de Feb. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by