高水準関数による CDF ファイルのインポート
この例では、高水準関数を使用して CDF ファイルをインポートします。MATLAB® 高水準関数では、CDF ファイルにアクセスするための簡単なインターフェイスが用意されています。
CDF ファイルの内容情報の取得
関数 cdfinfo
を使用して CDF ファイルの内容に関する情報を取得します。cdfinfo
では一時ファイルが作成されるため、この関数を使用する前に現在のフォルダーが書き込み可能であることを確認してください。
info = cdfinfo("example_364.cdf")
info = struct with fields:
Filename: 'example_364.cdf'
FileModDate: '08-Jul-2022 11:07:41'
FileSize: 1860
Format: 'CDF'
FormatVersion: '3.6.4'
FileSettings: [1x1 struct]
Subfiles: {}
Variables: {8x6 cell}
GlobalAttributes: [1x1 struct]
VariableAttributes: [1x1 struct]
cdfinfo
では、ファイルについての一般情報とファイル内の変数と属性についての詳細情報を含む構造体が返されます。この例では、Variables
フィールドはファイル内の変数の数を示しています。
Variables
フィールドの内容を表示します。
vars = info.Variables
vars=8×6 cell array
{'Time' } {[ 1 1]} {[24]} {'epoch' } {'T/' } {'Full'}
{'Longitude' } {[ 2 2]} {[ 1]} {'int8' } {'F/FT' } {'Full'}
{'Latitude' } {[ 2 2]} {[ 1]} {'int8' } {'F/TF' } {'Full'}
{'Data' } {[ 2 2 4]} {[ 1]} {'double'} {'T/TTT' } {'Full'}
{'multidimensional'} {[2 2 3 4]} {[ 1]} {'uint8' } {'T/TTTT'} {'Full'}
{'Temperature' } {[ 3 2]} {[10]} {'int16' } {'T/TT' } {'Full'}
{'multiInt8' } {[ 2 3]} {[ 2]} {'int64' } {'T/TT' } {'Full'}
{'tt2000' } {[ 1 1]} {[ 8]} {'tt2000'} {'T/' } {'Full'}
最初の変数 Time
は、CDF_EPOCH
のデータを含む 24 件のレコードで構成されています。次の 2 つの変数 Longitude
と Latitude
には、int8
データを含むレコードがそれぞれ 1 つのみ関連付けられています。
すべての CDF ファイル データの読み取り
関数 cdfread
を使用して CDF ファイルのデータをすべて読み取ります。
data = cdfread("example_364.cdf"); whos data
Name Size Bytes Class Attributes data 24x8 32608 cell
cdfread
はデータを cell 配列で返します。データの列は変数に対応しており、行はその変数に関連付けられているレコードに対応しています。
特定の変数からのデータの読み取り
CDF ファイルから変数 Longitude
および Latitude
のみを読み取ります。特定の変数に関連付けられているデータを読み取るには、名前と値の引数 Variables
を使用します。string の cell 配列で変数名を指定します。変数名の大文字と小文字は区別されます。
var_long_lat = cdfread("example_364.cdf","Variables",{"Longitude","Latitude"}); whos var_long_lat
Name Size Bytes Class Attributes var_long_lat 1x2 216 cell
レコードの結合による読み取り操作の高速化
既定では、cdfread
によって、すべての変数と各変数内のすべてのレコードに対して別々の要素をもつ cell 配列が作成され、これはレコードの次元のパディングによって四角形の cell 配列となります。大きなデータ セットを処理する場合、名前と値の引数 CombineRecords
を指定して cdfread
が返す cell 配列の要素数を減らし、読み取り操作を高速化できます。引数 CombineRecords
を true
に設定すると、関数 cdfread
は変数ごとに要素を作成するものの、1 つの変数に関連付けられたすべてのレコードが 1 つの cell 配列要素に格納されるため、所要時間が短縮されます。
data_combined = cdfread("example_364.cdf","CombineRecords",true);
cdfread
から返される cell 配列のサイズを比較します。
whos data*
Name Size Bytes Class Attributes data 24x8 32608 cell data_combined 1x8 9920 cell
引数 CombineRecords
を使用せずにサンプル ファイルからすべてのデータを読み取ると 24 行 8 列の cell 配列が返され、その列で変数を表し、行で各変数のレコードを表します。CombineRecords
を true
に設定して同じファイルからデータを読み取ると、1 行 8 列の cell 配列が返されます。
レコードを結合すると、セルにおけるデータの次元が変化します。この例では、変数 Time
に 24 件のレコードがあり、それぞれがスカラー値になっています。cell 配列 data_combined
では、結合された要素に値の 24 行 1 列のベクトルが含まれています。
datetime
値としての CDF_EPOCH
値および CDF_TIME_TT2000
値の読み取り
名前と値の引数 DatetimeType
を "datetime"
に設定すると、CDF_EPOCH
値と CDF_TIME_TT2000
値の両方が MATLAB datetime
値として返されます。
data_datetimes = cdfread("example_364.cdf","DatetimeType","datetime"); whos data*
Name Size Bytes Class Attributes data 24x8 32608 cell data_combined 1x8 9920 cell data_datetimes 24x8 29728 cell