6.1.2 Structure Arrays

Last-modified: 2025-03-01 (土) 20:54:48

6.1.2 構造体配列

構造体配列は構造体の特定のインスタンスで、構造体の各フィールドはセル配列で表されます。これらのセル配列はそれぞれ同じ次元を持ちます。概念的には、構造体配列は同一のフィールドを持つ構造体の配列とも考えられます。構造体配列の作成例を以下に示します。

x(1).a = "string1";
x(2).a = "string2";
x(1).b = 1;
x(2).b = 2;

これは、2 つのフィールドを持つ 1 行 2 列の構造体配列を作成します。構造体配列を作成する別の方法は、struct関数を使用することです (構造体の作成を参照)。以前と同様に、構造体配列の値を出力するには、その名前を入力します。

x
 ⇒ x =
       {
         1x2 struct array containing the fields:
           a
           b
       }

構造体配列の個々の要素は、 のように変数にインデックスを付けることで返されx(1)、次の 2 つのフィールドを持つ構造体が返されます。

x(1)
    ⇒ ans =
       {
         a = string1
         b =  1
       }

さらに、構造体配列は、自身のフィールド名の 1 つでインデックス付けされている場合、 フィールド値のコンマ区切りリストを返すことができます (コンマ区切りリストを参照)。例:

x.a
    ⇒
       ans = string1
       ans = string2

割り当ての左側にこのコンマ区切りのリストを使用する別の例を次に示します。

[x.a] = deal ("new string1", "new string2");
 x(1).a
     ⇒ ans = new string1
 x(2).a
    ⇒ ans = new string2

数値配列の場合と同様に、ベクトルをインデックスとして使用することも可能です (インデックス式を参照)。

x(3:4) = x(1:2);
[x([1,3]).a] = deal ("other string1", "other string2");
x.a
    ⇒
       ans = other string1
       ans = new string2
       ans = other string2
       ans = new string2

この関数はsize構造体のサイズを返します。上記の例では

size (x)
    ⇒ ans =
        1   4

数値配列と同様に、構造体配列の要素を空の行列に割り当てることで、構造体配列から要素を削除できます。たとえば、

in = struct ("call1", {x, Inf, "last"},
                 "call2", {x, Inf, "first"})
    ⇒ in =
       {
         1x3 struct array containing the fields:
           call1
           call2
       }
in(1) = [];
in.call1
    ⇒
      ans = Inf
      ans = last