之前我们说过,读取数据可以通过高级函数来进行,官网链接。这次直接使用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: 2
DataType: 'double'
Attributes: []
Dims: [2×1 struct]
Label: {}
Description: {}
Index: 0
data = hdfread(sds_info);
图1. 读取的数据