主要内容

结构体

结构数组

描述

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

创建

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

s.a. = 1;= {mit获得“一个”“B”“C”
S =结构体字段:a: 1 b: {' a ' ' b ' 'C'}

字段名可以包含ASCII字母(a - z, a - z)、数字(0-9)和下划线,且必须以字母开头。字段名的最大长度为namelengthmax

属性也可以创建结构数组结构体函数,下面描述。您可以同时指定多个字段,或者创建一个非标量结构数组。

描述

s = struct.创建一个没有字段的标量(1-by-1)结构。

例子

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

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

  • 如果价值是不是非标量单元格数组年代结构数组是否具有相同的维度价值.的每个元素年代的对应元素价值.例如,s =结构(“x”,{' a ', ' b '})返回(1)。x = a(2)。x = ' b '

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

例子

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

  • 如果没有价值输入是单元格数组价值单元格数组的输入是标量年代是一个标量结构。

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

    对于任何价值即标量单元格数组或任何其他数据类型的数组,结构体插入价值在相关领域的所有要素年代.例如,s =结构(“x”,{“a”、“b”},' y ', ' c ')返回(1)。x = a(2)。x = ' b '(1)。y = ' c ',s(2).Y ='C'

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

s =结构([])创建一个空(0-by-0)结构,没有字段。

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

输入参数

全部展开

字段名,指定为字符向量或字符串标量。

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

如果有任何价值输入是一个空单元格数组,{},然后输出是空结构阵列。指定单个空字段,使用[]

结构体的属性obj到一个新的标量结构的字段。

结构体函数不会从大多数基本数据类型创建结构。例如,如果obj字符数据类型,然后结构体发出错误消息。然而,结构体以结构形式返回表或时间表的属性。看到基础Matlab课程获取基本数据类型列表。

例子

全部折叠

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

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

数据。x = linspace(0, 2 *π);数据。y =罪(data.x);数据。title =“y = sin (x)”
data =结构体字段:X:[0 0.0635 0.1269 0.1904 0.2539 0.3173 0.3808 0.4443 0.5077…]y:[0 0.0634 0.1266 0.1893 0.2511 0.3120 0.3717 0.4298 0.4862…]title: 'y = sin(x)'

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

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

图中包含一个轴对象。标题为y = sin(x)的axes对象包含一个类型为line的对象。

创建包含单个字段的非卡拉尔结构。

场=“f”;值= {“一些文本”;(10年,20年,30);魔法(5)};s =结构(字段,值)
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 (10);field2 =“f2”;value2 = {“一个”“b”};field3 ='f3';Value3 = {pi, pi.^2};field4 ='f4';value4 = {“四”};s =结构(field1 value1, field2, value2, field3, value3, field4, value4)
s =1×2带有字段的结构数组:F1 f2 f3 f4

的单元格数组value2value3是1-by-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] f2: 'a' f3: 3.1416 f4: '第四'
(2)
ans =结构体字段:F1: [0 0 0 0 0 0 0 0 0] f2: 'b' f3: 9.8696 f4: '第四'

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

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

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

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

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

s =结构(“一个”{},“b”{},“c”{})
S = 0x0 null struct array with fields: a b c

为空结构中的字段分配值。

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

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

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

查看的字段名称a.b

字段名(a.b)
ans =2 x1细胞{' c '} {' d '}

兼容性的考虑

全部展开

行为在R2019a中改变

扩展功能

之前介绍过的R2006a