主要内容

h5create

创建 HDF5 数据集

说明

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

示例

h5create(filename,ds,sz,Name=Value) 使用一个或多个名称-值参量指定选项。例如,ChunkSize=[5 5] 指定 5×5 数据集,它们可以单独存储在 HDF5 文件中。

示例

示例

全部折叠

使用完整路径 /g1/g2/myDataset 创建一个固定大小的 100×200×300 数据集 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

创建两个 HDF5 文件,每个文件包含一个 1000×2000 数据集。对第一个数据集使用具有最大压缩的 deflate 过滤器,对第二个数据集使用具有熵编码的 SZIP 过滤器。应用压缩过滤器时,必须指定块大小。

h5create("myFileDeflate.h5","/myDatasetDeflate",[1000 2000], ...
         ChunkSize=[50 80],Deflate=9)
h5create("myFileSZIP.h5","/myDatasetSZIP",[1000 2000], ...
         ChunkSize=[50 80],SZIPEncodingMethod="entropy")

显示两个文件的内容,并观察不同过滤器。

h5disp("myFileDeflate.h5")
HDF5 myFileDeflate.h5 
Group '/' 
    Dataset 'myDatasetDeflate' 
        Size:  1000x2000
        MaxSize:  1000x2000
        Datatype:   H5T_IEEE_F64LE (double)
        ChunkSize:  50x80
        Filters:  deflate(9)
        FillValue:  0.000000
h5disp("myFileSZIP.h5")
HDF5 myFileSZIP.h5 
Group '/' 
    Dataset 'myDatasetSZIP' 
        Size:  1000x2000
        MaxSize:  1000x2000
        Datatype:   H5T_IEEE_F64LE (double)
        ChunkSize:  50x80
        Filters:  szip
        FillValue:  0.000000

将随机化的数据写入每个数据集。

myData = rand([1000 2000]);
h5write("myFileDeflate.h5","/myDatasetDeflate",myData)
h5write("myFileSZIP.h5","/myDatasetSZIP",myData)

通过检查生成的文件的大小来比较压缩过滤器。对于这些数据,deflate 过滤器提供更大的压缩。

deflateListing = dir("myFileDeflate.h5");
SZIPListing = dir("myFileSZIP.h5");
deflateFileSize = deflateListing.bytes
deflateFileSize = 
15117631
SZIPFileSize = SZIPListing.bytes
SZIPFileSize = 
16027320
sizeRatio = deflateFileSize/SZIPFileSize
sizeRatio = 
0.9432

创建一个二维数据集 myDataset3,它在第二个维度上是无限的。将数据集的任一维度设置为 Inf 时,必须指定 ChunkSize 名称-值参量。

h5create("myFile.h5","/myDataset3",[200 Inf],ChunkSize=[20 20])

将数据写入 myDataset3。您可以沿第二个维度写入任意大小的数据,因为此维度是无限的。此外,由于数据集的一个维度是无限的,因此在向数据集写入数据时,您必须指定 startcount 参量。

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 尚不存在,则 h5create 函数会创建该文件。

根据您要写入的位置,filename 可以接受以下形式之一。

位置

形式

当前文件夹

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

示例:"myFile.h5"

其他文件夹

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

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

示例:"/myFolder/myFile.h5"

远程位置

要写入远程位置,请将 filename 指定为以下形式的统一资源定位器 (URL):

scheme_name://path_to_file/my_file.h5

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

远程位置scheme_name
Amazon S3™s3
Windows Azure® Blob 存储wasb, wasbs

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

示例:"s3://my_bucket/my_path/my_file.h5"

数据集名称,指定为包含要创建的数据集的完整路径名称的字符串标量或字符向量。如果您指定的数据集当前尚不存在,则 h5create 函数将创建该数据集。此外,如果您指定的中间组当前尚不存在,则 h5create 函数会创建这些组。

示例: "/myDataset"

示例: "/g1/g2/myNestedDataset"

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

示例: 50

示例: [2000 1000]

示例: [100 200 Inf]

数据类型: double

名称-值参数

全部折叠

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

示例: h5create("myFile.h5","/dataset1",[1000 2000],ChunkSize=[50 80],CustomFilterID=307,CustomFilterParameters=6) 使用 50×80 个块、注册的 bzip2 滤波器(标识符 307)以及压缩数据块大小 6,在 HDF5 文件 myFile.h5 中创建 1000×2000 数据集 dataset1

数据集的数据类型,指定为以下值之一,表示 MATLAB® 数据类型:

  • "double"

  • "single"

  • "uint64"

  • "int64"

  • "uint32"

  • "int32"

  • "uint16"

  • "int16"

  • "uint8"

  • "int8"

  • "string"

数据类型: string | char

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

示例: 10

示例: [20 10 100]

数据类型: double

Deflate 压缩级别,指定为从 0 到 9 的整数标量值。默认值 0 表示没有压缩。值 1 表示最小压缩,值 9 表示最大压缩。如果指定 Deflate,则还必须指定 ChunkSize

无法在同一函数调用中同时指定 DeflateSZIPEncodingMethod

数据类型: double

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

数据类型: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

32 位弗莱彻校验和过滤器,指定为数值或逻辑值 1 (true) 或 0 (false)。弗莱彻校验和过滤器验证文件中传输的数据是否无误。如果指定 Fletcher32,则还必须指定 ChunkSize

数据类型: logical | double

Shuffle 过滤器,指定为数值或逻辑值 1 (true) 或 0 (false)。Shuffle 过滤器通过重新排列存储在内存中的数据的字节顺序来提高压缩比。如果指定 Shuffle,则还必须指定 ChunkSize

数据类型: logical | double

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

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

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

数据类型: string | char

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

如果不为 CustomFilterID 指定值,则数据集不会使用动态加载的过滤器进行压缩。

如果指定 CustomFilterID,则还必须指定 ChunkSize

数据类型: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

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

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

如果指定 CustomFilterParameters,则还必须指定 CustomFilterID

数据类型: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

自 R2024b 起

SZIP 压缩的编码方法,指定为 "entropy""nearestneighbor"entropy 方法最适合已处理过的数据;nearestneighbor 方法会预处理数据,然后应用 entropy 方法。如果指定 SZIPEncodingMethod,则还必须指定 ChunkSize

无法在同一函数调用中同时指定 SZIPEncodingMethodDeflate

数据类型: string | char

自 R2024b 起

SZIP 压缩的每个块的像素数(HDF5 数据元素),指定为 2 到 32 之间的偶数。如果指定 SZIPPixelsPerBlock,则还必须指定 SZIPEncodingMethodSZIPPixelsPerBlock 的值必须小于或等于每个数据集块中的元素数。

示例: 32

数据类型: double | single | uint8 | uint16 | uint32 | uint64 | int8 | int16 | int32 | int64

详细信息

全部折叠

提示

版本历史记录

在 R2011a 中推出

全部展开