Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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')

参考

| | | | | |

関連するトピック