访问结构体数据(Matlab)

7

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个回答

14

你必须这样做:

a(1).a1
因为你用来创建结构体的代码实际上创建了一个包含三个元素的结构体数组,其中第一个数组元素包含 a1: 1a2: 4,第二个数组元素包含 a1: 2a2: 5,第三个数组元素包含 a1: 3a2: 6
当你在调用STRUCT时使用花括号 {},像你所做的那样,MATLAB会认为你想创建一个结构体数组,在这个结构体数组的元素中分配单元格的内容。如果你想创建一个包含单元格数组的单个 1x1 结构体元素,则必须添加另一组括号将单元格数组括起来,如下所示:
a = struct('a1',{{1,2,3}},'a2',{{4,5,6}});

那么你原来的代码 a.a1{1} 就可以工作。

编辑:

如果你使用数字数组而不是单元数组来创建你的结构体,像这样:

A = struct('a1',[1 2 3],'a2',[4 5 6]);

然后您可以按以下方式访问值为1:

A.a1(1)

了解有关在MATLAB中处理结构的更多信息,请查看此文档页面


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接