MATLAB关于hdf的函数和介绍有很多,而我只浏览了我需要的部分,在经过代码检验的基础上做一个简单的总结,我们使用hdf文件的流程如下。
流程图
相关代码
初次写入
import matlab.io.hdf4.*sdID = sd.start('mydata.hdf', 'create'); %建立文件,并且返回文件标识符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); %创建文件夹start = [0, 0];sd.writeData(sdsID, start, A); %在start出写入数据A,数据A的标识符为sdsIDsd.endAccess(sdsID);sd.close(sdID);
追加写入
import matlab.io.hdf4.*sdID = sd.start('C:\Users\25626\Desktop\mydata.hdf','write'); %使用'write',其他一致B = [1, 1, 1, -1, -1];ds_name = 'B';ds_type = 'double';ds_dims = size(B);sdsID = sd.create(sdID,ds_name,ds_type,ds_dims); %创建数据集start = [0 0];sd.writeData(sdsID,start,B);sd.endAccess(sdsID);sd.close(sdID);
一次性写入A, B
import matlab.io.hdf4.*sdID = sd.start('C:\Users\25626\Desktop\mydata.hdf', 'create'); %建立文件,并且返回文件标识符A = [1, 2, 3, 4, 5; 6, 7, 8, 9, 10; 11, 12, 13, 14, 15];B = [1, 1, 1, -1, 1];ds_name = 'A'; ds_name1 = 'B';ds_type = 'double'; ds_type1 = 'double';ds_dims = size(A); ds_dims1 = size(B);sdsID1 = sd.create(sdID, ds_name, ds_type, ds_dims); %创建数据集sdsID2 = sd.create(sdID, ds_name1, ds_type1, ds_dims1);start = [0, 0];sd.writeData(sdsID1, start, A); %在start出写入数据A,数据A的标识符为sdsIDsd.writeData(sdsID2, start, B);sd.endAccess(sdsID1);sd.close(sdID);fileinfo = hdfinfo('C:\Users\25626\Desktop\mydata.hdf');sds_info = fileinfo.SDS(1);data = hdfread(sds_info);sds_info = fileinfo.SDS(2);data1 = hdfread(sds_info);
图1. 读取结果
图2. 读取结果

图1. 读取结果
图2. 读取结果