Main Content

h5write

将数据写入 HDF5 数据集

说明

示例

h5write(filename,ds,data) 将数据写入指定 HDF5 文件中的整个数据集 ds。如果数据集大小固定,要写入的数据量必须与数据集的大小匹配。

示例

h5write(filename,ds,data,start,count) 将数据的子集写入数据集,从起始位置 start 开始,继续写入 count 个元素。在多维数据集中,count 指定每个方向的距离。如有必要,h5write 可沿任意无限维度扩展可扩展数据集。

示例

h5write(filename,ds,data,start,count,stride) 指定在数据集的每个维度上元素之间的间距 stride

示例

全部折叠

创建一个名为 DS1 的 10×20 数据集。

h5create("myfile.h5","/DS1",[10 20])

将一个 10×20 随机数数组写入该数据集。由于 DS1 的维度是固定的,因此要写入其中的数据量必须与其大小相匹配。

mydata = rand(10,20);
h5write("myfile.h5","/DS1",mydata)

显示文件内容。

h5disp("myfile.h5")
HDF5 myfile.h5 
Group '/' 
    Dataset 'DS1' 
        Size:  10x20
        MaxSize:  10x20
        Datatype:   H5T_IEEE_F64LE (double)
        ChunkSize:  []
        Filters:  none
        FillValue:  0.000000

创建一个名为 DS2 的 10×20 数据集。

h5create("myfile.h5","/DS2",[10 20])

将数据的一个 5×7 子集写入该数据集的最后一个 5×7 块。将 count 指定为 [5 7] 以匹配您所写数据的大小。将 start 指定为 [6 14],因为从该起点移动 count 个元胞将在数据集的最后一个元素中结束。

mydata = rand(5,7);
h5write("myfile.h5","/DS2",mydata,[6 14],[5 7])

将数据写入一个具有无限维度的数据集。

创建一个在第二个维度是无限的数据集。必须指定 ChunkSize 才能将数据集的维度设置为 Inf

h5create("myfile.h5","/g2/DS2",[20 Inf],"Chunksize",[5 5]);

将一个 3×3 数据分块写入 "/g2/DS2"。从起点 [3 2] 开始,一直写到分块的末尾。您可以向数据集的第二个维度写入任何大小的数据,因为该维度是无限的。

data = rand(3);
start = [3 2];
count = [3 3];
h5write("myfile.h5","/g2/DS2",data,start,count);

从数据集中读取所有数据。

h5read("myfile.h5","/g2/DS2")
ans = 20×4

         0         0         0         0
         0         0         0         0
         0    0.8147    0.9134    0.2785
         0    0.9058    0.6324    0.5469
         0    0.1270    0.0975    0.9575
         0         0         0         0
         0         0         0         0
         0         0         0         0
         0         0         0         0
         0         0         0         0
      ⋮

输入参数

全部折叠

现有 HDF5 文件的文件名,指定为字符串标量或字符向量。

根据文件的位置,filename 可以采用下列形式之一。

位置

形式

当前文件夹

指定 filename 中文件的名称。

示例:"myFile.h5"

其他文件夹

如果该文件不在当前文件夹或 MATLAB® 路径下的文件夹中,则在 filename 中指定完整或相对路径。

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

示例:"myFolder\myFile.h5"

远程位置

如果文件存储在远程位置,则 filename 必须包含指定为统一资源定位器 (URL) 形式的文件的完整路径:

scheme_name://path_to_file/filename

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

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

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

示例:"s3://myBucket/myFolder/myFile.h5"

  • 如果您的文件包含多个使用 Family 驱动的物理文件,请使用格式设定符指定 filename。例如,要将 Family 驱动用于两个文件 family0.h5family1.h5,请将 filename 指定为 "family%d.h5"

  • 如果您的文件包含多个使用 Multi 驱动或 Split 驱动的物理文件,请指定 filename 作为物理文件名的前缀。例如,要将 Multi 驱动用于六个文件 multi-b.h5multi-g.h5multi-l.h5multi-o.h5multi-r.h5multi-s.h5,请将 filename 指定为 "multi"

数据集名称,指定为字符串标量或字符向量,其中包含 HDF5 文件中一个现有数据集的名称。

要写入 HDF5 文件的数据。如果在对 h5create 的对应调用中指定了数值数据类型,则 data 是包含浮点或整数数据的数值矩阵。如果不指定 startcount,则数据必须为非稀疏的,并且必须与 HDF5 数据集大小相同。如果数据集中的一个维度是无限的,则要写入的数据的该维度可以是任何大小。

如果在对 h5create 的对应调用中将 "string" 指定为数据类型,则 data 是 MATLAB 字符串数组。字符串数组维度必须与在对 h5create 的调用中指定的维度相匹配。

起始位置,指定为由正整数组成的数值向量。对于 n 维数据集,start 是长度为 n 的向量,其中包含从 1 开始的索引。start 的元素按顺序对应于数据集维度。如果 ds 的任一维度是无限维度,则必须指定 start

如果未指定 start,则 h5write 函数将从每个维度的第一个索引开始写入数据集。

要写入的元素数,指定为由正整数组成的数值向量。对于 n 维数据集,count 是长度为 n 的向量,用于指定要沿每个维度写入数据集的元素数。count 的元素按顺序对应于数据集维度。如果 ds 的任一维度是无限维度,则必须指定 count

沿数据集的每个维度的元素之间的间距,指定为由整数组成的数值向量。对于 n 维数据集,stride 是长度为 n 的向量。stride 向量的元素按顺序对应于数据集维度。值为 1 表示写入时不会跳过对应维度中的元素,值为 2 则每隔一个元素写入一次,依此类推。

如果没有指定 stride,则 h5write 函数写入数据时不会沿每个维度跳过元素。

局限性

  • h5write 不支持在 HDFS™ 远程位置写入文件。

版本历史记录

在 R2011a 中推出

全部展开