Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

cdfread

CDF (Common Data Format) ファイルからデータを読み取る

構文

data = cdfread(filename)
data = cdfread(filename, param1, val1, param2, val2, ...)
[data, info] = cdfread(filename, ...)

説明

data = cdfread(filename) は、filename で指定された CDF (Common Data Format) ファイルから、すべてのデータを読み取ります。filename は文字ベクトルまたは string スカラーとして指定します。CDF データセットには通常、変数の集合が格納されており、個々の変数は特定のデータ型をもち、レコードの集合が関連付けられています。変数は、個々のレコードについて、ある観測値が記録された特定の時間を表す時間値である場合もあります。cdfread は、すべてのデータを 1 つの cell 配列で返します。ここでは各列が変数を表し、各行が変数に関連付けられているレコードを表します。変数に関連付けられるレコード数が可変の場合、cdfread は行を付加 (pad) して四角形の cell 配列を作成し、CDF ファイルで定義されている pad 値を使用します。

メモ

cdfread は一時ファイルを作成するため、現在の作業ディレクトリは書き込み可能でなければなりません。

data = cdfread(filename, param1, val1, param2, val2, ...) は、ファイルからデータを読み取ります。ここで、param1param2 などの引数には、次の表に示す任意のパラメーターを指定できます。

[data, info] = cdfread(filename, ...) は、CDF ファイルに関する詳細を info 構造体で返します。

パラメーター
'Records'読み取るレコードを指定するベクトル。レコード番号は 0 ベースです。cdfread が返す cell 配列では、行数は読み取ったレコード数と同じで、列数は変数と同じ数になります。
'Variables'ファイルから読み取った変数の名前を表す、1 行 n 列または n 行 1 列の cell 配列。n は、ファイル内に記録されている変数の総数以下でなければなりません。cdfread が返す cell 配列では、列数は読み取った変数の数と同じで、読み取った個々のレコードごとに 1 行をもっています。
'Slices'm 行 3 列の配列。ここで各行は、変数の特定の次元で読み取りを開始する位置、その次元で使用するスキップ インターバル (すべての要素、要素 1 つおきなど)、およびその次元で読み取る値の総数を表します。m は、変数の次元数以下でなければなりません。m が次元の総数より少ない場合、cdfread は未指定の次元からすべての値 ([0 1 n]) を読み取ります。ここで n は、その次元に含まれる要素の総数です。
メモ: 'Slices' パラメーターは単一の変数の処理方法を記述するものであるため、'Variables' パラメーターと組み合わせて使用しなければなりません。
'ConvertEpochToDatenum'

cdfread が CDF エポックのデータ型を自動的に MATLAB® のシリアル日付値に変換するかどうかを指定する Boolean 値。これを false (既定の設定) に設定した場合、cdfread はエポック値を MATLAB の cdfepoch オブジェクトに含めます。


メモ: パフォーマンスを向上させるため、大規模なデータセットを読み取る場合には、このパラメーターを true に設定します。
'CombineRecords'cdfread がファイルから読み取った CDF データセットを返す方法を決定する Boolean 値。これを false (既定の設定) に設定すると、cdfread はデータを m 行 n 列の cell 配列に格納します。ここで、m はレコード数、n は要求された変数の数です。これを true に設定すると、cdfread は特定の変数のレコードをすべて、出力 cell 配列の 1 つのセルに結合します。このセルに cdfread は、スカラー型データを列配列として格納します。cdfread は、非スカラー データおよび文字列データの次元を拡張します。たとえば、レコードごとに 20 行 30 列の配列が含まれる 1,000 個の要素を作成する代わりに、cdfread はすべてのレコードを、1000 x 20 x 30 の配列として 1 つのセルに格納します。
メモ: 'Records' パラメーターを使用して読み取るレコードを指定する場合、'CombineRecords' パラメーターは使用できません。

メモ: 'Variable' パラメーターを使用して 1 つの変数を読み取る場合、'CombineRecords' パラメーターが true であれば、cdfread はデータを M 行 N 列の数値または文字配列として返します。1 つの cell 配列にデータを詰め込むことはしません。

メモ

大きいデータ ファイルで作業する場合にパフォーマンスを向上させるには、'ConvertEpochToDatenum' および 'CombineRecords' オプションを使用します。

メモ

パフォーマンスを向上させるために、ファイルを開いたときに CDF ライブラリが既定で行うファイルの検証をオフにしてください。詳細については、cdflib.setValidate を参照してください。

CDF ファイルからすべてのデータを読み取ります。

data = cdfread('example.cdf');

変数 'Time' のデータのみを読み取ります。

data = cdfread('example.cdf', 'Variable', {'Time'});

変数 'multidimensional' の最初の次元の最初の値、2 番目の次元の 2 番目の値、3 番目の次元の最初と 3 番目の値、残りの次元のすべての値を読み取ります。

data = cdfread('example.cdf', ...
               'Variable', {'multidimensional'}, ...
               'Slices', [0 1 1; 1 1 1; 0 2 2]);

これは、すべての変数を data に読み取ってから、以下のように行列のインデックス指定を使用するのと同じことになります。

data = cdfread('example.cdf', ...
               'Variable', {'multidimensional'});
data{1}(1, 2, [1 3], :)

データセットから読み込んだレコードを結合して詰め込み、CDF エポックのデータ型を MATLAB のシリアル日付値に変換します。

data = cdfread('example.cdf', ...
               'CombineRecords', true, ...
               'ConvertEpochToDatenum', true);

制限

  • 関数 cdfread は、ASCII エンコード以外のデータをサポートしません。CDF ファイル内のすべての変数名、属性名、変数値および属性値は、7 ビット ASCII エンコードでなければなりません。ASCII エンコード以外のデータを読み取ろうとすると、エラーまたはデータの文字化けが発生します。

バージョン履歴

R2006a より前に導入