访问struct data(matlab)

时间:2011-02-18 17:23:06

标签: matlab matlab-struct

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

1 个答案:

答案 0 :(得分:13)

你必须这样做:

a(1).a1

原因是因为用于创建结构的代码实际上创建了一个3元素结构数组,其中第一个数组元素包含a1: 1a2: 4,第二个数组元素包含{{1 }和a1: 2,第三个数组元素包含a2: 5a1: 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