低水準関数による HDF4 ファイルのインポート
matlat.io.hdf4.sd 名前空間の関数を使用して、HDF4 ファイルの科学データセットからデータを読み取ります。HDF4 の用語では、HDF4 ファイルに保存された数値配列をデータセットと呼びます。
インポート リストへの名前空間の追加
matlab.io.hdf4.* パスをインポート リストに追加します。
import matlab.io.hdf4.*その後の matlat.io.hdf4.sd 名前空間内の関数の呼び出しには、名前空間のパス全体ではなく、sd のみを接頭辞として指定する必要があります。
HDF4 ファイルを開く
関数 matlab.io.hdf4.sd.start を使用して、サンプルの HDF4 ファイル sd.hdf を開き、読み取りアクセスを指定します。この関数は、SD API のルーチン SDstart に相当します。
sdID = sd.start("sd.hdf","read");
sd.start は、HDF4 SD ファイル識別子 sdID を返します。
HDF4 ファイルの情報の取得
関数 matlab.io.hdf4.sd.fileInfo を使用して、ファイルのデータセット数とグローバル属性を取得します。この関数は、SD API のルーチン SDfileinfo に相当します。
[ndatasets,ngatts] = sd.fileInfo(sdID)
ndatasets = 4
ngatts = 1
ファイル sd.hdf には、データセットが 4 つ、グローバル属性が 1 つあります。
HDF4 ファイルの属性の取得
最初のグローバル属性の内容を取得します。HDF4 は 0 ベースのインデックスを使用しているため、インデックス値 0 は最初のインデックスを示します。
HDF4 ファイルには、オプションとして、ファイルに含まれているデータを記述する "属性" と呼ばれる情報を含めることができます。HDF4 ファイル全体に関連付けられている属性は "グローバル" 属性と呼ばれます。データセットに関連付けられている属性は "ローカル" 属性と呼ばれます。
attr = sd.readAttr(sdID,0)
attr = '02-Sep-2010 11:13:16'
インポートするデータセットの選択
データセット temperature のインデックス番号を特定します。次に、そのデータセットの識別子を取得します。
idx = sd.nameToIndex(sdID,"temperature");
sdsID = sd.select(sdID,idx);sd.select は、HDF4 SD データセット識別子 sdsID を返します。
データセット情報の取得
関数 matlab.io.hdf4.sd.getInfo を使用して、sdsID で指定されているデータセットの情報を取得します。この関数は、SD API のルーチン SDgetinfo に相当します。
[name,dims,datatype,nattrs] = sd.getInfo(sdsID)
name = 'temperature'
dims = 1×2
20 10
datatype = 'double'
nattrs = 11
sd.getInfo は、データセットの名前、サイズ、データ型、属性の数に関する情報を返します。
データセット全体の読み取り
データセット識別子 sdsID で指定するデータセット全体の内容を読み取ります。
data = sd.readData(sdsID);
データセットの一部の読み取り
2 行目の最初の列から、データセットの 2 行 4 列の部分を読み取ります。関数 matlab.io.hdf4.sd.readData を使用します。この関数は、SD API のルーチン SDreaddata に相当します。start の入力は、データセット内でデータの読み取りの開始位置を指定するインデックス値のベクトルです。count の入力は、各データセットの次元に沿って読み取る要素の数を指定するベクトルです。
start = [0 1]; count = [2 4]; data2 = sd.readData(sdsID,start,count)
data2 = 2×4
21 41 61 81
22 42 62 82
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)
参考
sd.getInfo | sd.readData | sd.endAccess | sd.close | sd.start | sd.fileInfo