MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   访问结构数据(matlab) (https://www.labfans.com/bbs/showthread.php?t=26368)

poster 2019-12-14 20:13

访问结构数据(matlab)
 
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?谢谢。

[B]编辑[/B] A = struct{'a1',[1 2 3],'a2',[4 5 6]}

如何访问1.我使用A(1).a1但得到1 2 3



[B]回答:[/B]

您必须这样做:

a(1).a1 原因是因为用于创建结构的代码实际上创建了一个三元素结构数组,其中第一个数组元素包含a1: 1和a2: 4 ,第二个数组元素包含a1: 2和a2: 5 ,并且第三个数组元素包含a1: 3和a2: 6 。

当像在调用[URL="http://www.mathworks.com/help/techdoc/ref/struct.html"]STRUCT[/URL]那样使用大括号{}时,MATLAB假定您要创建一个结构数组,在其中将单元格的内容分布在结构数组元素中。相反,如果您要创建一个单个的1比1结构元素,其中的字段包含单元格数组,则必须添加一组额外的花括号来包围单元格数组,如下所示:

a = struct('a1',{{1,2,3}},'a2',{{4,5,6}}); 然后,您原来的a.a1{1}将起作用。

[B]编辑:[/B]

如果使用数字数组而不是单元格数组创建结构,如下所示:

A = struct('a1',[1 2 3],'a2',[4 5 6]); 然后,您可以按以下方式访问值1:

A.a1(1) 有关在MATLAB中使用结构的更多信息,请查看[URL="http://www.mathworks.com/help/techdoc/matlab_prog/br04bw6-38.html"]此文档页面[/URL] 。



[url=https://stackoverflow.com/questions/5044452]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 04:52

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.