HDF4 から MATLAB 構文へのマッピング
各 HDF4 API には、ファイルからのデータの読み取り、ファイルへのデータの書き込み、その他の関連機能の実行に使用する多くの独立したルーチンが含まれています。たとえば、HDF4 Scientific Data (SD) API には、データを開いたり (SDopen
)、閉じたり (SDend
)、読み取ったり (SDreaddata
) するための個々の C ルーチンが含まれています。SD API、HDF-EOS GD および SW API については、MATLAB® は HDF4 ライブラリの各 C ルーチンにマッピングする関数を用意しています。これらの関数は、matlab.io.hdf4.sd
、matlab.io.hdfeos.gd
および matlab.io.hdfeos.sw
のパッケージに実装されています。たとえば、SD API には HDF4 データセットを閉じるための C ルーチン SDendaccess
があります。
status = SDendaccess(sds_id); /* C code */
MATLAB からこのルーチンを呼び出すには、MATLAB 関数 matlab.io.hdf4.sd.endAccess
を使用します。構文は次とよく似ています。
sd.endAccess(sdsID)
サポートされる残りの HDF4 API については、MATLAB には、特定の HDF4 API 内にあるすべてのルーチンに対してゲートウェイとして機能する関数が 1 つあります。たとえば、HDF Annotations (AN) API には、AN インターフェイスへのアクセスを終了するための C ルーチン ANend
が含まれます。
status = ANend(an_id); /* C code */
MATLAB からこのルーチンを呼び出すには、AN API に関連付けられている MATLAB 関数 hdfan
を使用します。ルーチンの名前から API の頭字語を除いたものを最初の引数として指定し、その他に必須の引数を所定の順番でルーチンに渡さなければなりません。たとえば、次のようにします。
status = hdfan('end',an_id);
HDF4 API ルーチンによっては、データを返すために出力引数が使用されます。MATLAB では出力引数がサポートされていないため、これらの引数は戻り値として指定しなければなりません。
たとえば、ルーチン ANget_tagref
は、注釈のタグと参照番号を 2 つの出力引数 ann_tag
および ann_ref
に返します。C コードは次のとおりです。
status = ANget_tagref(an_id,index,annot_type,ann_tag,ann_ref);
このルーチンを MATLAB から呼び出すには、出力引数を戻り値に変更します。
[tag,ref,status] = hdfan('get_tagref',AN_id,index,annot_type);
戻り値は、出力引数として指定される場合と同じ順で指定します。関数ステータスの戻り値は常に最後の戻り値として指定します。