Main Content

matlab.io.hdf4.sd.setFillMode

Namespace: matlab.io.hdf4.sd

Set current fill mode of file

Syntax

prevmode = setFillMode(sdID,fillmode)

Description

prevmode = setFillMode(sdID,fillmode) returns the previous fill mode of a file and resets it to fillmode. This setting applies to all datasets contained in the file identified by sdID.

Possible values of fillmode are 'fill', and 'nofill'. 'fill' is the default mode and indicates that fill values will be written when the dataset is created. 'nofill' indicates that the fill values will not be written.

When a fixed-size dataset is created, the first call to sd.writeData will fill the entire dataset with the default or user-defined fill value if fillmode is 'fill'. In datasets with an unlimited dimension, if a new write operation takes place along the unlimited dimension beyond the last location of the previous write operation, the array locations between these written areas will be initialized to the user-defined fill value, or the default fill value if a user-defined fill value has not been specified.

If it is certain that all dataset values will be written before any read operation takes place, there is no need to write the fill values. Calling sd.setFillMode with 'nofill' can improve performance in this case.

This function corresponds to the SDsetfillmode function in the HDF library C API.

Examples

Write two partial records. Write the first in 'nofill' mode, and the second with 'fill' mode.

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