导入相关的文件库
import matlab.io.hdf4.*
我们如果使用的是sd这个接口的话,就是用这个包就可以了,而不用上述的*
所有包。
建立一个HDF4文件
使用matlab.io.hdf4.sd.start
函数来创建一个HDF4文件。
sdID = sd.start('mydata.hdf', 'create');
sd.start
函数创建了一个文件,并且返回了一个sdID
的文件标识符,如果我们的文件已经创建完毕,要打开的话,使用sd.start
的'write'
命令,不再用上述的'create'
命令。
创建HDF4数据集
如果我们的HDF4数据集还没有创建的话,就可以通过matlab.io.hdf4.sd.create
函数命令来创建一个数据集用于存储我们的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
文件标识符。
将MATLAB数据写入HDF4文件
我们使用matlab.io.hdf4.sd.writedata
命令将上面的矩阵A的数据写入数据集,start
参数指明了我们的数据从0开始索引。
start = [0, 0];
sd.writeData(sdsID, start, A); %在start出写入数据A,数据A的标识符为sdsID
将MATLAB数据写入数据集中
我们将第一行的数据拿向量B代替,使用[1, 0]
表示写在第2行第1列。注意start
是从0索引开始的
B = [9, 9, 9, 9, 9];
start = [1, 0];
sd.writeData(sdsID, start, B);
将Metadata写入HDF文件
创建一个名为creation_date
的属性,它的值为当前的日期和时间,使用的是sd.setAttr
函数。
sd.setAttr(sdID, 'creation_date', datestr(now));
我们预先定义一个属性cordsys
,它的值为文本字符串'cartesian'
, 'polar'
或 'spherical'
attr_name = 'cordsys';
attr_value = 'polar';
sd.setAttr(sdsID, attr_name, attr_value);
关闭HDF数据集
使用matlab.io.hdf4.sd.endAccess
函数关掉数据集的权限,在我们关闭HDF文件之前必须先把数据集的权限先关掉。
sd.endAccess(sdsID);
关掉HDF文件
使用matlab.io.hdf4.sd.close
函数关掉HDF文件。
sd.close(sdID);