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 6144 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*_nativeName 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 = 3×1 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 9664 cell
2 つの CDF 変数を MATLAB ベクトルとして再度保存し、出力を調べます。変数の型は両方とも datetime です。
cdf_time_tt2000_data_datetime = [data_datetime{:,1}];
cdf_epoch_data_datetime = [data_datetime{:,2}];
whos cdf*_datetimeName 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 = 3×1 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 = 3×1 datetime
01-Jan-2001 00:00:00.000
01-Jan-2001 01:00:00.000
01-Jan-2001 02:00:00.000