本文介绍matlab写hdf4和hdf5的一些方法。hdf的一些基础信息可以参考:https://sanwen8.cn/p/1fcFE9f.html
1、matlab写hdf4文件
通常有两种方法:
1)matlab.io.hdf4.sd系列函数(matlab.io.hdf4.sd 用于HDF数据集、matlab.io.hdfeos.gd HDF-EOS 格点数据、matlab.io.hdfeos.sw HDF-EOS测绘带文件)
其中,
writeData写数据集
setDataStrs、setDimStrs、setFillValue、setRange设置数据集的特定属性
setAttr设置自定义属性,例如sd.setAttr(sdID,'creation_date',datestr(now));
也可以设置已有属性,sd.setAttr(sdsID,'long_name','Temperature in sunlight.');
该系列函数说明在:https://cn.mathworks.com/help/matlab/ref/matlab.io.hdf4.sd.html
具体参考这个例子:
import matlab.io.hdf4.*sdID = sd.start('myfile.hdf','create');
sd.setAttr(sdID,'creation_date',datestr(now));
sdsID = sd.create(sdID,'temperature','double',[10 20]);
data = rand(10,20);
sd.writeData(sdsID,[0 0],data);
sd.setDataStrs(sdsID,'degrees_celsius','degrees_east','','geo');
sd.setAttr(sdsID,'long_name','Temperature in sunlight.');
dimID0 = sd.getDimID(sdsID,0);
sd.setAttr(dimID0,'long_name','latitude');
sd.endAccess(sdsID);
sd.close(sdID);
对于含有地理信息的hdfeos数据使用matlab.io.hdfeos.gd系列函数操作。
例如,matlab.io.hdfeos.gd.defProj 可以定义投影信息
相关函数的链接在:https://cn.mathworks.com/help/matlab/ref/matlab.io.hdfeos.gd.html
参考这个例子:Create a UTM grid bounded by 54 E to 60 E longitude and 20 N to 30 N latitude (zone 40). Divide the grid into 120 bins along the x-axis and 200 bins along the y-axis.
import matlab.io.hdfeos.*
gfid = gd.open('myfile.hdf','create');
uplft = [210584.50041 3322395.95445];
lowrgt = [813931.10959 2214162.53278];
gridID = gd.create(gfid,'UTMGrid',120,200,uplft,lowrgt);
gd.defProj(gridID,'utm',40,'Clarke 1866',[]);
gd.detach(gridID);
gd.close(gfid);
2)hdfsd函数(matlab不推荐)
http://blog.sciencenet.cn/home.php?mod=space&uid=43777&do=blog&id=364662
2、matlab写hdf5文件
常用的hdf5写函数是
h5write/hdf5write(一样的)
http://cn.mathworks.com/help/matlab/ref/hdf5write.html