struct
结构体数组
说明
结构体数组是使用名为字段的数据容器将相关数据组合在一起的数据类型。每个字段都可以包含任意类型的数据。可以使用 structName.fieldName
格式的圆点表示法来访问字段中的数据。
创建对象
当您有数据要放入新的结构体中时,可以使用圆点表示法创建结构体,每次为结构体命名一个字段:
s.a = 1; s.b = {'A','B','C'}
s = struct with fields:
a: 1
b: {'A' 'B' 'C'}
字段名称可以包含 ASCII 字母(A-Z、A-Z)、数字 (0-9) 和下划线,并且必须以字母开头。字段名称的最大长度为 namelengthmax
。
也可以按如下所述,使用 struct
函数创建一个结构体数组。您可以同时指定许多字段,也可以创建一个非标量结构体数组。
语法
描述
s = struct
创建不包含任何字段的标量 (1×1) 结构体。
s = struct(
创建具有指定字段和值的结构体数组。field
,value
)value
输入参数可以是任何数据类型,例如数值、逻辑值、字符或元胞数组。
如果
value
不是元胞数组,或者value
是标量元胞数组,则s
是标量结构体。例如,s = struct('a',[1 2 3])
创建一个 1×1 结构体,其中s.a = [1 2 3]
。如果
value
是非标量元胞数组,则s
是维度与value
相同的结构体数组。s
的每个元素包含value
的对应元素。例如,s = struct('x',{'a','b'})
返回s(1).x = 'a'
和s(2).x = 'b'
。如果
value
是空元胞数组{}
,则s
是空 (0×0) 结构体。
s = struct(field1,value1,...,fieldN,valueN)
创建一个包含多个字段的结构体数组。
如果
value
的所有输入都不是元胞数组,或者value
中作为元胞数组的所有输入都是标量,则s
是标量结构体。如果任一
value
输入是非标量元胞数组,则s
具有与该元胞数组相同的维度。此外,如果两个或多个value
输入是非标量元胞数组,则它们必须都具有相同的维度。对于类型为标量元胞数组或任何其他数据类型的数组的任何
value
,struct
将value
的内容插入s
的所有元素的相关字段中。例如,s = struct('x',{'a','b'},'y','c')
返回s(1).x = 'a'
、s(2).x = 'b'
、s(1).y = 'c'
和s(2).y = 'c'
。如果任何
value
输入是空元胞数组{}
,则输出s
是空 (0×0) 结构体。要指定一个空字段并保留其他字段的值,请改用[]
作为value
输入。
s = struct([])
创建不包含任何字段的空 (0×0) 结构体。
s = struct(
创建包含与 obj
)obj
的属性对应的字段名称和值的标量结构体。struct
函数不会转换 obj
,而是将 s
创建为一个新的结构体。此结构体不保留类信息,因此专用、受保护和隐藏的属性在 s
中变为公共字段。struct
函数在您使用此语法时会发出警告。
输入参数
示例
扩展功能
版本历史记录
在 R2006a 之前推出另请参阅
isfield
| table
| isstruct
| fieldnames
| orderfields
| rmfield
| substruct
| cell2struct
| struct2cell
| struct2table
| table2struct
| namelengthmax