Main Content

CDF の時間値の表現

この例では、CDF データセットから日付と時刻の情報を抽出する方法を示します。CDF には日付と時刻の値を表す 3 つのデータ型があり、MATLAB® ではそのそれぞれを表すことができます。

  • CDF_TIME_TT2000 データは、地球時 (TT) 2000 年 01 月 01 日 12:00:00 から経過したナノ秒数を測定します。CDF_TIME_TT2000 データは、MATLAB では datetime または int64 の値として表現できます。

  • CDF_EPOCH データは、0000 年 01 月 01 日から経過したミリ秒数を測定します。CDF_EPOCH データは、MATLAB では datetime または double の値として表現できます。

  • CDF_EPOCH16 データは、0000 年 01 月 01 日から経過したピコ秒数を測定します。CDF_EPOCH16 データは MATLAB では double 値として表現できます。

int64 値または double 値としての CDF 時間値の表現

サンプル CDF ファイル example_364.cdf から変数 tt2000 (CDF_TIME_TT2000 型) および Time (CDF_EPOCH 型) を読み取ります。名前と値の引数 DatetimeType"native" に設定します。cdfread は cell 配列を返します。

data_native = cdfread("example_364.cdf","Variables",{"tt2000","Time"}, ...
                      "DatetimeType","native");
whos data_native
  Name              Size            Bytes  Class    Attributes

  data_native      24x2              5376  cell               

2 つの CDF 変数を MATLAB ベクトルとして保存し、出力を調べます。CDF_TIME_TT2000 データをもつ変数の型は int64 で、CDF_EPOCH データをもつ変数の型は double です。

cdf_time_tt2000_data_native = [data_native{:,1}];
cdf_epoch_data_native = [data_native{:,2}];
whos cdf*_native
  Name                             Size            Bytes  Class     Attributes

  cdf_epoch_data_native            1x24              192  double              
  cdf_time_tt2000_data_native      1x24              192  int64               
cdf_time_tt2000_data_native(1:3)'
ans = 3x1 int64 column vector

   536500865284200300
   536500866284200300
   536500867284200300

cdf_epoch_data_native(1:3)'
ans = 3×1
1013 ×

    6.3146
    6.3146
    6.3146

datetime 値としての CDF の時間値の表現

同じ 2 つの CDF 変数を再度読み取ります。今回は、名前と値の引数 DatetimeType"datetime" に設定します。

data_datetime = cdfread("example_364.cdf","Variables",{"tt2000","Time"}, ...
                        "DatetimeType","datetime");
whos data_datetime
  Name                Size            Bytes  Class    Attributes

  data_datetime      24x2              8896  cell               

2 つの CDF 変数を MATLAB ベクトルとして再度保存し、出力を調べます。変数の型は両方とも datetime です。

cdf_time_tt2000_data_datetime = [data_datetime{:,1}];
cdf_epoch_data_datetime = [data_datetime{:,2}];
whos cdf*_datetime
  Name                               Size            Bytes  Class       Attributes

  cdf_epoch_data_datetime            1x24              240  datetime              
  cdf_time_tt2000_data_datetime      1x24              480  datetime              
cdf_time_tt2000_data_datetime(1:3)'
ans = 3x1 datetime
   2016-12-31T23:59:57.100200300Z
   2016-12-31T23:59:58.100200300Z
   2016-12-31T23:59:59.100200300Z

cdf_epoch_data_datetime(1:3)'
ans = 3x1 datetime
   01-Jan-2001 00:00:00.000
   01-Jan-2001 01:00:00.000
   01-Jan-2001 02:00:00.000

参考

|