最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

コード生成における table の制限事項

コード生成を目的とする MATLAB® コードで table を作成するときは、関数 array2tablecell2tablestruct2table または table を使用して作成しなければなりません。詳細については、tableを参照してください。

コード生成では、table に対して以下の制限があります。

  • 関数 tablearray2table または cell2table を使用して入力配列から table を作成する場合、'VariableNames' の名前と値のペアの引数を使用して変数名を指定しなければなりません。

    関数 table'Size' の名前と値のペアの引数を使用して table を事前に割り当てる場合、'VariableNames' 引数を指定する必要はありません。

  • table 変数名は有効な MATLAB 識別子でなければなりません。変数名は文字で開始しなければならず、含めることができるのは文字、数字、アンダースコアのみです。

  • 作成した後に table の VariableNamesRowNamesDimensionNames または UserData プロパティを変更することはできません。

    table の作成時に 'VariableNames' 入力引数と 'RowNames' 入力引数を指定できます。これらの入力引数はプロパティを指定します。

  • 変数名を使用して table にインデックスを付けるには、最初に関数 coder.Constant を使用して table を定数にします。

    既定の設定で、生成されたコードに入力引数として渡す table は定数ではありません。それらの変数名と行名も定数ではありません。table が定数でない場合、変数名または行名を使用してインデックス付けするとエラーが発生します。定数でなくても、数値インデックスまたは logical インデックスを使用して table にインデックスを付けることができます。

  • table インデックスを入力引数として生成されたコードに渡すには、最初に関数 coder.Constant を使用してインデックスを定数にします。table インデックスが定数でない場合、変数にインデックス付けするとエラーが発生します。

  • カスタム メタデータは table に追加できません。関数 addprop と関数 rmprop はサポートされません。

  • 代入による table のサイズ変更はできません。たとえば、新しい行を追加するとエラーが発生します。

    function T = foo() %#codegen
        T = table((1:3)',(1:3)','VariableNames',{'Var1','Var2'});
        T(4,2) = 5;
    end
    

    行または変数を削除しても、エラーが発生します。

  • table を事前に割り当てる場合、'VariableTypes' の名前と値のペアの引数を使用して以下のデータ型のみを指定できます。

    データ型名

    各要素の初期値

    'double''single'

    倍精度または単精度の 0

    'doublenan', 'doubleNaN''singlenan', 'singleNaN'

    倍精度または単精度の NaN

    'int8''int16''int32''int64'

    符号付き 8、16、32、64 ビットの整数 0

    'uint8''uint16''uint32''uint64'

    符号なし 8、16、32、64 ビットの整数 0

    'logical'

    0 (false)

    'duration'

    0 秒 (duration 値として)

    'cellstr'

    {''} (0 行 0 列の文字配列を含む cell)

    データ型として 'char' を指定した場合、table は対応する変数を文字配列ではなく文字ベクトルの cell 配列として事前に割り当てます。文字配列である table 変数の作成は回避することをお勧めします。

  • table を垂直方向に連結する場合、同じ変数名を同じ順序でもたなければなりません。MATLAB では、変数名は同じでなければなりませんが、異なる順序にすることができます。

  • table を水平方向に連結し、table が行名をもつ場合、同じ行名を同じ順序でもたなければなりません。MATLAB では、行名は同じでなければなりませんが、異なる順序にすることができます。

  • 2 つの table に N 次元 cell 配列の変数がある場合、これらの table を垂直方向に連結することはできません。

  • この演算は水平連結であるため、中かっこを使用して N 次元 cell 配列である複数の table 変数からデータを抽出することはできません。

クラスに適用される制限は table にも適用されます。詳細については、コード生成のための MATLAB クラスの定義を参照してください。

参考

| | |

関連するトピック