HDF4 ファイルへのエクスポート
HDF4 ファイルへの MATLAB データの書き込み
この例では、MATLAB® の配列を HDF4 ファイルの科学データセットに書き込む方法を説明します。
インポート リストへのパッケージの追加
matlab.io.hdf4.*
パスをインポート リストに追加します。
import matlab.io.hdf4.*
その後の matlat.io.hdf4.sd
パッケージ内の関数の呼び出しには、パッケージのパス全体ではなく、sd
を接頭辞として指定します。
HDF4 ファイルの作成
新規の HDF4 ファイルを作成するには、関数 matlab.io.hdf4.sd.start
を使用します。この関数は、SD API のルーチン SDstart
に相当します。
sdID = sd.start('mydata.hdf','create');
sd.start
はファイルを作成し、ファイル識別子 sdID
を返します。
新規ファイルを作成するのではなく既存のファイルを開くには、'create'
ではなく 'write'
アクセスを指定して sd.start
を呼び出します。
HDF4 データセットの作成
エクスポートする MATLAB 配列ごとにファイル内にデータセットを作成します。既存のデータセットに書き込む場合は、次の手順にスキップできます。この例では、関数 matlab.io.hdf4.sd.create
を使用して、サンプル データの配列のデータセット A
を 1 つ作成します。この関数は、SD API のルーチン SDcreate
に相当します。引数 ds_type
は、データセットの MATLAB データ型を指定する文字ベクトルです。
A = [1 2 3 4 5 ; 6 7 8 9 10 ; 11 12 13 14 15]; ds_name = 'A'; ds_type = 'double'; ds_dims = size(A); sdsID = sd.create(sdID,ds_name,ds_type,ds_dims);
sd.create
は、HDF4 SD データセット識別子 sdsID
を返します。
HDF4 ファイルへの MATLAB データの書き込み
ファイルのデータセットに A
のデータを書き込むには、関数 matlab.io.hdf4.sd.writedata
を使用します。この関数は、SD API のルーチン SDwritedata
に相当します。引数 start
は、0 ベースの開始インデックスを指定します。
start = [0 0]; sd.writeData(sdsID,start,A);
sd.writeData
では書き込み操作がキューに入れられます。キューに入れられた操作は、HDF4 ファイルを閉じたときに実行されます。
データセットの一部への MATLAB データの書き込み
データセットの 2 番目の行をベクトル B
に置き換えます。start
の入力値 [1 0]
を使用して、2 行 1 列目から書き込みを開始します。start
は 0 ベースのインデックスを使用します。
B = [9 9 9 9 9]; start = [1 0]; sd.writeData(sdsID,start,B);
メタデータの HDF4 ファイルへの書き込み
現在の日付と時刻の値をもつ、グローバル属性 creation_date
を作成します。関数 matlab.io.hdf4.sd.setAttr
を使用します。この関数は、SD API のルーチン SDsetattr
に相当します。
sd.setAttr(sdID,'creation_date',string(datetime('now')));
sd.Attr
はファイル属性 (グローバル属性とも呼ばれる) を作成し、sdID
で指定された HDF4 ファイルに関連付けます。
事前定義された属性 cordsys
を、sdsID
で指定したデータセットに関連付けます。この属性の値は、'cartesian'
、'polar'
、'spherical'
などのテキスト文字列にできます。
attr_name = 'cordsys'; attr_value = 'polar'; sd.setAttr(sdsID,attr_name,attr_value);
HDF4 データセットを閉じる
データセットへのアクセスを閉じるには、関数 matlab.io.hdf4.sd.endAccess
を使用します。この関数は、SD API のルーチン SDendaccess
に相当します。HDF4 ファイルを閉じる前に、ファイル内のすべてのデータセットへのアクセスを閉じなければなりません。
sd.endAccess(sdsID);
HDF4 ファイルを閉じる
HDF4 ファイルを閉じるには、関数 matlab.io.hdf4.sd.close
を使用します。この関数は、SD API のルーチン SDend
に相当します。
sd.close(sdID);
HDF4 ファイルを閉じると、SDwritedata
を使用してキューに入れられていた書き込み操作がすべて実行されます。
HDF4 識別子の管理
MATLAB® は、HDF4 を MATLAB 環境で使いやすくするためのユーティリティ関数をサポートしています。
開いているすべての HDF4 識別子を表示する
現在開いている HDF4 識別子をすべて表示するには、MATLAB HDF4 ユーティリティ API のゲートウェイ関数 hdfml
を使用し、listinfo
ルーチンの名前を引数として指定します。HDF 識別子が作成されたり閉じられたりするたびに、MATLAB はこのリストを更新します。次の例では 2 つの識別子のみが開いています。
hdfml('listinfo')
No open RI identifiers No open GR identifiers No open grid identifiers No open grid file identifiers No open annotation identifiers No open AN identifiers Open scientific dataset identifiers: 262144 Open scientific data file identifiers: 393216 No open Vdata identifiers No open Vgroup identifiers No open Vfile identifiers No open point identifiers No open point file identifiers No open swath identifiers No open swath file identifiers No open access identifiers No open file identifiers
開いているすべての HDF4 識別子を閉じる
現在開いているすべての HDF4 識別子を単一の呼び出しで閉じるには、MATLAB HDF4 ユーティリティ API のゲートウェイ関数 hdfml
を使用します。closeall
ルーチンの名前を引数として指定します。
hdfml('closeall')
参考
sd.start
| sd.create
| sd.writeData
| sd.setAttr
| sd.close
| sd.endAccess
| hdfml