导入相关的文件库

  1. import matlab.io.hdf4.*

我们如果使用的是sd这个接口的话,就是用这个包就可以了,而不用上述的*所有包。

建立一个HDF4文件

使用matlab.io.hdf4.sd.start函数来创建一个HDF4文件。

  1. sdID = sd.start('mydata.hdf', 'create');

sd.start函数创建了一个文件,并且返回了一个sdID的文件标识符,如果我们的文件已经创建完毕,要打开的话,使用sd.start'write'命令,不再用上述的'create'命令。

创建HDF4数据集

如果我们的HDF4数据集还没有创建的话,就可以通过matlab.io.hdf4.sd.create函数命令来创建一个数据集用于存储我们的MATLAB中的矩阵数据。

  1. A = [1, 2, 3, 4, 5; 6, 7, 8, 9, 10; 11, 12, 13, 14, 15];
  2. ds_name = 'A';
  3. ds_type = 'double';
  4. ds_dims = size(A);
  5. sdsID = sd.create(sdID, ds_name, ds_type, ds_dims);

我们使用的sd.create命令最终建立了一个HDF4 SD类型的数据集,并且返回了一个sdsID文件标识符。

将MATLAB数据写入HDF4文件

我们使用matlab.io.hdf4.sd.writedata命令将上面的矩阵A的数据写入数据集,start参数指明了我们的数据从0开始索引。

  1. start = [0, 0];
  2. sd.writeData(sdsID, start, A); %在start出写入数据A,数据A的标识符为sdsID

将MATLAB数据写入数据集中

我们将第一行的数据拿向量B代替,使用[1, 0]表示写在第2行第1列。注意start是从0索引开始的

  1. B = [9, 9, 9, 9, 9];
  2. start = [1, 0];
  3. sd.writeData(sdsID, start, B);

将Metadata写入HDF文件

创建一个名为creation_date的属性,它的值为当前的日期和时间,使用的是sd.setAttr函数。

  1. sd.setAttr(sdID, 'creation_date', datestr(now));

我们预先定义一个属性cordsys,它的值为文本字符串'cartesian', 'polar''spherical'

  1. attr_name = 'cordsys';
  2. attr_value = 'polar';
  3. sd.setAttr(sdsID, attr_name, attr_value);

关闭HDF数据集

使用matlab.io.hdf4.sd.endAccess函数关掉数据集的权限,在我们关闭HDF文件之前必须先把数据集的权限先关掉。

  1. sd.endAccess(sdsID);

关掉HDF文件

使用matlab.io.hdf4.sd.close函数关掉HDF文件。

  1. sd.close(sdID);