MATLAB关于hdf的函数和介绍有很多,而我只浏览了我需要的部分,在经过代码检验的基础上做一个简单的总结,我们使用hdf文件的流程如下。

流程图

image.png
图1. 写文件的流程图

相关代码

初次写入

  1. import matlab.io.hdf4.*
  2. sdID = sd.start('mydata.hdf', 'create'); %建立文件,并且返回文件标识符
  3. A = [1, 2, 3, 4, 5; 6, 7, 8, 9, 10; 11, 12, 13, 14, 15];
  4. ds_name = 'A';
  5. ds_type = 'double';
  6. ds_dims = size(A);
  7. sdsID = sd.create(sdID, ds_name, ds_type, ds_dims); %创建文件夹
  8. start = [0, 0];
  9. sd.writeData(sdsID, start, A); %在start出写入数据A,数据A的标识符为sdsID
  10. sd.endAccess(sdsID);
  11. sd.close(sdID);

追加写入

  1. import matlab.io.hdf4.*
  2. sdID = sd.start('C:\Users\25626\Desktop\mydata.hdf','write'); %使用'write',其他一致
  3. B = [1, 1, 1, -1, -1];
  4. ds_name = 'B';
  5. ds_type = 'double';
  6. ds_dims = size(B);
  7. sdsID = sd.create(sdID,ds_name,ds_type,ds_dims); %创建数据集
  8. start = [0 0];
  9. sd.writeData(sdsID,start,B);
  10. sd.endAccess(sdsID);
  11. sd.close(sdID);

一次性写入A, B

  1. import matlab.io.hdf4.*
  2. sdID = sd.start('C:\Users\25626\Desktop\mydata.hdf', 'create'); %建立文件,并且返回文件标识符
  3. A = [1, 2, 3, 4, 5; 6, 7, 8, 9, 10; 11, 12, 13, 14, 15];
  4. B = [1, 1, 1, -1, 1];
  5. ds_name = 'A'; ds_name1 = 'B';
  6. ds_type = 'double'; ds_type1 = 'double';
  7. ds_dims = size(A); ds_dims1 = size(B);
  8. sdsID1 = sd.create(sdID, ds_name, ds_type, ds_dims); %创建数据集
  9. sdsID2 = sd.create(sdID, ds_name1, ds_type1, ds_dims1);
  10. start = [0, 0];
  11. sd.writeData(sdsID1, start, A); %在start出写入数据A,数据A的标识符为sdsID
  12. sd.writeData(sdsID2, start, B);
  13. sd.endAccess(sdsID1);
  14. sd.close(sdID);
  15. fileinfo = hdfinfo('C:\Users\25626\Desktop\mydata.hdf');
  16. sds_info = fileinfo.SDS(1);
  17. data = hdfread(sds_info);
  18. sds_info = fileinfo.SDS(2);
  19. data1 = hdfread(sds_info);

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