Main Content

串联结构体

此示例演示了如何使用 [] 运算符串联结构体数组。要串联结构体,他们必须具有相同的字段集,但这些字段无需包含相同的大小或数据类型。

创建标量 (1×1) 结构体数组 struct1struct2,并且每个数组都具有字段 ab

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 数值数组一样,串联 struct1struct2 也会创建一个 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

相关主题