Main Content

高水準関数による 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 つの変数 LongitudeLatitude には、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 配列の要素数を減らし、読み取り操作を高速化できます。引数 CombineRecordstrue に設定すると、関数 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 配列が返され、その列で変数を表し、行で各変数のレコードを表します。CombineRecordstrue に設定して同じファイルからデータを読み取ると、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               

参考

|

外部の Web サイト