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

4

1 回答 1

14

你必须这样做:

a(1).a1

原因是您用于创建结构的代码实际上创建了一个 3 元素结构数组,其中第一个数组元素包含a1: 1and a2: 4,第二个数组元素包含a1: 2and a2: 5,第三个数组元素包含a1: 3and a2: 6

当您像以前一样在对STRUCT{}的调用中使用大括号时,MATLAB 假定您要创建一个结构体数组,在该结构体数组中,您可以在结构体数组元素中分配单元格的内容。如果您想创建单个 1×1 结构元素,其中字段包含元胞数组,则必须添加一组额外的花括号,将您的元胞数组括起来,如下所示:

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 中使用结构的更多信息,请查看此文档页面

于 2011-02-18T17:24:05.017 回答