之前我们说过,读取数据可以通过高级函数来进行,官网链接。这次直接使用hdfread函数来读取。

语法

  • data = hdfread(filename, datasetname)
  • data = hdfread(hinfo)
  • data = hdfread(...,param,value,...)
  • data = hdfread(filename,EOSname,param,value,...)
  • [data,map] = hdfread(...)

    说明

  • data = hdfread(filename, datasetname)filename 指定的 HDF4 或 HDF-EOS 文件返回 datasetname 指定的数据集中的所有数据。要确定 HDF4 文件中的数据集名称,请使用 hdfinfo 函数。

  • data = hdfread(hinfo) 返回结构体 hinfo 指定的数据集中的所有数据,该结构体由 hdfinfo 函数返回。在结构体 hinfo 中指定与特定类型的数据集相关的字段,并在有多个数据集时使用索引指定是哪个数据集。有关详细信息,请参阅指定要读取的数据集
  • data = hdfread(...,param,value,...) 根据指定参数和值对组返回数据子集。请参阅下表以查找不同数据集类型的有效参数和值。
  • data = hdfread(filename,EOSname,param,value,...)EOSname 指定的 HDF-EOS 点、网格或分段中设置数据字段的子集。
  • [data,map] = hdfread(...) 返回 8 位光栅图像的图像 data 和颜色图 map

    例子

    我们之前先将数据写入文件中,我们将它读取出来

    写操作

    1. import matlab.io.hdf4.*
    2. sdID = sd.start('C:\Users\*****\Desktop\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);
    10. B = [9 9 9 9 9];
    11. start = [1 0];
    12. sd.writeData(sdsID,start,B);
    13. sd.endAccess(sdsID);
    14. sd.close(sdID);

    读操作

    1. fileinfo = hdfinfo('C:\Users\***\Desktop\mydata.hdf')

    fileinfo =
    包含以下字段的 struct:

  1. Filename: 'C:\Users\25626\Desktop\mydata.hdf'
  2. SDS: [1×1 struct]
  1. sds_info = fileinfo.SDS(1)

sds_info =

包含以下字段的 struct:

  1. Filename: 'C:\Users\25626\Desktop\mydata.hdf'
  2. Type: 'Scientific Data Set'
  3. Name: 'A'
  4. Rank: 2
  5. DataType: 'double'
  6. Attributes: []
  7. Dims: [2×1 struct]
  8. Label: {}
  9. Description: {}
  10. Index: 0
  1. data = hdfread(sds_info);

image.png 图1. 读取的数据