Main Content

構造体の連結

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

フィールド ab のそれぞれにスカラー (1 行 1 列) 構造体配列 struct1struct2 を作成します。

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 列の数値配列が作成されるのと同様に、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 の両方が 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

関連するトピック