Main Content

matlab.io.hdf4.sd.setFillMode

パッケージ: matlab.io.hdf4.sd

ファイルの現在の埋め込みモードの設定

構文

prevmode = setFillMode(sdID,fillmode)

説明

prevmode = setFillMode(sdID,fillmode) は、ファイルの以前の埋め込みモードを返して、fillmode にリセットします。この設定は、sdID で指定されるファイルに含まれるすべてのデータセットに適用されます。

fillmode に指定できる値は、'fill''nofill' です。'fill' は既定のモードで、データセットが作成される際に埋め込み値が書き込まれることを示しています。'nofill' は、埋め込み値が書き込まれないことを示します。

fillmode'fill' の場合、固定サイズのデータセットが作成される際に、sd.writeData の最初の呼び出しで、データセット全体が既定またはユーザー指定の埋め込み値で埋められます。無制限の次元をもつデータセットで、直前の書き込み操作の最後の位置より後に、無制限の次元に沿って新たに書き込み操作が行われると、これらの書き込み領域の間の配列位置は、ユーザー定義の埋め込み値で初期化されるか、ユーザー定義の埋め込み値が指定されていない場合には既定の埋め込み値で初期化されます。

読み取り操作が行われる前にすべてのデータセット値が書き込まれることが確実にわかっている場合は、埋め込み値を書き込む必要はありません。この場合、'nofill' を指定して sd.setFillMode を呼び出すと、パフォーマンスが改善されることがあります。

この関数は、HDF ライブラリ C API の関数 SDsetfillmode に相当します。

2 つの部分レコードを書き込みます。最初の部分を 'nofill' モードで書き込み、2 番目を 'fill' モードで書き込みます。

import matlab.io.hdf4.*
sdID = sd.start('myfile.hdf','create');
sd.setFillMode(sdID,'nofill');
sdsID = sd.create(sdID,'temperature','double',[10 10 0]);
sd.writeData(sdsID,[0 0 0], rand(5,5));
sd.setFillMode(sdID,'fill');
sd.setFillValue(sdsID,-999);
sd.writeData(sdsID,[0 0 1], rand(5,5));
sd.endAccess(sdsID);
sd.close(sdID);