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