ドキュメンテーション

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

timetable

タイムスタンプ付きの行と、異なる型の変数をもつ timetable 配列

説明

timetable は table 型の一種で、各行に時刻が関連付けられます。table と同様に、timetable は行数が同じであれば、データ型やサイズが異なる列方向データ変数を格納できます。また、timetable には、1 つ以上の timetable でタイムスタンプ付きデータを整列させ、結合し、計算するための、時間に特化した関数が用意されています。

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

作成

table または配列から timetable を作成するには、関数 table2timetable または array2timetable を使用します。あるいは、以下に説明する関数 timetable を使用することもできます。

関数 timetable を使用する場合、行時間のベクトルを指定するか、サンプルレートまたはタイム ステップを使用して行時間を作成できます。また、値を後で代入する変数用にスペースを事前に割り当てた timetable を作成することもできます。

説明

TT = timetable(rowTimes,var1,...,varN) は、入力データ変数 var1,...,varN と時間ベクトル rowTimes から timetable を作成します。行数が同じである限り、データ変数には異なるサイズとデータ型を使用できます。rowTimes も、同じ行数をもつ datetime または duration ベクトルでなければなりません。

TT = timetable(var1,...,varN,'RowTimes',rowTimes) は、rowTimesTT の行時間のソースとして指定します。この構文を使用する場合、TT の行時間ベクトルの名前は必ず Time となります。これは、rowTimes が別の名前をもつワークスペース変数であっても同様です。

TT = timetable(var1,...,varN,'SampleRate',Fs) は、サンプルレート Fs を使用して timetable を作成し、等間隔の行時間を計算します。Fs は秒あたりのサンプル数 (Hz) を指定する正の数値スカラーです。最初の行時間はゼロ秒です。

TT = timetable(var1,...,varN,'TimeStep',dt) はタイム ステップ dt を使用して timetable を作成し、等間隔の行時間を計算します。dt は連続する行時間の間隔を指定する期間またはカレンダー期間の値です。最初の行時間はゼロ秒です。

TT = timetable('Size',sz,'VariableTypes',varTypes,'RowTimes',rowTimes) は、timetable を作成し、指定のデータ型をもつ変数用にスペースを事前に割り当てます。sz は 2 要素の数値配列で、sz[1] は行数を指定し、sz[2] は変数の数を指定します。varTypes はデータ型を指定する文字ベクトルの cell 配列です。rowTimes の時間の数は sz[1] と等しくなければなりません。

TT = timetable('Size',sz,'VariableTypes',varTypes,'SampleRate',Fs) は、変数にデータ型を事前に割り当て、サンプルレート Fs を使用して行時間を追加します。最初の行時間はゼロ秒です。

TT = timetable('Size',sz,'VariableTypes',varTypes,'TimeStep',dt) は、変数にデータ型を事前に割り当て、タイム ステップ dt を使用して行時間を追加します。最初の行時間はゼロ秒です。

TT = timetable(___,Name,Value) は、名前と値のペアの引数を 1 つ以上使用して追加の入力引数を指定します。たとえば、名前と値のペア 'VariableNames' を使用して変数名を指定することができます。また、名前と値のペア 'StartTime' をサンプルレートまたはタイム ステップと共に使用して、開始時間を指定することもできます。この構文では、前述の構文の入力引数のいずれかを使用できます。

入力引数

すべて展開する

入力変数。同じ数の行をもつ配列として指定します。行数が同じである限り、入力変数には異なるサイズとデータ型を使用できます。

一般的な入力変数は、数値配列、logical 配列、string 配列、構造体配列、および cell 配列です。

入力変数には、配列のオブジェクトを使用することもできます。この配列は var(index1,...,indexN) の形式のインデックスをサポートしていなければなりません。index1 は変数 var の行に対応する数値または logical ベクトルです。さらにこの配列は、vertcat メソッドと、dim 引数をもつ size メソッドの両方を実装していなければなりません。

timetable の行に関連付けられた時間。datetime ベクトルまたは duration ベクトルとして指定します。各時間は、出力 timetable TT の行にラベルを付けます。rowTimes の時間値は、一意であったり、並べ替えられていたり、規則的な値である必要はありません。

データ型: datetime | duration

事前に割り当てられた timetable のサイズ。2 要素の数値ベクトルとして指定します。sz の最初の要素は行数を指定し、2 番目の要素は timetable 変数の数を指定します。

事前に割り当てられた変数のデータ型。文字ベクトルの cell 配列または string 配列として指定します。varTypes で指定する型の数は、sz の 2 番目の要素で指定する変数の数と等しくなければなりません。

varTypes には、次の表に示す名前を含む、任意のデータ型の名前を格納できます。

データ型名

各要素の初期値

'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)

'categorical'

<undefined> categorical 値

'datetime'

NaT datetime 値

'duration'

0 秒 (duration 値として)

'calendarDuration'

0 日 (カレンダー期間値として)

'string'

"" (文字を含まない 1 行 1 列の string)

'cellstr'

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

'cell'

{[]} (0 行 0 列の double 配列を含む cell)

'struct'

フィールドをもたないスカラー構造体

'table'

変数をもたない table

他すべてのデータ型で、初期値は、配列の未代入の要素を "埋める" ためにその型またはクラスで使用される値となります。

データ型として 'char' を指定した場合、timetable は対応する変数を文字配列ではなく文字ベクトルの cell 配列として事前に割り当てます。文字配列である table 変数または timetable 変数は作成しないことをお勧めします。table または timetable 内のテキスト データを扱う際には、string 配列または categorical 配列を使用することを検討してください。

サンプルレート。正の数値スカラーとして指定します。Fs は 1 秒あたりのサンプル数 (Hz) を指定します。

タイム ステップ。duration スカラーとして指定します。

dt をカレンダー期間として指定し、さらに名前と値のペアの引数 'StartTime' を指定した場合、'StartTime' の値は datetime スカラーでなければなりません。

データ型: duration | calendarDuration

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: TT = timetable(rowTimes,T,W,'VariableNames',{'Temperature','WindSpeed'}) は、入力配列 T および W から timetable を作成し、対応する timetable 変数の名前を Temperature および WindSpeed に設定します。

変数名。'VariableNames' と、文字ベクトルの cell 配列または string 配列で構成されるコンマ区切りのペアとして指定します。配列内の名前の数は、table 変数の数と等しくなければなりません。

開始時間。'StartTime' と、datetime スカラーまたは duration スカラーで構成されるコンマ区切りのペアとして指定します。開始時間は、timetable の最初の行の行時間でもあります。

'StartTime' を指定できるのは、名前と値のペアの引数 'SampleRate' または 'TimeStep' も指定する場合のみです。

  • 開始時間が datetime 値の場合、TT の行時間は datetime 値になる。

  • 開始時間が duration の場合、行時間は duration になる。

  • タイム ステップ dt がカレンダー期間値の場合、開始時間は datetime 値でなければならない。

データ型: datetime | duration

プロパティ

すべて展開する

timetable メタデータ プロパティにアクセス

timetable に含まれるメタデータ プロパティは、timetable、その行時間、およびその変数を説明しています。これらのプロパティにアクセスするには、構文 timetableName.Properties.PropertyName を使用します。ここで、PropertyName はプロパティの名前です。たとえば、timetable TT の変数の名前には、TT.Properties.VariableNames プロパティによってアクセスできます。

構文 timetableName.Properties を使用すると、メタデータ プロパティの概要を返すことができます。

timetable では、ドット構文を使用して timetable のデータに直接アクセスできるため、Properties プロパティによってメタデータにアクセスすることができます。たとえば、timetable TTVar1 という変数がある場合、構文 TT.Var1 を使用してこの変数にアクセスし、配列内の値にアクセスすることができます。

timetable メタデータ

次元名。文字ベクトルの 2 要素 cell 配列または 2 要素 string 配列として指定します。

2 つの次元名を使用して timetable のデータにアクセスすることができます。ドット構文と最初の次元名を使用すると、行時間にベクトルとしてアクセスすることができます。ドット構文と 2 番目の次元名を使用する場合、{:,:} 構文を使用して timetable のインデックスを指定したかのように、すべての変数のデータが 1 つの配列に連結されます。

string 配列を使用してこのプロパティを指定した場合、文字ベクトルの cell 配列に変換されて保存されます。

timetable を作成し、その次元名を表示します。次元名とドット構文を使用して、行時間とデータにアクセスすることができます。

TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ...
               [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3]);
TT.Properties.DimensionNames
ans = 1x2 cell array
    {'Time'}    {'Variables'}

最初の次元名を使用して行時間にアクセスします。

TT.Time
ans = 3x1 datetime array
   18-Dec-2015
   19-Dec-2015
   20-Dec-2015

2 番目の次元名を使用してデータにアクセスします。この構文は TT{:,:,} と等価です。

TT.Variables
ans = 3×3

   37.3000   30.1000   13.4000
   39.1000   30.0300    6.5000
   42.3000   29.9000    7.3000

Properties.DimensionNames プロパティを使用して、次元の名前を変更します。次元名を変更したら、構文 TT.Date および TT.WeatherData を使用して、行時間とデータにそれぞれアクセスできます。

TT.Properties.DimensionNames = {'Date','WeatherData'};
TT.Properties
ans = 
  TimetableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Date'  'WeatherData'}
           VariableNames: {'Var1'  'Var2'  'Var3'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowTimes: [3x1 datetime]
               StartTime: 18-Dec-2015
              SampleRate: NaN
                TimeStep: 1d
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

timetable の説明。文字ベクトルまたは string スカラーとして指定します。この説明は、関数 summary を使用すると表示されます。

string スカラーを使用してこのプロパティを指定した場合、文字ベクトルに変換されて保存されます。

timetable を作成します。timetable の変数名と説明を変更します。結果の概要を表示します。

TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ...
               [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3]);
TT.Properties.VariableNames = {'Temp','Pressure','WindSpeed'};
TT.Properties.Description = 'Weather Data from December 2015';
summary(TT)
Description:  Weather Data from December 2015

RowTimes:

    Time: 3x1 datetime
        Values:
            Min           18-Dec-2015 
            Median        19-Dec-2015 
            Max           20-Dec-2015 
            TimeStep      24:00:00    

Variables:

    Temp: 3x1 double

        Values:

            Min        37.3 
            Median     39.1 
            Max        42.3 

    Pressure: 3x1 double

        Values:

            Min          29.9   
            Median      30.03   
            Max          30.1   

    WindSpeed: 3x1 double

        Values:

            Min           6.5    
            Median        7.3    
            Max          13.4    

追加の timetable 情報。配列として指定します。この構文を使用すると、任意の種類のデータを timetable に追加することができます。

timetable を作成します。変数名を変更します。timetable に関連するユーザー データの一部として無名関数を付加します。

TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ...
               [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3]);
TT.Properties.VariableNames = {'Temp','Pressure','WindSpeed'};
Fahrenheit2Celsius = @(x) (5.0/9.0).*(x - 32);
TT.Properties.UserData = Fahrenheit2Celsius;
TT.Properties
ans = 
  TimetableProperties with properties:

             Description: ''
                UserData: @(x)(5.0/9.0).*(x-32)
          DimensionNames: {'Time'  'Variables'}
           VariableNames: {'Temp'  'Pressure'  'WindSpeed'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowTimes: [3x1 datetime]
               StartTime: 18-Dec-2015
              SampleRate: NaN
                TimeStep: 1d
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

行時間メタデータ

行時間。datetime ベクトルまたは duration ベクトルとして指定します。timetable のすべての行に行時間がなければなりません。ただし、timetable には、重複した行時間、順序が正しくない行時間、あるいは NaT または NaN 値の行時間を使用できます。

行時間は、timetable を表示すると表示されます。また、行時間を小かっこまたは中かっこで囲んで timetable データにアクセスすることもできます。

行時間にアクセスするもうひとつの方法では、ドット構文と、table の最初の次元の名前を使用します。

timetable を作成します。次に、Properties.RowTimes プロパティを使用して行時間を置き換えます。

TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ...
               [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3])
TT=3×4 timetable
       Time        Var1    Var2     Var3
    ___________    ____    _____    ____

    18-Dec-2015    37.3     30.1    13.4
    19-Dec-2015    39.1    30.03     6.5
    20-Dec-2015    42.3     29.9     7.3

Dates = datetime(2017,1,1:3);
TT.Properties.RowTimes = Dates
TT=3×4 timetable
       Time        Var1    Var2     Var3
    ___________    ____    _____    ____

    01-Jan-2017    37.3     30.1    13.4
    02-Jan-2017    39.1    30.03     6.5
    03-Jan-2017    42.3     29.9     7.3

行時間にアクセスするもうひとつの方法とでは、ドット構文で timetable の最初の次元名を使用します。

TT.Properties.DimensionNames
ans = 1x2 cell array
    {'Time'}    {'Variables'}

TT.Time
ans = 3x1 datetime array
   01-Jan-2017
   02-Jan-2017
   03-Jan-2017

行時間の開始時間。datetime スカラーまたは duration スカラーとして指定します。この開始時間は timetable の 1 行目の行時間と等しく、データ型も同じです。

  • 開始時間が datetime の場合、TT の行時間は datetime 値になる。

  • 開始時間が duration の場合、行時間は duration になる。

  • タイム ステップがカレンダー期間の場合、開始時間は datetime 値でなければならない。

timetable が空の場合、開始時間は NaN になります。

timetable を作成します。この timetable では、連続する行の間のタイム ステップが同一でないため、timetable が不規則になっています。

TT = timetable(datetime({'2015-12-18';'2015-12-20';'2015-12-21'}), ...
               [37.3;39.1;42.3],[13.4;6.5;7.3],{'N';'SE';'NW'});
TT.Properties.VariableNames = {'Temperature','WindSpeed','WindDirection'}
TT=3×4 timetable
       Time        Temperature    WindSpeed    WindDirection
    ___________    ___________    _________    _____________

    18-Dec-2015       37.3          13.4           'N'      
    20-Dec-2015       39.1           6.5           'SE'     
    21-Dec-2015       42.3           7.3           'NW'     

そのプロパティを表示します。StartTime プロパティの値は、最初の行時間と等しくなります。timetable が規則的でも不規則でも、それが空でない限り必ず開始時間があります。

TT.Properties
ans = 
  TimetableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Time'  'Variables'}
           VariableNames: {'Temperature'  'WindSpeed'  'WindDirection'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowTimes: [3x1 datetime]
               StartTime: 18-Dec-2015
              SampleRate: NaN
                TimeStep: NaN
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

StartTime プロパティを変更します。すべての行時間に新しい値があることに注意してください。それぞれの行時間での値の変化は、最初の行時間の元の値と新たな開始時間の差と等しくなっています。

TT.Properties.StartTime = datetime('2018-04-09')
TT=3×4 timetable
            Time            Temperature    WindSpeed    WindDirection
    ____________________    ___________    _________    _____________

    09-Apr-2018 00:00:00       37.3          13.4           'N'      
    11-Apr-2018 00:00:00       39.1           6.5           'SE'     
    12-Apr-2018 00:00:00       42.3           7.3           'NW'     

サンプルレート。正の数値スカラーとして指定します。サンプルレートは、1 秒あたりのサンプル数 (Hz) です。

行時間が規則的でない場合、または timetable が空の場合、サンプルレートは NaN になります。

タイム ステップ。duration スカラーとして指定します。

  • タイム ステップをカレンダー期間 (たとえば、カレンダー月数) として指定する場合、行時間のベクトルは datetime ベクトルでなければなりません。

  • タイム ステップを duration (たとえば、秒) として指定する場合、行時間のベクトルは datetime ベクトルまたは duration ベクトルのいずれかになります。

行時間が規則的でない場合、または timetable が空の場合、タイム ステップは NaN になります。

規則的な timetable を作成します。この timetable において、行時間は、同じタイム ステップを使用して作成された duration です。

Intensity = [100;98.7;95.2;101.4;99.1];
TT = timetable(Intensity,'TimeStep',seconds(0.01))
TT=5×2 timetable
      Time      Intensity
    ________    _________

    0 sec           100  
    0.01 sec       98.7  
    0.02 sec       95.2  
    0.03 sec      101.4  
    0.04 sec       99.1  

そのプロパティを表示します。TimeStep プロパティには、タイム ステップが duration として保存されます。

TT.Properties
ans = 
  TimetableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Time'  'Variables'}
           VariableNames: {'Intensity'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowTimes: [5x1 duration]
               StartTime: 0 sec
              SampleRate: 100
                TimeStep: 0.01 sec
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

TimeStep プロパティを変更します。開始時間は同じですが、タイム ステップが大きくなっているため、他の行時間はすべて異なっています。ただし、変数 Intensity は同じままです。

TT.Properties.TimeStep = seconds(0.04)
TT=5×2 timetable
      Time      Intensity
    ________    _________

    0 sec           100  
    0.04 sec       98.7  
    0.08 sec       95.2  
    0.12 sec      101.4  
    0.16 sec       99.1  

データ型: duration | calendarDuration

変数のメタデータ

変数名。空ではない一意の名前をもつ、文字ベクトルの cell 配列または string 配列として指定します。変数名は有効な MATLAB® 識別子でなければなりません。有効な変数名は、関数 isvarname を使用して判別できます。MATLAB は文字ベクトルから先頭や末尾の空白をすべて削除します。文字ベクトルの数は変数の数と等しくなければなりません。

変数名を指定しない場合、または無効な識別子を指定した場合、MATLAB は N 個の文字ベクトルの cell 配列を、{'Var1' ... 'VarN'} という形式で返します。ここで、N は変数の数です。

変数名は、timetable を表示するか、関数 summary を使用すると表示されます。また、変数名を小かっこまたは中かっこで囲んだり、ドット インデックスとともに使用して timetable データにアクセスすることもできます。

string 配列を使用してこのプロパティを指定した場合、文字ベクトルの cell 配列に変換されて保存されます。

既定の変数名で timetable を作成します。次に、Properties.VariableNames プロパティを使用して名前を変更します。

TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ...
               [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3])
TT=3×4 timetable
       Time        Var1    Var2     Var3
    ___________    ____    _____    ____

    18-Dec-2015    37.3     30.1    13.4
    19-Dec-2015    39.1    30.03     6.5
    20-Dec-2015    42.3     29.9     7.3

TT.Properties.VariableNames = {'Temp','Pressure','WindSpeed'}
TT=3×4 timetable
       Time        Temp    Pressure    WindSpeed
    ___________    ____    ________    _________

    18-Dec-2015    37.3      30.1        13.4   
    19-Dec-2015    39.1     30.03         6.5   
    20-Dec-2015    42.3      29.9         7.3   

変数を表示および変更するための基本的な方法は、ドット構文を使用して名前により変数にアクセスすることです。

TT.Temp
ans = 3×1

   37.3000
   39.1000
   42.3000

TT.Pressure(3) = 30
TT=3×4 timetable
       Time        Temp    Pressure    WindSpeed
    ___________    ____    ________    _________

    18-Dec-2015    37.3      30.1        13.4   
    19-Dec-2015    39.1     30.03         6.5   
    20-Dec-2015    42.3        30         7.3   

変数の説明。文字ベクトルの cell 配列または string 配列として指定します。このプロパティには空の cell 配列を指定できます。これは既定値です。配列が空でない場合、含まれる要素の数は変数の数と同じでなければなりません。説明がない変数について、空の文字ベクトルまたは空の string を個別に指定できます。

変数の説明は、関数 summary を使用すると表示されます。

string 配列を使用してこのプロパティを指定した場合、文字ベクトルの cell 配列に変換されて保存されます。

timetable を作成します。変数名と説明を変更します。結果の概要を表示します。

TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ...
               [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3]);
TT.Properties.VariableNames = {'Temp','Pressure','WindSpeed'};
TT.Properties.VariableDescriptions = {'Temperature (external)', ...
                                      'Pressure in Hg', ...
                                      'Wind speed at sensor 123'};
summary(TT)
RowTimes:

    Time: 3x1 datetime
        Values:
            Min           18-Dec-2015 
            Median        19-Dec-2015 
            Max           20-Dec-2015 
            TimeStep      24:00:00    

Variables:

    Temp: 3x1 double

        Properties:
            Description:  Temperature (external)
        Values:

            Min        37.3 
            Median     39.1 
            Max        42.3 

    Pressure: 3x1 double

        Properties:
            Description:  Pressure in Hg
        Values:

            Min          29.9   
            Median      30.03   
            Max          30.1   

    WindSpeed: 3x1 double

        Properties:
            Description:  Wind speed at sensor 123
        Values:

            Min           6.5    
            Median        7.3    
            Max          13.4    

変数の単位。文字ベクトルの cell 配列または string 配列として指定します。このプロパティには空の cell 配列を指定できます。これは既定値です。配列が空でない場合、含まれる要素の数は変数の数と同じでなければなりません。単位がない変数について、空の文字ベクトルまたは空の string を個別に指定できます。

変数の単位は、関数 summary を使用すると表示されます。

string 配列を使用してこのプロパティを指定した場合、文字ベクトルの cell 配列に変換されて保存されます。

timetable を作成します。変数名と単位を変更します。結果の概要を表示します。

TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ...
               [37.3;39.1;42.3],[30.1;30.03;29.9],[13.4;6.5;7.3]);
TT.Properties.VariableNames = {'Temp','Pressure','WindSpeed'};
TT.Properties.VariableUnits = {'degrees F','mm Hg','mph'};
summary(TT)
RowTimes:

    Time: 3x1 datetime
        Values:
            Min           18-Dec-2015 
            Median        19-Dec-2015 
            Max           20-Dec-2015 
            TimeStep      24:00:00    

Variables:

    Temp: 3x1 double

        Properties:
            Units:  degrees F
        Values:

            Min        37.3 
            Median     39.1 
            Max        42.3 

    Pressure: 3x1 double

        Properties:
            Units:  mm Hg
        Values:

            Min          29.9   
            Median      30.03   
            Max          30.1   

    WindSpeed: 3x1 double

        Properties:
            Units:  mph
        Values:

            Min           6.5    
            Median        7.3    
            Max          13.4    

連続変数または離散変数としてのステータス。文字ベクトルの cell 配列または string 配列として指定します。このプロパティには空の配列を指定できます。これは既定値です。配列が空でない場合、含まれる要素の数は変数の数と同じでなければなりません。各要素は 'unset''continuous''step''event' のいずれかです。

VariableContinuity の値は、関数 retime や関数 synchronize の機能に影響します。VariableContinuity を指定して retime または synchronize を呼び出す場合は、メソッドを指定する必要はありません。代わりに、retimesynchronize が次の既定のメソッドを使用して、出力 timetable 変数に入力します。

  • 'unset' — 該当するタイプ (数値変数用の NaN など) の欠損データ インジケーターを使用して値を入力。

  • 'continuous' — 線形内挿を使用して値を入力。

  • 'step' — 以前の値を使用して値を入力。

  • 'event' — 該当するタイプ (数値変数用の NaN など) の欠損データ インジケーターを使用して値を入力。

メソッドを retime または synchronize への入力引数として指定した場合、そのメソッドは VariableContinuity で指定した値をオーバーライドします。

VariableContinuity プロパティ使用の詳細については、さまざまなメソッドを使用した timetable 変数の時間再調整と同期を参照してください。

timetable を作成します。各変数の matlab.tabular.Continuity 値を指定します。

TT = timetable(datetime({'2015-12-18';'2015-12-19';'2015-12-20'}), ...
               [37.3;39.1;42.3],[13.4;6.5;7.3],{'N';'SE';'NW'});
TT.Properties.VariableNames = {'Temperature','WindSpeed','WindDirection'};
TT.Properties.VariableContinuity = {'continuous','event','event'};
TT.Properties
ans = 
  TimetableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Time'  'Variables'}
           VariableNames: {'Temperature'  'WindSpeed'  'WindDirection'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: [continuous    event    event]
                RowTimes: [3x1 datetime]
               StartTime: 18-Dec-2015
              SampleRate: NaN
                TimeStep: 1d
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

カスタム メタデータ

timetable およびその変数の、カスタマイズされたメタデータ。CustomProperties オブジェクトとして指定します。

CustomProperties オブジェクトは、timetable への追加が可能なカスタマイズされたメタデータ用のコンテナーです。既定では、CustomProperties にはプロパティが含まれていません。CustomProperties に追加する各プロパティには、table メタデータまたは変数メタデータを含めることができます。プロパティに変数メタデータが含まれる場合、その値は配列でなければならず、その配列内の要素数は timetable 変数の数と等しくなければなりません。

  • カスタマイズされたメタデータのプロパティを timetable に追加するには、関数 addprop を使用する。

  • カスタマイズされたメタデータにアクセスするか、変更を加えるには、構文 timetableName.Properties.CustomProperties.PropertyName を使用する。この構文で、PropertyName は、addprop を使用してそのプロパティを追加した際に選択した名前です。

  • プロパティを削除するには、関数 rmprop を使用する。

メモ: addproprmprop を使用して追加や削除ができるのは、カスタマイズされたメタデータのプロパティのみです。timetableName.Properties オブジェクトのプロパティの追加や削除はできません。

気象データを含む timetable を作成します。

TT = timetable(datetime({'2015-12-18';'2015-12-20';'2015-12-21'}), ...
               [37.3;39.1;42.3],[13.4;6.5;7.3],{'N';'SE';'NW'});
TT.Properties.VariableNames = {'Temperature','WindSpeed','WindDirection'}
TT=3×4 timetable
       Time        Temperature    WindSpeed    WindDirection
    ___________    ___________    _________    _____________

    18-Dec-2015       37.3          13.4           'N'      
    20-Dec-2015       39.1           6.5           'SE'     
    21-Dec-2015       42.3           7.3           'NW'     

これらのデータを測定した機器と出力ファイル名を記述するために、関数 addprop を使用して、カスタマイズされたメタデータを追加します。Instruments プロパティには、TT の変数に適用される変数メタデータがあります。OutputFile プロパティには table メタデータがあります。

TT = addprop(TT,{'Instruments','OutputFile'},{'variable','table'});
TT.Properties
ans = 
  TimetableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Time'  'Variables'}
           VariableNames: {'Temperature'  'WindSpeed'  'WindDirection'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowTimes: [3x1 datetime]
               StartTime: 18-Dec-2015
              SampleRate: NaN
                TimeStep: NaN

   Custom Properties (access using t.Properties.CustomProperties.<name>):
              OutputFile: []
             Instruments: []

ドット構文を使用して、カスタマイズされたメタデータに値を代入します。テキスト値の配列をカスタマイズされたメタデータに割り当てる場合は、文字ベクトルの cell 配列ではなく、string 配列を使用することをお勧めします。CustomProperties のプロパティが文字ベクトルの cell 配列である場合、テキスト以外の値が cell 配列の要素として後から代入されるのを防ぐ手立てがなくなります。

TT.Properties.CustomProperties.Instruments = ["thermometer","anemometer","wind vane"];
TT.Properties.CustomProperties.OutputFile = 'weatherReadings.csv';
TT.Properties
ans = 
  TimetableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Time'  'Variables'}
           VariableNames: {'Temperature'  'WindSpeed'  'WindDirection'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowTimes: [3x1 datetime]
               StartTime: 18-Dec-2015
              SampleRate: NaN
                TimeStep: NaN

   Custom Properties (access using t.Properties.CustomProperties.<name>):
              OutputFile: 'weatherReadings.csv'
             Instruments: ["thermometer"    "anemometer"    "wind vane"]

OutputFile プロパティを TT から削除します。

TT = rmprop(TT,'OutputFile');
TT.Properties
ans = 
  TimetableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Time'  'Variables'}
           VariableNames: {'Temperature'  'WindSpeed'  'WindDirection'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowTimes: [3x1 datetime]
               StartTime: 18-Dec-2015
              SampleRate: NaN
                TimeStep: NaN

   Custom Properties (access using t.Properties.CustomProperties.<name>):
             Instruments: ["thermometer"    "anemometer"    "wind vane"]

すべて折りたたむ

さまざまな時点で測定された気象条件に関するデータを timetable に格納します。timetable には、ストレージ機能以外に、指定した時間にデータを同期するための関数が用意されています。また、作業内容や timetable の変数について説明する注釈を timetable に付けることもできます。

ワークスペース変数から timetable を作成します。MeasurementTime の値が timetable の行時間になります。その他すべての入力引数は timetable 変数になります。この構文を使用する場合、行時間ベクトルと TT の変数の名前は、対応する入力引数の名前です。

MeasurementTime = datetime({'2015-12-18 08:03:05';'2015-12-18 10:03:17';'2015-12-18 12:03:13'});
Temp = [37.3;39.1;42.3];
Pressure = [30.1;30.03;29.9];
WindSpeed = [13.4;6.5;7.3];
TT = timetable(MeasurementTime,Temp,Pressure,WindSpeed)
TT=3×4 timetable
      MeasurementTime       Temp    Pressure    WindSpeed
    ____________________    ____    ________    _________

    18-Dec-2015 08:03:05    37.3      30.1        13.4   
    18-Dec-2015 10:03:17    39.1     30.03         6.5   
    18-Dec-2015 12:03:13    42.3      29.9         7.3   

気象データを 1 時間ごとのタイム ステップで定期的に同期します。線形内挿を使用して、データを新しい時間に合わせて調整します。

TT2 = retime(TT,'hourly','linear')
TT2=6×4 timetable
      MeasurementTime        Temp     Pressure    WindSpeed
    ____________________    ______    ________    _________

    18-Dec-2015 08:00:00    37.254     30.102      13.577  
    18-Dec-2015 09:00:00    38.152     30.067      10.133  
    18-Dec-2015 10:00:00    39.051     30.032      6.6885  
    18-Dec-2015 11:00:00    40.613     29.969      6.8783  
    18-Dec-2015 12:00:00    42.214     29.903      7.2785  
    18-Dec-2015 13:00:00    43.815     29.838      7.6788  

出力の行時間は測定時間ではないため、行時間のベクトルの名前を変更します。このベクトルは timetable の最初の次元の名前でもあります。

TT2.Properties.DimensionNames{1} = 'InterpolatedTimes'
TT2=6×4 timetable
     InterpolatedTimes       Temp     Pressure    WindSpeed
    ____________________    ______    ________    _________

    18-Dec-2015 08:00:00    37.254     30.102      13.577  
    18-Dec-2015 09:00:00    38.152     30.067      10.133  
    18-Dec-2015 10:00:00    39.051     30.032      6.6885  
    18-Dec-2015 11:00:00    40.613     29.969      6.8783  
    18-Dec-2015 12:00:00    42.214     29.903      7.2785  
    18-Dec-2015 13:00:00    43.815     29.838      7.6788  

TT2 に説明の注釈を加えます。TT2.Properties によりアクセスしたメタデータを使用して、TT2 とその変数に注釈を付けることができます。

TT2.Properties.Description = 'Weather data, interpolated to regular hourly times';
TT2.Properties
ans = 
  TimetableProperties with properties:

             Description: 'Weather data, interpolated to regular hourly times'
                UserData: []
          DimensionNames: {'InterpolatedTimes'  'Variables'}
           VariableNames: {'Temp'  'Pressure'  'WindSpeed'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowTimes: [6x1 datetime]
               StartTime: 18-Dec-2015 08:00:00
              SampleRate: 2.7778e-04
                TimeStep: 01:00:00
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

ドット構文を使用して、timetable の行時間にアクセスすることができます。また、ドット構文を使用して個別の変数にアクセスしたり、2 番目の次元名を使用して timetable のすべてのデータにアクセスすることもできます。

MAT ファイル outdoors から timetable を読み込みます。最初の 3 行を表示します。

load outdoors
outdoors(1:3,:)
ans=3×4 timetable
           Time            Humidity    TemperatureF    PressureHg
    ___________________    ________    ____________    __________

    2015-11-15 00:00:24        49          51.3          29.61   
    2015-11-15 01:30:24      48.9          51.5          29.61   
    2015-11-15 03:00:24      48.9          51.5          29.61   

行時間ベクトルの名前を使用して行時間にアクセスします。この名前は、timetable の最初の次元の名前でもあります。outdoors には、行時間が datetime ベクトルとして格納されます。最初の 3 つの時間を表示します。

outdoors.Time(1:3)
ans = 3x1 datetime array
   2015-11-15 00:00:24
   2015-11-15 01:30:24
   2015-11-15 03:00:24

変数名を使用して、温度に数値ベクトルとしてアクセスします。

outdoors.TemperatureF(1:3)
ans = 3×1

   51.3000
   51.5000
   51.5000

構文 outdoors.Variables を使用して、すべての timetable データに行列としてアクセスします。この構文では、timetable の 2 番目の次元名を使用します。これは、中かっこによるインデックスを使用したすべての内容へのアクセス outdoors{:,:} と等価です。ただし、行時間のベクトルは timetable メタデータであり変数ではないため、行列には行時間が含まれません。timetable のデータを連結して行列にすることができない場合は、エラー メッセージが表示されます。

outdoors.Variables
ans = 51×3

   49.0000   51.3000   29.6100
   48.9000   51.5000   29.6100
   48.9000   51.5000   29.6100
   48.8000   51.5000   29.6100
   48.7000   51.5000   29.6000
   48.8000   51.5000   29.6000
   49.0000   51.5000   29.6000
   49.1000   51.3000   29.6000
   49.1000   51.3000   29.6100
   49.1000   51.5000   29.6100
      ⋮

outdoors の 2 番目の次元の名前を変更します。名前を変更したら、その新しい名前を使用してデータにアクセスすることができます。

outdoors.Properties.DimensionNames{2} = 'Data';
outdoors.Data
ans = 51×3

   49.0000   51.3000   29.6100
   48.9000   51.5000   29.6100
   48.9000   51.5000   29.6100
   48.8000   51.5000   29.6100
   48.7000   51.5000   29.6000
   48.8000   51.5000   29.6000
   49.0000   51.5000   29.6000
   49.1000   51.3000   29.6000
   49.1000   51.3000   29.6100
   49.1000   51.5000   29.6100
      ⋮

名前と値のペアの引数 'RowTimes' を使用して timetable を作成します。TT の行時間ベクトルの名前は、MeasurementTime ではなく Time です。この構文を使用する場合、行時間ベクトルの名前は必ず Time となります。

MeasurementTime = datetime({'2015-12-18 08:03:05';'2015-12-18 10:03:17';'2015-12-18 12:03:13'});
Temp = [37.3;39.1;42.3];
Pressure = [29.4;29.6;30.0];
Precip = [0.1;0.9;0.0];
StormDuration = [hours(1);hours(2);NaN];
TT = timetable(Temp,Pressure,Precip,StormDuration,'RowTimes',MeasurementTime)
TT=3×5 timetable
            Time            Temp    Pressure    Precip    StormDuration
    ____________________    ____    ________    ______    _____________

    18-Dec-2015 08:03:05    37.3      29.4       0.1           1 hr    
    18-Dec-2015 10:03:17    39.1      29.6       0.9           2 hr    
    18-Dec-2015 12:03:13    42.3        30         0         NaN hr    

timetable を作成します。ワークスペース変数ではない入力引数がある場合、関数 timetable は対応する行ベクトルと timetable の変数に既定の名前を割り当てます。たとえば、いくつかの入力引数を転置して列ベクトルにする場合、これらの入力引数はワークスペース変数ではありません。既定の名前は、行時間のベクトルについては TimeN 番目の timetable 変数については VarN です。

T = hours(1:3);
Temp = [37.3;39.1;42.3];
P = [29.4 29.6 30];
TT = timetable(T',Temp,P')
TT=3×3 timetable
    Time    Temp    Var2
    ____    ____    ____

    1 hr    37.3    29.4
    2 hr    39.1    29.6
    3 hr    42.3      30

100 Hz のサンプルレートを使用して、規則的な timetable を作成します。

Intensity = [100;98.7;95.2;101.4;99.1];
TT = timetable(Intensity,'SampleRate',100)
TT=5×2 timetable
      Time      Intensity
    ________    _________

    0 sec           100  
    0.01 sec       98.7  
    0.02 sec       95.2  
    0.03 sec      101.4  
    0.04 sec       99.1  

最初の行時間が 30 秒である timetable を作成します。開始時間を指定するには、名前と値のペアの引数 'StartTime' を使用します。

TT = timetable(Intensity,'SampleRate',100,'StartTime',seconds(30))
TT=5×2 timetable
      Time       Intensity
    _________    _________

    30 sec           100  
    30.01 sec       98.7  
    30.02 sec       95.2  
    30.03 sec      101.4  
    30.04 sec       99.1  

0.01 秒のタイム ステップを使用して、規則的な timetable を作成します。タイム ステップは duration 値またはカレンダー期間値として指定しなければなりません。

Intensity = [100;98.7;95.2;101.4;99.1];
TT = timetable(Intensity,'TimeStep',seconds(0.01))
TT=5×2 timetable
      Time      Intensity
    ________    _________

    0 sec           100  
    0.01 sec       98.7  
    0.02 sec       95.2  
    0.03 sec      101.4  
    0.04 sec       99.1  

最初の行時間が 30 秒である timetable を作成します。開始時間を指定するには、名前と値のペアの引数 'StartTime' を使用します。

TT = timetable(Intensity,'TimeStep',seconds(0.01),'StartTime',seconds(30))
TT=5×2 timetable
      Time       Intensity
    _________    _________

    30 sec           100  
    30.01 sec       98.7  
    30.02 sec       95.2  
    30.03 sec      101.4  
    30.04 sec       99.1  

table のサイズと変数のデータ型を指定して、table に事前割り当てを行います。関数 timetable は、指定したデータ型に適した既定値を変数に代入します。また、変数に既定の名前を与えます。

T = [datetime('now') datetime(2017,11,1:3)];
sz = [4 3];
varTypes = {'double','double','string'};
TT = timetable('Size',sz,'VariableTypes',varTypes,'RowTimes',T)
TT=4×4 timetable
            Time            Var1    Var2      Var3   
    ____________________    ____    ____    _________

    03-Feb-2019 10:12:18     0       0      <missing>
    01-Nov-2017 00:00:00     0       0      <missing>
    02-Nov-2017 00:00:00     0       0      <missing>
    03-Nov-2017 00:00:00     0       0      <missing>

変数の名前を指定するには、名前と値のペアの引数 'VariableNames' を使用します。

varNames = {'Temperature','WindSpeed','Station'};
TT = timetable('Size',sz,'VariableTypes',varTypes,'RowTimes',T,'VariableNames',varNames)
TT=4×4 timetable
            Time            Temperature    WindSpeed     Station 
    ____________________    ___________    _________    _________

    03-Feb-2019 10:12:18         0             0        <missing>
    01-Nov-2017 00:00:00         0             0        <missing>
    02-Nov-2017 00:00:00         0             0        <missing>
    03-Nov-2017 00:00:00         0             0        <missing>

データの行を TT に追加します。コードによりデータの行が一度に 1 行または数行追加される場合は、事前割り当てが便利です。行を追加するたびに timetable を拡張する代わりに、データの領域を既にもっている table 変数への代入を行うことができます。データ値の行を cell 配列にカプセル化し、timetable の行に割り当てます。

時間によって行の添字を作成し、データ値の行を割り当てます。また、番号によって行と変数の添字を作成することも可能です。しかし、時間による timetable の添字作成は便利な手法です。

TT(datetime(2017,11,2),:) = {48.2,13.33,"S1"}
TT=4×4 timetable
            Time            Temperature    WindSpeed     Station 
    ____________________    ___________    _________    _________

    03-Feb-2019 10:12:18          0              0      <missing>
    01-Nov-2017 00:00:00          0              0      <missing>
    02-Nov-2017 00:00:00       48.2          13.33      "S1"     
    03-Nov-2017 00:00:00          0              0      <missing>

データ値の行をカプセル化して cell 配列にすることができます。cell 配列の行を割り当てる際は、この割り当てにより cell 配列が timetable 行に変換されます。

1000 Hz のサンプルレートを指定して、timetable への事前割り当てを行います。また、開始時間を指定することもできます。

sz = [4 3];
varTypes = {'uint64','double','duration'};
TT = timetable('Size',sz,'VariableTypes',varTypes,'SampleRate',1000,'StartTime',seconds(15))
TT=4×4 timetable
       Time       Var1    Var2      Var3  
    __________    ____    ____    ________

    15 sec         0       0      00:00:00
    15.001 sec     0       0      00:00:00
    15.002 sec     0       0      00:00:00
    15.003 sec     0       0      00:00:00

時間を指定することで 3 番目の行を参照し、1 行のデータを追加します。

TT(seconds(15.002),:) = {50,1.37,minutes(76)}
TT=4×4 timetable
       Time       Var1    Var2      Var3  
    __________    ____    ____    ________

    15 sec          0        0    00:00:00
    15.001 sec      0        0    00:00:00
    15.002 sec     50     1.37    01:16:00
    15.003 sec      0        0    00:00:00

タイム ステップと変数名を指定します。

sz = [3 2];
varTypes = {'double','double'};
TT = timetable('Size',sz,'VariableTypes',varTypes,'TimeStep',seconds(0.1),'VariableNames',{'Intensity','Distance'})
TT=3×3 timetable
     Time      Intensity    Distance
    _______    _________    ________

    0 sec          0           0    
    0.1 sec        0           0    
    0.2 sec        0           0    

時間を指定することで 2 番目の行を参照し、1 行のデータを追加します。

TT(seconds(0.1),:) = {93.6,11.27}
TT=3×3 timetable
     Time      Intensity    Distance
    _______    _________    ________

    0 sec           0            0  
    0.1 sec      93.6        11.27  
    0.2 sec         0            0  

timetable を作成し、timetable 変数の名前を指定します。行時間のベクトルは、秒単位の duration ベクトルです。

Time = seconds(1:5)';
TT = timetable(Time,[98;97.5;97.9;98.1;97.9],[120;111;119;117;116],...
               'VariableNames',{'Reading1','Reading2'})
TT=5×3 timetable
    Time     Reading1    Reading2
    _____    ________    ________

    1 sec        98        120   
    2 sec      97.5        111   
    3 sec      97.9        119   
    4 sec      98.1        117   
    5 sec      97.9        116   

制限

  • 次の入力名には一重引用符を使用します。

    • 'RowTimes'

    • 'SampleRate'

    • 'Size'

    • 'StartTime'

    • 'TimeStep'

    • 'VariableTypes'

    • 'VariableNames'

    変数入力と混同しないように、これらの名前には二重引用符で囲んだ string スカラー ("RowTimes" など) を使用しないでください。

ヒント

  • timetable を受け入れる関数、または返す関数の一覧については、timetableを参照してください。

  • 場合によっては、行時間の間の一定のタイム ステップを指定する構文を使用して timetable を呼び出すこともできますが、それでも timetable は不規則な timetable を返します。タイム ステップをカレンダーの時間単位を使用して指定し、不規則なステップを発生させる行時間が存在する場合に、このような結果が発生します。たとえば、2019 年 1 月 31 日から始まり、タイム ステップが 1 カレンダー月の timetable を作成した場合、月に関して不規則になります。

    stime = datetime(2019,1,31);
    tstep = calmonths(1);
    TT = timetable('Size',[3 1],'VariableTypes',{'double'},...
                   'TimeStep',tstep,'StartTime',stime)
    
    TT =
    
      3×1 timetable
    
           Time        Var1
        ___________    ____
    
        31-Jan-2019     0  
        28-Feb-2019     0  
        31-Mar-2019     0  
    

    さらに、夏時間 (DST) からの移行、またはうるう秒である行時間が原因で不規則性が発生する場合もあります。次の表は、予期しない不規則な timetable が発生する可能性がある行時間値とタイム ステップを示しています。

    行時間値

    タイム ステップ

    開始時間を月の 29 日、30 日または 31 日として指定

    カレンダー月または四半期の数

    開始時間を 2 月 29 日として指定

    カレンダー年の数

    DST から標準時間に移行する日の午前 1 時と午前 2 時の間に発生するすべての行時間 (DST が適用されるタイム ゾーンの datetime 値として行時間が指定されている場合)カレンダー日またはカレンダー月の数

    うるう秒であるすべての行時間 (行時間が UTCLeapSecond タイム ゾーンの datetime 値として指定されている場合)

    任意のカレンダー単位 (日、週、月、四半期、年) で指定されているタイム ステップ

互換性についての考慮事項

すべて展開する

R2018b での開始は非推奨

拡張機能

R2016b で導入