構造体の連結
この例では、[] 演算子を使用して構造体配列に連結する方法を示します。構造体を連結するには、構造体には同じセットのフィールドが必要ですが、フィールドが同じサイズまたは型のデータを含む必要はありません。
フィールド a と b のそれぞれにスカラー (1 行 1 列) 構造体配列 struct1 と struct2 を作成します。
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: [5×5 double]
[1,2] のように 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 の両方が 2 列をもっているので、セミコロン区切りで垂直にそれらを連結できます。
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