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);