Matlab:创建结构失败:字段名称无效

时间:2018-03-21 13:21:22

标签: matlab struct

假设我在Matlab中创建了以下结构:

spec.Property1 = 0
spec.Property2 = 0
spec.Property3.Name = 0
spec.Property3.Something = ''

它正在工作,我得到了我期望的结构:

Property1: 0
Property2: 0
Property3: [1×1 struct]

假设我想这样做:

nameOfNewStruct1 = 'Property1'
nameOfNewStruct2 = 'Property2'
nameOfNewStruct3 = 'Property3.Name'
nameOfNewStruct4 = 'Property3.Something'

spec.(nameOfNewStruct1) = 0
spec.(nameOfNewStruct2) = 0
spec.(nameOfNewStruct3) = 0
spec.(nameOfNewStruct4) = ''

Invalid field name: 'Property3.Name'.

为什么不起作用?如果我想使用'Something.Something'字符,需要更改设置吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

来自Loren(查看2011年第20期的评论)https://blogs.mathworks.com/loren/2005/12/13/use-dynamic-field-references/,这是(当然?)你尝试的方式不可能。一个简单的解决方案是等效spec.('Property3').('Name')。 如何以与你的相似的方式,以任意深度,在稍后的评论中回答。

A.l1.l2.l3.l4 = 1234;
fieldname = 'l1.l2.l3.l4';
eval(['A.',fieldname])