Development Environment | ![]() ![]() |
MATLAB HDF 関数呼び出し方法
それぞれのHDF API は、データを読み書きし、他の関連関数を実行するルーチンから構成されています。たとえば、HDF SD APIは、データをオープン(SDopen
)、クローズ(SDend
)、読み出す(SDreaddata
)といった別々のCルーチンで構成されています。
MATLABは、個々のAPIルーチンに対応する関数をサポートするのではなく、それぞれのHDF APIを単一の関数でサポートしています。ユーザは、この単一の関数を使用して、最初の引数に、HDF APIを構成する個別ルーチンの名称を指定するだけで、HDF APIに含まれる全てのルーチンにアクセスすることが可能となります。
たとえば、Cプログラムに含まれるHDFファイルへのアクセスを終了するために、HDF SD APIルーチンを呼び出すとします。
status = SDend(sd_id);
MATLABでは、このAPIに関連するMATLAB関数を使用するだけで、このルーチンを呼び出すことができます。HDFAPIに関連するMATLAB関数の名前は、全てAPIの頭字語を含んでいます。たとえばHDF SD APIのルーチンにアクセスするMATLAB関数には、hdfsd
という名前が付けられているのです。
この関数の最初の引数に、APIルーチンの名前の頭字語を取って指定し、残りの引数を必要な順番に設定します。そして、MATLABから、SDend
ルーチンをコールします。
status = hdfsd('end',sd_id);
この手法を知っていれば、HDF APIルーチンを呼び出すときのMATLAB関数の使用法をすぐに決定することができます。しかし、HDF APIルーチンの中には、特に、データの出力に出力引数を使うルーチンでは、MATLABとコール形式(引数の順番)が異なるものもあります。詳細は、出力引数をもつHDFルーチンの取扱いを参照してください。正しいシンタックスを確認するには、MATLABのオンラインヘルプを利用してください。
注意 この節では、HDF APIのある特定のルーチンについて参照する場合、MATLAB関数名ではなく、Cライブラリの名前を表記に使用しています。これは、HDFライブラリ名の使用により、説明がより簡潔になり、NCSAマニュアルから関数に関する情報をより容易に探し出すことができるからです。 |
出力引数をもつHDFルーチンの取扱い
データを出力するために出力引数をもつHDF API ルーチンをコールするとき、すべての出力引数をすべて、戻り値として設定する必要があります。たとえば、Cのシンタックスで、SDfileinfo
ルーチンは、2つの出力引数、ndatasets
とnglobal_atts
にHDFファイルに関するデータを出力します。
status = SDfileinfo(sd_id, ndatasets, nglobal_atts);
このルーチンをMATLABからコールするには、出力引数を戻り値に変更する必要があります。
[ndatasets, nglobal_atts, status] = hdfsd('fileinfo',sd_id);
出力引数の並び順と同じ順番で出力値を指定してください。対象の関数の戻り値status
は、常に最後に設定されます。
HDF ライブラリシンボリックコンテンツの取り扱い
HDF APIsのC バージョンは、ヘッダファイルの中に定義されたシンボリックなコンテンツを使って、モードとデータタイプを設定します。たとえば、SDstart
ルーチンは、シンボリックなコンテンツを使って、HDFファイルを開くモードを指定しています。
sd_id = SDstart("my_file.hdf",DFACC_RDONLY);
このルーチンをMATLABからコールするときは、これらのコンテンツをテキスト文字列として指定します。
sd_id = hdfsd('start','my_file.hdf','DFACC_RDONLY')
MATLABでは、定数を何ら省かずに指定することはもちろんのこと、接頭辞を省いて指定することもできます。たとえば、SDstart
を呼び出すときに、文字列、'DFACC_RDONLY'
、'dfacc_rdonly'
、'rdonly'
の3種類のいずれかを使用することができます。ここで大文字、子文字のいずれを用いても正確な指定が可能であることに注意してください。
![]() | MATLAB HDF アプリケーションプログラミングインタフェース | HDFデータのMATLABワークスペースへのインポート | ![]() |