h5create
创建 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
。您可以沿第二个维度写入任意大小的数据,因为此维度是无限的。此外,由于数据集的一个维度是无限的,因此在向数据集写入数据时,您必须指定 start
和 count
参量。
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
可以接受以下形式之一。
位置 | 形式 | ||||||
---|---|---|---|---|---|---|---|
当前文件夹 | 要写入当前文件夹,请在 示例: | ||||||
其他文件夹 | 要写入不同于当前文件夹的文件夹,请在 示例: 示例: | ||||||
远程位置 | 要写入远程位置,请将
根据远程位置,
有关详细信息,请参阅处理远程数据。 示例: |
数据集名称,指定为包含要创建的数据集的完整路径名称的字符串标量或字符向量。如果您指定的数据集当前尚不存在,则 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
,则必须指定 ChunkSize
。ChunkSize
的长度必须等于 sz
的长度,并且 ChunkSize
的每个条目必须小于或等于 sz
的对应条目。
示例: 10
示例: [20 10 100]
数据类型: double
Deflate 压缩级别,指定为从 0 到 9 的整数标量值。默认值 0 表示没有压缩。值 1 表示最小压缩,值 9 表示最大压缩。如果指定 Deflate
,则还必须指定 ChunkSize
。
无法在同一函数调用中同时指定 Deflate
和 SZIPEncodingMethod
。
数据类型: 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
第三方过滤器的过滤器参数,指定为数值标量或数值行向量。如果指定 CustomFilterID
而没有指定此参量,则 h5create
函数会将空向量传递给 HDF5 库,并且过滤器使用默认参数。
此名称-值参量对应于 HDF5 库中 H5Pset_filter
函数的 cd_values
参量。
如果指定 CustomFilterParameters
,则还必须指定 CustomFilterID
。
数据类型: double
| single
| uint8
| uint16
| uint32
| uint64
| int8
| int16
| int32
| int64
自 R2024b 起
SZIP 压缩的每个块的像素数(HDF5 数据元素),指定为 2 到 32 之间的偶数。如果指定 SZIPPixelsPerBlock
,则还必须指定 SZIPEncodingMethod
。SZIPPixelsPerBlock
的值必须小于或等于每个数据集块中的元素数。
示例: 32
数据类型: double
| single
| uint8
| uint16
| uint32
| uint64
| int8
| int16
| int32
| int64
详细信息
块存储指一种通过将数据集分成称为块的较小数据片段来将数据集存储在内存中的方法。对数据集进行分块可以提高对数据集子集进行操作时的性能,因为可以在 HDF5 文件中单独对这些块进行读写。
提示
要对同一数据集同时启用 deflate 和 SZIP 过滤器,请使用低级
H5P.set_deflate
和H5P.set_szip
函数。
版本历史记录
在 R2011a 中推出通过使用 SZIPEncodingMethod
和 SZIPPixelsPerBlock
名称-值参量,您可以创建使用 SZIP 压缩的数据集。
您可以使用 CustomFilterID
和 CustomFilterParameters
名称-值参量来启用使用动态加载的过滤器的压缩。
您可以在远程位置(例如 Amazon S3、Windows Azure Blob 存储和 HDFS™)创建 HDF5 文件。
您可以创建其名称以 Unicode 字符编码的 HDF5 文件。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)