串联结构体
此示例演示了如何使用 []
运算符串联结构体数组。要串联结构体,他们必须具有相同的字段集,但这些字段无需包含相同的大小或数据类型。
创建标量 (1×1) 结构体数组 struct1
和 struct2
,并且每个数组都具有字段 a
和 b
:
struct1.a = 'first'; struct1.b = [1,2,3]; struct2.a = 'second'; struct2.b = rand(5); struct1,struct2
struct1 = struct with fields:
a: 'first'
b: [1 2 3]
struct2 = struct with fields:
a: 'second'
b: [5x5 double]
正如串联两个标量值(如 [1,2]
)会创建一个 1×2 数值数组一样,串联 struct1
和 struct2
也会创建一个 1×2 结构体数组。
combined = [struct1,struct2]
combined=1×2 struct array with fields:
a
b
当要访问特定字段的内容时,请指定数组中的结构体的索引。例如,访问第一个结构体的字段 a
。
combined(1).a
ans = 'first'
串联也适用于非标量结构体数组。例如,创建一个名为 new
的 2×2 结构体数组。由于 1×2 结构体 combined
和 2×2 结构体 new
都包含两列,因此您可以使用分号分隔符垂直串联它们。
new(1,1).a = 1; new(1,1).b = 10; new(1,2).a = 2; new(1,2).b = 20; new(2,1).a = 3; new(2,1).b = 30; new(2,2).a = 4; new(2,2).b = 40; larger = [combined; new]
larger=3×2 struct array with fields:
a
b
访问结构体 larger(2,1)
的字段 a
。它与 new(1,1).a
包含相同的值。
larger(2,1).a
ans = 1