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的标识符为sdsID
sd.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的标识符为sdsID
sd.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. 读取结果