文档

结构体

结构数组

描述

一个结构数组使用数据容器对相关数据进行分组的数据类型是否称为数据类型字段.每个字段可以包含任何类型的数据。使用窗体的点表示法访问字段中的数据structName.fieldName

创建

当你有数据要放入一个新的结构中时,使用点表示法创建结构,一次命名一个字段:

S.a = 1;S.b = {“一个”“B”“C”
s =带字段的结构:a: 1 b: {' a ' ' b ' 'C'}

方法创建结构数组结构体函数,如下所述。您可以同时指定多个字段,或者创建一个非标量结构数组。

描述

S = struct创建不带字段的标量(1乘1)结构。

例子

S = struct(价值创建具有指定字段和值的结构数组。的价值输入参数可以是任何数据类型,例如数字、逻辑、字符或单元格数组。

  • 如果价值单元格数组,或者if价值是标量单元格数组吗年代是标量结构。例如,S = struct('a',[1 2 3])创建一个1乘1结构,其中S.a = [1 2 3]

  • 如果价值是一个非标量单元格数组吗年代结构数组是否与尺寸相同价值.的每个元素年代的对应元素价值.例如,S = struct('x',{'a','b'})返回(1)。X = 'a'而且(2)。X = 'b'

  • 如果价值是空单元格数组吗{},然后年代是一个空的(0乘0)结构。

例子

s = struct(field1,value1,…,fieldN,valueN)创建具有多个字段的结构数组。

  • 如果没有价值输入是单元格数组,或者全部价值那么单元格数组的输入就是标量年代是标量结构。

  • 如果任何价值那么,输入是一个非标量单元格数组年代与单元格数组的尺寸相同。同样,如果两个或两个以上价值输入是非标量单元格数组,那么它们都必须具有相同的维度。

    对于任何价值这是一个标量单元格数组或任何其他数据类型的数组,结构体插入的内容价值在相关领域的所有要素年代.例如,S = struct('x',{'a','b'},'y','c')返回(1)。X = 'a'(2)。X = 'b'(1)。Y = 'c',(2)。Y = 'c'

  • 如果有任何价值Input是一个空单元格数组,{},然后输出年代是一个空的(0乘0)结构。若要指定空字段并保留其他字段的值,请使用[]作为一个价值输入。

S = struct([])创建不带字段的空(0 × 0)结构。

S = struct(obj属性的字段名和值创建一个标量结构obj.的结构体函数不转换obj,而是创造年代作为一种新的结构。此结构不保留类信息,因此私有、受保护和隐藏属性成为中的公共字段年代.的结构体函数在使用此语法时发出警告。

输入参数

全部展开

字段名,指定为字符向量或字符串标量。有效字段名称以字母开头,可以包含字母、数字和下划线。字段名的最大长度是namelengthmax函数返回。

值,指定为任意类型的数组。如果有任何价值输入是非标量单元格数组,则所有非标量单元格数组输入必须具有相同的维度。

如果有任何价值Input是一个空单元格数组,{},则输出为空结构数组。若要指定单个空字段,请使用[]

对象,指定为对象的标量或数组。的结构体的属性obj到一个新的标量结构的场。

结构体函数不会从大多数基本数据类型创建结构。例如,如果obj字符数据类型结构体发出错误消息。然而,结构体将表或时间表的属性作为结构返回。看到MATLAB基本类获取基本数据类型的列表。

例子

全部折叠

在结构的字段中存储相关的数据块。可以为描述数据的字段指定人类可读的名称。

通过使用点表示法向结构中添加字段来创建结构。字段包含正弦波的x和y值,以及描述数据的文本。

数据。X = linspace(0,2*pi);数据。Y = sin(data.x);数据。title =y = sin(x)
data =带字段的结构:X: [1x100 double] y: [1x100 double] title: 'y = sin(X)'

画出正弦波。可以通过字段名来引用x和y值数组。然后添加标题。

情节(data.x data.y)标题(data.title)

创建包含单个字段的非标量结构。

场=“f”;值= {“一些文本”;[10,20,30];魔法(5)};S = struct(字段,值)
s =3×1结构f

查看每个元素的内容。

顺丰速递
Ans = '一些文本'
ans =1×310 20 30
ans =5×517 24 18 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9

当您访问非标量结构的字段时,例如顺丰速递, MATLAB®返回一个逗号分隔的列表。在这种情况下,顺丰速递等于(1)。f,(2)。f,年代(3).f

创建包含多个字段的非标量结构。

field1 =“f1”;Value1 = 0 (1,10);field2 =“f2”;Value2 = {“一个”“b”};field3 =‘f3’;Value3 = {pi, pi.^2};field4 =“f4”;Value4 = {“四”};S = struct(field1,value1,field2,value2,field3,value3,field4,value4)
s =2×4结构F1 f2 f3 f4

的单元格数组value2而且value3是1乘2,那么年代也是1 × 2。因为value1是数值数组而不是单元格数组,两者(1) .f1而且(2) .f1内容相同。类似地,因为单元格数组value4只有一个元素,(1) .f4而且(2) .f4内容相同。

(1)
ans =带字段的结构:F1: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] f2: 'a' f3: 3.1416 f4: 'fourth'
(2)
ans =带字段的结构:F1: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] f2: 'b' f3: 9.8696 f4: 'fourth'

创建一个包含空字段的结构。使用[]指定空字段的值。

S = struct(“f1”“一个”“f2”[])
s =带字段的结构:F1: 'a' f2: []

创建一个包含单元格数组字段的结构。

场=“mycell”;值= {{“一个”“b”“c”}};S = struct(字段,值)
s =带字段的结构:Mycell: {'a' 'b' 'c'}

创建一个包含多个字段的空结构。

S = struct(“一个”{},“b”{},“c”{})
S = 0x0包含字段的空结构数组:a b c

为空结构中的字段赋值。

(1)。一个=“一个”
s =带字段的结构:A: ' A ' b: [] c: []

创建一个嵌套结构,其中一个是具有包含另一个结构的字段的结构。

A.b = struct(“c”{},' d '{})
一个=带字段的结构:B: [0x0 struct]

的字段名a.b

字段名(a.b)
ans =2x1单元阵列{' c '} {' d '}

兼容性的考虑

全部展开

R2019a的行为发生了变化

扩展功能

R2006a之前介绍