Main Content

CDF ファイルへのエクスポート

この例では、MATLAB® CDF の低水準関数を使用して CDF ファイルにデータをエクスポートする方法を説明します。これらの MATLAB 関数は、CDF C API ライブラリのルーチンに相当します。

MATLAB の CDF 低水準関数を効果的に使用するには、CDF C インターフェイスについて理解していなければなりません。また、CDF ファイルは ASCII エンコードされていない入力をサポートしません。したがって、変数名、属性名、変数値および属性値は 7 ビット ASCII エンコードでなければなりません。

新しい CDF ファイルの作成

cdflib.create を使用して my_file.cdf という名前の新しい CDF ファイルを作成します。この関数は、CDF ライブラリ C API のルーチン CDFcreateCDF に相当します。

cdfid = cdflib.create('my_file.cdf');

cdflib.create はファイル識別子 cdfid を返します。

CDF ファイル内の変数の作成

cdflib.createVar を使用して、Time および Latitude という名前の変数を作成します。この関数は、CDF ライブラリ C API のルーチン CDFcreatezVar に相当します。

time_id = cdflib.createVar(cdfid,'Time','cdf_int4',1,[],true,[]);
lat_id = cdflib.createVar(cdfid,'Latitude','cdf_int2',1,181,true,true);

cdflib.createVar は、各変数の数値識別子を返します。

Image という名前の変数を作成します。

dimSizes = [20 10];
image_id = cdflib.createVar(cdfid,'Image','cdf_int4',1,...
    dimSizes,true,[true true]);

変数への書き込み

変数 Time の最初と 2 番目のレコードにデータを書き込みます。レコード番号は 0 ベースです。関数 cdflib.putVarRecordData は、CDF ライブラリ C API のルーチン CDFputzVarRecordData に相当します。

cdflib.putVarRecordData(cdfid,time_id,0,int32(23));
cdflib.putVarRecordData(cdfid,time_id,1,int32(24));

変数 Latitude にデータを書き込みます。

data = int16([-90:90]);
recspec = [0 1 1];
dimspec = { 0 181 1 };
cdflib.hyperPutVarData(cdfid,lat_id,recspec,dimspec,data);

変数 Image にデータを書き込みます。

recspec = [0 3 1];
dimspec = { [0 0], [20 10], [1 1] };
data = reshape(int32([0:599]), [20 10 3]);
cdflib.hyperPutVarData(cdfid,image_id,recspec,dimspec,data);

グローバル属性への書き込み

cdflib.createAttr を使用して TITLE という名前のグローバル属性を作成します。この関数は、CDF ライブラリ C API のルーチン CDFcreateAttr に相当します。

titleAttrNum = cdflib.createAttr(cdfid,'TITLE','global_scope');

cdflib.createAttr は、属性の数値識別子を返します。属性番号は 0 ベースです。

グローバル属性のエントリに値を書き込みます。

cdflib.putAttrEntry(cdfid,titleAttrNum,0,'CDF_CHAR','cdf Title');
cdflib.putAttrEntry(cdfid,titleAttrNum,1,'CDF_CHAR','Author');

変数に関連付けられた属性への書き込み

CDF ファイルの変数に関連付けられた属性を作成します。

fieldAttrNum = cdflib.createAttr(cdfid,'FIELDNAM','variable_scope');
unitsAttrNum = cdflib.createAttr(cdfid,'UNITS','variable_scope');

変数 Time の属性に書き込みます。

cdflib.putAttrEntry(cdfid,fieldAttrNum,time_id,...
    'CDF_CHAR','Time of observation');
cdflib.putAttrEntry(cdfid,unitsAttrNum,time_id,...
    'CDF_CHAR','Hours');

CDF ファイルの情報の取得

cdflib.inquire を使用してファイルに関する情報を取得します。この関数は、CDF ライブラリ C API のルーチン CDFinquireCDF および CDFgetNumgAttributes に相当します。

info = cdflib.inquire(cdfid)
info = struct with fields:
     encoding: 'IBMPC_ENCODING'
     majority: 'ROW_MAJOR'
       maxRec: 2
      numVars: 3
    numvAttrs: 2
    numgAttrs: 1

cdflib.inquire は、データ エンコードとファイル内の変数および属性の数に関する情報を含む構造体配列を返します。

CDF ファイルを閉じる

cdflib.close を使用して CDF ファイルを閉じます。この関数は、CDF ライブラリ C API のルーチン CDFcloseCDF に相当します。CDF を開いてから加えたすべての修正が確実にファイルに書き込まれるようにするため、CDF を閉じなければなりません。

cdflib.close(cdfid);

参考

外部の Web サイト