メインコンテンツ

struct2table

構造体配列のテーブルへの変換

説明

T = struct2table(S) は、構造体配列をテーブルに変換します。入力構造体の各フィールドは、出力テーブルの変数になります。

  • 入力が n 個のフィールドをもつスカラー構造体で、それらすべてのフィールドが m 行をもつ場合、出力は mn 列のテーブルになります。

  • 入力が n 個のフィールドをもつ m1 列または 1m 列の構造体配列である場合、出力は mn 列のテーブルになります。

T = struct2table(S,Name,Value) は、1 つ以上の Name,Value 引数で指定された追加のオプションを使用して、構造体配列からテーブルを作成します。

たとえば、テーブルに含める行名を指定できます。

すべて折りたたむ

既定のオプションを使用してスカラー構造体をテーブルに変換します。

構造体配列 S を作成します。

S.Name = ["Chang";"Brown";"Ruiz"];
S.Smoker = ["Y";"N";"Y"];
S.SystolicBP = [124;122;130];
S.DiastolicBP = [93;80;92];

スカラー構造体配列 S には 4 つのフィールドがあり、各フィールドが 3 つの行で構成されています。

構造体配列をテーブルに変換します。

T = struct2table(S)
T=3×4 table
     Name      Smoker    SystolicBP    DiastolicBP
    _______    ______    __________    ___________

    "Chang"     "Y"         124            93     
    "Brown"     "N"         122            80     
    "Ruiz"      "Y"         130            92     

S の構造体のフィールド名が、出力 table では変数名になります。T のサイズは 3 行 4 列です。

table プロパティ T.Properties.RowNames を変更してから、変数 Name を削除して、 Name を変数名から行名に変更します。

T.Properties.RowNames = T.Name;
T.Name = [];

T
T=3×3 table
             Smoker    SystolicBP    DiastolicBP
             ______    __________    ___________

    Chang     "Y"         124            93     
    Brown     "N"         122            80     
    Ruiz      "Y"         130            92     

非スカラー構造体配列 S を作成します。

S(1,1).Name = "Chang";
S(1,1).Smoker = "Y";
S(1,1).SystolicBP = 124;
S(1,1).DiastolicBP = 93;

S(2,1).Name = "Brown";
S(2,1).Smoker = "N";
S(2,1).SystolicBP = 122;
S(2,1).DiastolicBP = 80;

S(3,1).Name = "Ruiz";
S(3,1).Smoker = "Y";
S(3,1).SystolicBP = 130;
S(3,1).DiastolicBP = 92;

S
S=3×1 struct array with fields:
    Name
    Smoker
    SystolicBP
    DiastolicBP

S は、フィールドが 4 個ある 3 行 1 列の構造体配列です。

構造体配列をテーブルに変換します。

T = struct2table(S)
T=3×4 table
     Name      Smoker    SystolicBP    DiastolicBP
    _______    ______    __________    ___________

    "Chang"     "Y"         124            93     
    "Brown"     "N"         122            80     
    "Ruiz"      "Y"         130            92     

S の構造体のフィールド名が、出力 table では変数名になります。T のサイズは 3 行 4 列です。

"AsArray",true を使用して、フィールドの行数が異なるスカラー構造体から table を作成します。

namebilling および test という名前のフィールドをもつスカラー構造体 S を作成します。

S.name = "John Doe";
S.billing = 127.00;
S.test = [79, 75, 73; 180, 178, 177.5; 220, 210, 205]
S = struct with fields:
       name: "John Doe"
    billing: 127
       test: [3×3 double]

これらのフィールドは行数が異なります。そのため、既定で "AsArray",false を使用する struct2table(S) を使用することはできません。

スカラー構造体を配列として処理し、テーブルに変換します。

T = struct2table(S,"AsArray",true)
T=1×3 table
       name       billing        test    
    __________    _______    ____________

    "John Doe"      127      {3×3 double}

T には 1 つの行が含まれています。

入力引数

すべて折りたたむ

入力配列。構造体として指定します。

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: "RowNames",["row1","row2","row3"] は、行名 row1row2 および row3 を table T に使用します。

行名。要素が空ではない一意の文字ベクトルの cell 配列または string 配列として指定します。行名の数は、入力配列の行数と等しくなければなりません。

行名には、空白や非 ASCII 文字を含む任意の Unicode® 文字を使用できます。ただし、':' は除きます。

先頭または末尾に空白文字を含む行名を指定すると、struct2table は行名からそれらを削除します。

R2021a 以降

次元名。要素が空ではない一意の文字ベクトルの 2 要素 cell 配列または 2 要素 string 配列として指定します。

次元名には、スペース、非 ASCII 文字を含む任意の Unicode 文字を使用できます。ただし、次元名は、table 変数名や予約名 'Properties''RowNames''VariableNames'、または ':' と同じであってはなりません。

代わりに、すべてのリリースで、table の DimensionNames プロパティを設定することで次元名を指定できます。

入力を構造体配列として扱うためのフラグ。数値または logical 1 (true) または 0 (false) として指定します。

true

入力が "非スカラー" の構造体配列の場合の既定値

構造体配列を、構造体ごとに 1 つの行をもち、構造体配列のフィールドごとに 1 つの変数をもつテーブルに変換します。フィールドはサイズが異なっていてもかまいません。

フィールド S(1:m).fieldname の値が、

  • 互換性のあるサイズとデータ型であり、各値が 1 つの行をもつ場合、対応する table 変数は "同種配列" となります。

    例:

    S(1).a = [1 2]
    S(2).a = [3 4]
    S(1).b = 5
    S(2).b = 6
    T = struct2table(S)
    
    T =
      2×2 table
          a       b
        ______    _
        1    2    5
        3    4    6
    
  • 異なるサイズで、互換性のないデータ型であるか、または値が複数の行をもつ場合、対応する table 変数は "cell 配列" となります。

    例:

    S(1).a = [1 2]
    S(2).a = [3 4 5 6]
    S(1).b = 7
    S(2).b = 8
    T = struct2table(S)
    
    T =
      2×2 table
             a         b
        ___________    _
        {[    1 2]}    7
        {[3 4 5 6]}    8
    

false

入力が "スカラー" 構造体の場合の既定値

n 個のフィールドをもつスカラー構造体を mn 列のテーブルに変換します。各フィールドには、m 行が含まれていなければなりません。

例:

S.a = [1;2;3]
S.b = [4 5;6 7;8 9]
T = struct2table(S)
T =
  3×2 table
    a      b   
    _    ______
    1    4    5
    2    6    7
    3    8    9

出力引数

すべて折りたたむ

table として返される出力テーブル。テーブルには、説明、変数単位、変数名、行名などのメタデータを保存できます。詳細については、table のプロパティの節を参照してください。

拡張機能

すべて展開する

スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。

バージョン履歴

R2013b で導入