a= struct('a1',{1,2,3},'a2',{4,5,6})
如何获得1的值;
我尝试使用返回错误的a.a1 {1}
>> a.a1{1}
??? Field reference for multiple structure elements that is followed by more reference blocks is an
error.
如何访问1?感谢。
修改
A = struct{'a1',[1 2 3],'a2',[4 5 6]}
我如何访问1.我使用A(1).a1
但我得到1 2 3
答案 0 :(得分:13)
你必须这样做:
a(1).a1
原因是因为用于创建结构的代码实际上创建了一个3元素结构数组,其中第一个数组元素包含a1: 1
和a2: 4
,第二个数组元素包含{{1 }和a1: 2
,第三个数组元素包含a2: 5
和a1: 3
。
当您在调用STRUCT时使用大括号a2: 6
时,MATLAB假设您要创建一个结构数组,在该结构数组中,您可以在结构数组元素中分布单元格的内容。如果你想要创建一个单独的1×1结构元素,其中字段包含单元格数组,则必须添加一组括起单元格数组的花括号,如下所示:
{}
然后您的原始a = struct('a1',{{1,2,3}},'a2',{{4,5,6}});
将有效。
修改强>
如果使用数字数组而不是单元格数组创建结构,请执行以下操作:
a.a1{1}
然后您可以按如下方式访问值1:
A = struct('a1',[1 2 3],'a2',[4 5 6]);
有关在MATLAB中使用结构的更多信息,请查看this documentation page。