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"

其他文件夹

要写入不同于当前文件夹的文件夹,请在 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"

数据集名称,指定为字符串标量或字符向量,其中包含 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 中推出

全部展开