構造体の連結
この例では、[]
演算子を使用して構造体配列に連結する方法を示します。構造体を連結するには、構造体には同じセットのフィールドが必要ですが、フィールドが同じサイズまたは型のデータを含む必要はありません。
フィールド 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: [5x5 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