之前我们说过,读取数据可以通过高级函数来进行,官网链接。这次直接使用hdfread函数来读取。
语法
data = hdfread(filename, datasetname)data = hdfread(hinfo)data = hdfread(...,param,value,...)data = hdfread(filename,EOSname,param,value,...)-
说明
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。例子
我们之前先将数据写入文件中,我们将它读取出来写操作
import matlab.io.hdf4.*sdID = sd.start('C:\Users\*****\Desktop\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);B = [9 9 9 9 9];start = [1 0];sd.writeData(sdsID,start,B);sd.endAccess(sdsID);sd.close(sdID);
读操作
fileinfo = hdfinfo('C:\Users\***\Desktop\mydata.hdf')
fileinfo =
包含以下字段的 struct:
Filename: 'C:\Users\25626\Desktop\mydata.hdf'SDS: [1×1 struct]
sds_info = fileinfo.SDS(1)
sds_info =
包含以下字段的 struct:
Filename: 'C:\Users\25626\Desktop\mydata.hdf'Type: 'Scientific Data Set'Name: 'A'Rank: 2DataType: 'double'Attributes: []Dims: [2×1 struct]Label: {}Description: {}Index: 0
data = hdfread(sds_info);
图1. 读取的数据
图1. 读取的数据