入れ子にされた構造体内のデータへのアクセス
この例では、別の構造体内で入れ子にされた構造体にインデックスを付ける方法を示します。特定のフィールドのデータにアクセスするための一般的な構文は次のとおりです。
structName(index).nestedStructName(index).fieldName(indices)
構造体がスカラー (1 行 1 列) である場合は、1 つの要素を参照するためにインデックスを含める必要はありません。たとえば、スカラー構造体 s
を作成します。ここで、フィールド n
はフィールド a
、b
、および c
で入れ子にされたスカラー構造体です。
s.n.a = ones(3); s.n.b = eye(4); s.n.c = magic(5);
次のようにフィールド b
の第 3 行にアクセスします。
third_row_b = s.n.b(3,:)
変数 third_row_b
は eye(4)
の第 3 行を含んでいます。
third_row_b = 0 0 1 0
s
と n
の両方が非スカラー (1 行 2 列) であるように、s
を展開します。
s(1).n(2).a = 2*ones(3); s(1).n(2).b = 2*eye(4); s(1).n(2).c = 2*magic(5); s(2).n(1).a = '1a'; s(2).n(2).a = '2a'; s(2).n(1).b = '1b'; s(2).n(2).b = '2b'; s(2).n(1).c = '1c'; s(2).n(2).c = '2c';
これで、構造体 s
は次の図に示すようなデータを含みます。
次のように、s
の第 1 の要素における n
の第 2 の要素のフィールド b
内の配列の部分にアクセスします。
part_two_eye = s(1).n(2).b(1:2,1:2)
これにより、2*eye(4)
の 2 行 2 列の左上隅が返されます。
part_two_eye = 2 0 0 2