Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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

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

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

  • timetable の最初の次元の名前は 'Time' で、変更できません。最初の次元の名前は行時間のベクトルの名前でもあり、ドット表記を使用して参照できます。

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

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

  • timetable 変数の名前は、有効な MATLAB 識別子である必要はありません。名前は ASCII 文字で構成されなければなりませんが、任意の ASCII 文字 (コンマ、ダッシュ、空白文字など) を含めることができます。

  • timetable の作成後に、VariableNames プロパティ、DimensionNames プロパティまたは UserData プロパティを変更することはできません。

    timetable を作成するときに、'VariableNames''RowTimes' の入力引数を指定して、これらの名前をもつプロパティを設定できます。

  • 名前と値のペアの引数 'SampleRate''StartTime' または 'TimeStep' を指定するときに規則的な timetable を作成するには、最初に関数 coder.Constant を使用して値を定数にします。それらを定数にしない場合、行時間は不規則であると見なされます。

    また、不規則な timetable を作成する場合、サンプル レートまたはタイム ステップを設定しても不規則なままになります。

  • 規則的な timetable を作成し、不規則な行時間を指定しようとすると、エラーが発生します。

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

  • duration 値、または関数 timerange または withtol によって作成されたオブジェクトを使用して timetable にインデックスを付ける場合、出力は可変の行数をもつ非定数になります。

  • duration 値、または関数 timerange または withtol によって作成されたオブジェクトを使用して規則的な timetable にインデックスを付ける場合、出力は不規則であると見なされます。

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

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

    function TT = foo() %#codegen
        TT = timetable((1:3)',(1:3)','RowTimes',seconds([0,5,10]),...
                       'VariableNames',{'Var1','Var2'});
        TT{4,:} = [5,5];
    end
    

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

  • 割り当て内の新しい行時間を使用して新しい行を追加することはできません。たとえば、この呼び出しは、数値インデックスではなく新しい行時間を使用して新しい行を追加するため、エラーは発生しませんが、新しい行が追加されません。

    function TT = foo() %#codegen
        TT = timetable((1:3)',(1:3)','RowTimes',seconds([0,5,10]),...
                       'VariableNames',{'Var1','Var2'});
        TT{seconds(15),:} = [5,5];
    end
    
  • timetable を事前に割り当てる場合、'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)

    'datetime'

    NaT datetime 値

    'duration'

    0 秒 (duration 値として)

    'cellstr'

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

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

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

  • timetable を水平方向に連結する場合、それらの行時間は同じで、同じ順序でなければなりません。MATLAB では、行時間は同じでなければなりませんが、timetable では異なる順序にすることができます。

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

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

  • 集合メンバー関数 intersectsetdiffsetxor および union は、すべての場合において並べ替えられていない timetable をサポートします。'stable' オプションを指定する必要はありません。

  • 関数 convertvars を使用する場合:

    • 関数ハンドルはサポートされません。

    • 2 番目および 3 番目の入力引数 (vars および dataType) は定数でなければなりません。

    • dataType'char' として指定できません。

  • 関数 movevars を使用する場合、入力引数 vars には重複した変数名を含めることができません。

  • 関数 isregular を使用する場合:

    • coder.Constant を使用して入力引数 timeComponent を定数にします。

    • 入力引数 timeComponent はカレンダー単位にできません。指定する場合、その値は 'time' でなければなりません。

  • 関数 retime または関数 synchronize を使用する場合:

    • 出力 timetable の行時間は、一定のタイム ステップをもつ行時間に同期された場合でも、常に不規則とみなされます。

    • 'makima' 内挿法はサポートされていません。

    • 入力 timetable の VariableContinuity プロパティが定数でない場合、この関数はそれらを無視します。

    • 'weekly''monthly'、および 'quarterly' タイム ステップはサポートされていません。

      • 入力 timetable が datetime の値である行時間をもつ場合、'daily' および 'yearly' タイム ステップもサポートされません。

  • 関数 timerange を使用する場合、入力引数 unitOfTime はサポートされていません。

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

参考

| |

関連するトピック