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 に相当します。cdflib.create はファイル識別子を返します。
cdfid = cdflib.create("my_file.cdf");CDF ファイル内の変数の作成
cdflib.createVar を使用して、Time および Latitude という名前の変数を作成します。この関数は、CDF ライブラリ C API のルーチン CDFcreatezVar に相当します。cdflib.createVar は、各変数の数値識別子を返します。
time_id = cdflib.createVar(cdfid,"Time","cdf_int4",1,[],true,[]); lat_id = cdflib.createVar(cdfid,"Latitude","cdf_int2",1,181,true,true);
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 に相当します。cdflib.createAttr は、属性の数値識別子を返します。属性番号は 0 ベースです。
titleAttrNum = cdflib.createAttr(cdfid,"TITLE","global_scope");
グローバル属性のエントリに値を書き込みます。
cdflib.putAttrEntry(cdfid,titleAttrNum,0,"CDF_CHAR","cdf Title") cdflib.putAttrEntry(cdfid,titleAttrNum,1,"CDF_CHAR","Author")
変数に関連付けられた属性への書き込み
CDF ファイルの変数に関連付けられた属性を作成します。
fieldAttrNum = cdflib.createAttr(cdfid,"FIELDNUM","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 に相当します。cdflib.inquire は、データ エンコードとファイル内の変数および属性の数に関する情報を含む構造体を返します。
info = cdflib.inquire(cdfid)
info = struct with fields:
encoding: 'IBMPC_ENCODING'
majority: 'ROW_MAJOR'
maxRec: 2
numVars: 3
numvAttrs: 2
numgAttrs: 1
CDF ファイルを閉じる
cdflib.close を使用して CDF ファイルを閉じます。この関数は、CDF ライブラリ C API のルーチン CDFcloseCDF に相当します。CDF ファイルを開いてから加えたすべての修正が確実にファイルに書き込まれるようにするため、CDF ファイルを閉じなければなりません。
cdflib.close(cdfid)
参考
cdflib.close | cdflib.create | cdflib.createAttr | cdflib.createVar | cdflib.hyperPutVarData | cdflib.putAttrEntry | cdflib.putVarRecordData