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.

 채택된 답변

Stephen23
Stephen23 2022년 2월 7일
편집: Stephen23 2022년 2월 7일
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에 대해 자세히 알아보기

질문:

2022년 2월 7일

댓글:

2022년 2월 7일

Community Treasure Hunt

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

Start Hunting!

Translated by