Main Content

h5create

创建 HDF5 数据集

说明

示例

h5create(filename,ds,sz) 创建数据集 ds,其名称包括其在 HDF5 文件 filename 中的完整位置,其大小由 sz 指定。

示例

h5create(filename,ds,sz,Name=Value) 指定一个或多个可选的名称-值参数。

例如,ChunkSize=[5 5] 指定数据集的 5×5 分块,它们可以单独存储在 HDF5 文件中。

示例

全部折叠

创建固定大小的 100×200×300 数据集 'myDataset',其完整路径指定为 '/g1/g2/myDataset'

h5create('myfile.h5','/g1/g2/myDataset',[100 200 300])

将数据写入 'myDataset'。由于 'myDataset' 的维度是固定的,因此要写入其中的数据量必须与其大小相匹配。

mydata = ones(100,200,300);
h5write('myfile.h5','/g1/g2/myDataset',mydata)
h5disp('myfile.h5')
HDF5 myfile.h5 
Group '/' 
    Group '/g1' 
        Group '/g1/g2' 
            Dataset 'myDataset' 
                Size:  100x200x300
                MaxSize:  100x200x300
                Datatype:   H5T_IEEE_F64LE (double)
                ChunkSize:  []
                Filters:  none
                FillValue:  0.000000

创建一个单精度 1000×2000 数据集,并应用最高级别的压缩。应用 HDF5 压缩时必须使用数据块存储。

h5create('myfile.h5','/myDataset2',[1000 2000],'Datatype','single', ...
          'ChunkSize',[50 80],'Deflate',9)

显示整个 HDF5 文件的内容。

h5disp('myfile.h5')
HDF5 myfile.h5 
Group '/' 
    Dataset 'myDataset2' 
        Size:  1000x2000
        MaxSize:  1000x2000
        Datatype:   H5T_IEEE_F32LE (single)
        ChunkSize:  50x80
        Filters:  deflate(9)
        FillValue:  0.000000

创建二维数据集 '/myDataset3',该数据集在第二个维度是无限的。必须指定 ChunkSize,才能将数据集的任何维度设置为 Inf

h5create('myfile.h5','/myDataset3',[200 Inf],'ChunkSize',[20 20])

将数据写入 '/myDataset3'。您可以将第二个维度的任何大小的数据写入 '/myDataset3',因为其第二个维度是无限的。

mydata = rand(200,500);
h5write('myfile.h5','/myDataset3',mydata,[1 1],[200 500])

显示 HDF5 文件的全部内容。

h5disp('myfile.h5')
HDF5 myfile.h5 
Group '/' 
    Dataset 'myDataset3' 
        Size:  200x500
        MaxSize:  200xInf
        Datatype:   H5T_IEEE_F64LE (double)
        ChunkSize:  20x20
        Filters:  none
        FillValue:  0.000000

输入参数

全部折叠

文件名,指定为包含 HDF5 文件名称的字符向量或字符串标量。

根据您写入的位置,filename 可以采用以下形式之一。

位置

形式

当前文件夹

要写入当前文件夹,请在 filename 中指定文件名。

示例:'myFile.h5'

其他文件夹

要写入不同于当前文件夹的文件夹,请在 filename 中指定完整或相对路径名称。

示例:'C:\myFolder\myFile.h5'

示例:'myFolder\myFile.h5'

远程位置

要写入远程位置,filename 必须包含指定为统一资源定位器 (URL) 形式的文件的完整路径:

scheme_name://path_to_file/my_file.ext

根据您的远程位置,scheme_name 可以是下表中的值之一。

远程位置scheme_name
Amazon S3™s3
Windows Azure® Blob Storagewasb, wasbs

有关详细信息,请参阅处理远程数据

示例:'s3://bucketname/path_to_file/myFile.h5'

  • 如果 filename 尚不存在,h5create 会创建它。

  • 如果您指定现有 HDF5 文件名和新数据集名称,则 h5create 会将新数据集添加到现有 HDF5 文件中。

数据集名称,指定为包含要创建的数据集的完整路径名称的字符向量或字符串标量。如果您在数据集名称中指定中间组,并且它们以前不存在,则 h5create 会创建它们。

数据集大小,指定为行向量。要指定无限维度,请将 sz 的对应元素指定为 Inf。在这种情况下,您还必须指定 ChunkSize

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: h5create("myFile.h5","/dataset1",[1000 2000],ChunkSize=[50 80],CustomFilterID=307,CustomFilterParameters=6) 使用 bzip2 过滤器的注册过滤器标识符 307 和压缩数据块大小 6,从具有 50×80 个分块的 myFile.h5 HDF5 文件创建 dataset1 数据集。

数据集的数据类型,指定为以下任一 MATLAB® 数据类型。

  • 'double'

  • 'single'

  • 'uint64'

  • 'int64'

  • 'uint32'

  • 'int32'

  • 'uint16'

  • 'int16'

  • 'uint8'

  • 'int8'

  • 'string'

分块大小,指定为包含分块维度的行向量。ChunkSize 的长度必须等于 sz 的长度,并且 ChunkSize 的每个条目必须小于或等于 sz 的对应条目。如果 sz 的任一元素是 Inf,则必须指定 ChunkSize

gzip 压缩级别,指定为 0 到 9 之间的数值,其中 0 是最低压缩级别,9 是最高压缩级别。

数值数据集中缺失数据的填充值,指定为数值。

32 位 Fletcher 校验和过滤器,指定为数值或逻辑值 1 (true) 或 0 (false)。Fletcher 校验和过滤器旨在验证文件中传输的数据是否无误。

Shuffle 过滤器,指定为数值或逻辑值 1 (true) 或 0 (false)。Shuffle 过滤器是一种算法,旨在通过重新排列存储在内存中的数据的字节顺序来提高压缩比。

文本编码,指定为以下值之一:

  • 'UTF-8' - 使用 UTF 8 编码表示字符。

  • 'system' - 使用系统编码将字符表示为字节(不推荐)。

由 The HDF Group 分配的已注册过滤器插件的过滤器标识符,指定为正整数。有关注册过滤器的列表,请参阅 The HDF Group 网站上的过滤器页。

此参数的默认值表示数据集不使用动态加载的过滤器进行压缩。

数据类型: double

第三方过滤器的过滤器参数,指定为数值标量或行向量。如果指定 CustomFilterID 而没有指定此参数,则 h5create 函数会将空向量传递给 HDF5 库,并且过滤器使用默认参数。

此名称-值参数对应于 HDF5 库中 H5Pset_filter 函数的 cd_values 参数。

数据类型: double

局限性

  • h5create 不支持在 HDFS™ 远程位置创建文件。

详细信息

全部折叠

HDF5 中的数据块存储

数据块存储指一种通过将数据集分成称为的较小数据片段来将数据集存储在内存中的方法。对数据集进行分块可以提高对数据集子集进行操作时的性能,因为数据块可以单独在 HDF5 文件中读写。

版本历史记录

在 R2011a 中推出

全部展开