Main Content

timetable のコード生成

timetable データ型は、タイムスタンプ付きの行をもつ表形式データに適したデータ型です。timetable は table と同様に、行と、列方向の変数で構成されます。timetable 内の各変数は異なるデータ型および異なるサイズをもつことができますが、各変数には、行数が同じでなければなければならないという制限があります。

timetable の "行時間" は、行にラベルを付ける時間値です。行時間と変数によって、timetable にインデックスを作成できます。timetable にインデックスを作成するには、小かっこ () を使用してサブテーブルを返すか、または中かっこ {} を使用して内容を抽出します。変数と行時間のベクトルを名前で参照できます。詳細については、timetableを参照してください。

コード生成で timetable を使用する場合は、次の制限に従ってください。

コード生成用の timetable の定義

コード生成用に、関数 timetable を使用します。たとえば、MATLAB® 関数への入力引数が、同じ行数 (AB および C)、行時間 (D) が含まれる datetime または duration ベクトル、変数名 (vnames) が含まれる cell 配列をもつ 3 つの配列であるとします。これらの配列を含む timetable を timetable 変数として作成できます。

function TT = foo(A,B,C,D,vnames) %#codegen
    TT = table(A,B,C,'RowTimes',D,'VariableNames',vnames);
end

配列と table を timetable に変換するには、関数 array2timetable と関数 table2timetable を使用します。たとえば、入力 MN 列の行列を timetable に変換でき、行列の各列は timetable 内の変数になります。duration ベクトルを使用して行時間を代入します。

function TT = foo(A,D,vnames) %#codegen
    TT = array2timetable(A,'RowTimes',D,'VariableNames',vnames);
end

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

行時間には、datetime または duration のいずれかのデータ型を使用できます。

timetable で実行可能な演算

コード生成では、次の表に示す timetable に対する演算に制限されます。

演算メモ

代入演算子: =

TT = timetable(A,B,C,'RowTimes',D,'VariableNames',vnames);
TT{:,1} = X;

コード生成では次に対する代入演算子 = の使用はサポートされません。

  • 変数または行の削除。

  • 変数または行の追加。

インデックス演算

D = seconds(1:10);
TT = timetable(A,B,C,'RowTimes',D,'VariableNames',vnames);
TT(seconds(3:7),1:3);

コード生成では、位置、変数または行時間によるインデックス付け、および論理インデックス付けがサポートされます。また、関数 timerange または関数 withtol を使用して作成したオブジェクトでインデックスを付けることもできます。

コード生成では以下がサポートされます。

  • 小かっこ () による timetable へのインデックス付け。

  • 中かっこ {} によるコンテンツへのインデックス付け。

  • timetable 変数にアクセスするドット表記。

連結

TT1 = timetable(A,B,C,'RowTimes',D1,'VariableNames',vnames);
TT2 = timetable(D,E,F,'RowTimes',D2,'VariableNames',vnames);
TT = [TT1 ; TT2];

コード生成では timetable の連結がサポートされます。

  • 垂直連結の場合、timetable は同じ名前を同じ順序でもつ変数をもたなければなりません。

  • 水平連結の場合、timetable は同じ行数をもたなければなりません。また、同じ行時間を同じ順序でもたなければなりません。

timetable をサポートする MATLAB ツールボックス関数

コード生成では、次の MATLAB ツールボックス関数で timetable を使用できます。

関連するトピック