通过字符串访问结构中的嵌套子字段

时间:2015-12-04 09:42:49

标签: matlab struct

我有这样的结构

A.b.c.xx
A.b.d.xx

并希望将子结构存储在字符串或其他任何类似的

s = 'b.c'

现在我想以下列方式访问结构的子字段:

test = A.(s).xx

这可能,我该怎么做?

2 个答案:

答案 0 :(得分:4)

结构中的字段名可以直接输入(例如A.b),也可以通过字符串变量输入(例如name = 'b'A.(name))。但是你不能指定name = 'b.c',因为我猜你已经想通了。因此,您必须使用

手动拆分字符串
A.(s(1)).(s(3))

这可能对简单案例有所帮助,但不是很一般。要evade eval仍具有更大的灵活性,您可以使用getfield函数并使用strsplit在字符串s中查找不同的字段名称。

fields = strsplit(s,'.')
getfield(A,fields{:},'xx')

答案 1 :(得分:0)

是的,有可能,这样做:

eval(['A.' s '.xx'])