Main Content

hdf5write

(不推荐)将数据写入 HDF5 格式的文件中

不推荐使用 hdf5write。请改用 h5write

说明

hdf5write(filename,loc,ds) 将数据 ds 写入由 filename 指定的 HDF5 文件。如果 filename 不存在,hdf5write 将进行创建。如果 filename 存在,默认情况下,hdf5write 会覆盖文件中的现有数据。可以通过使用可选的名称-值参量将数据追加到现有文件中。

hdf5write(filename,details1,ds1,details2,ds2,...details,ds) 使用一个或多个输入结构体中的值将一个或多个数据集 ds 写入到 filename

hdf5write(filename,details,attr) 使用 details 中的值将元数据 attr 写入到 filename

hdf5write(___,Name,Value) 支持上述语法中的任何输入参量,且可使用可选的名称-值对组参量。

输入参数

全部折叠

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

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

位置

形式

当前文件夹

指定 filename 中文件的名称。

例如:'myFile.h5'

其他文件夹

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

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

示例:'myFolder\myFile.h5'

文件中的位置,指定为字符向量或字符串标量,包含向其写入数据的数据集或组的完整路径名称。

hdf5write 用于将数据写入 HDF5 文件的输入结构体,指定为一个或多个结构体数组。details 结构体可以包含不同字段,具体取决于您是将数据集还是属性写入文件。

对于数据集,details 可以有以下字段:

  • Location - 字符向量或字符串标量,其中包含要写入数据的组或数据集的完整路径名称。

  • Name - 字符向量或字符串标量,其中包含要分配给输入数据集的名称。

对于属性,details 可以有以下字段:

  • AttachedTo - 结构体数组,其中包含输入属性修改的对象的位置。

  • AttachType - 输入属性修改的对象类型,指定为 'group''dataset'

  • Name - 字符向量或字符串标量,其中包含要分配给输入属性的名称。

要写入 HDF5 文件的输入数据,指定为以下一项或多项:

  • 数值数组

  • 字符向量

  • 字符串标量

  • 字符向量元胞数组

  • 字符串数组

  • 数值数据元胞数组

  • 结构体数组

  • HDF5 对象。

属性名称,指定为包含属于某组或数据集的属性名称的字符向量或字符串标量。

名称-值参数

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

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

示例: 'WriteMode','append' 将数据追加到现有 HDF5 文件中。

与 MATLAB 7.1 及更早版本的兼容性,指定为包含 'V71Dimensions' 以及 truefalse 的逗号分隔对组。如果指定 true,则 hdf5write 会置换数据集的前两个维度,使写入文件的数据集的维度顺序与以前版本的 hdf5write(MATLAB 7.1 [R14SP3] 和更早版本)一致。

'V71Dimensions' 的默认值为 false,它不会更改输出数据维度的顺序。

HDF5 以行优先排序描述数据集维度,MATLAB 以列优先顺序存储数据。但是,置换这些维度可能无法正确反映数据的意图,并且可能会使元数据失效。写入文件的数据正确反映数据集的数据顺序;输出数据集中的每个维度都与对应 MATLAB 变量中的相同维度匹配。

示例: 'V71Dimensions',true

写入模式,指定为以逗号分隔的对组,该对组由 'WriteMode' 和一个字符向量或字符串标量组成。将 'WriteMode' 指定为以下值之一:

  • 'overwrite'(默认值)- 覆盖文件。

  • 'append' - 将数据追加到现有 HDF5 文件。

示例: 'WriteMode','append'

示例

全部折叠

将数据写入名为 myfile.h5myfile2.h5myfile3.h5 的三个不同 HDF5 文件。

将一个由 uint8 值组成的 5×5 数据集写入文件 myfile.h5 的根组。

hdf5write('myfile.h5','/dataset1',uint8(magic(5)))

将一个由文本条目组成的 2×2 数据集写入文件 myfile2.h5 中的一个子组。

dataset = {'north','south';'east','west'};
hdf5write('myfile2.h5','/group1/dataset1.1',dataset);

将数据集和属性写入 myfile2.h5 中的一个现有组。

dset = single(rand(10,10));
dset_details.Location = '/group1/dataset1.2';
dset_details.Name = 'Random';

attr = 'Some random data';
attr_details.Name = 'Description';
attr_details.AttachedTo = '/group1/dataset1.2/Random';
attr_details.AttachType = 'dataset';

hdf5write('myfile2.h5',dset_details,dset,...
           attr_details,attr,'WriteMode','append');

使用对象将数据集写入文件 myfile3.h5

dset = hdf5.h5array(magic(5));
hdf5write('myfile3.h5','/g1/objects',dset);

详细信息

全部折叠

数据类型映射

下表列出了 hdf5write 如何将数据类型从工作区映射到 HDF5 文件。如果工作区中要写入到文件的数据是 MATLAB 数据类型,hdf5write 使用以下规则将 MATLAB 数据映射到 HDF5 数据对象。

MATLAB 数据类型

HDF5 数据集或属性

数值

对应的 HDF5 本机数据类型。例如,如果工作区的数据类型是 uint8hdf5write 函数将数据以 8 位整数形式写入到文件中。HDF5 数据空间的大小与 MATLAB 数组的大小相同。

字符向量或字符串标量

单个以空值结尾的字符串。

字符向量元胞数组或字符串数组

多个以空值结尾的字符串,每个字符串的长度相同。长度由元胞数组中的最长字符串的长度决定。HDF5 数据空间的大小与元胞数组的大小相同。

数值数据元胞数组

数值数组,维度与元胞数组相同。该数组的各个元素的大小和类型都相同。数据类型由元胞数组中的第一个元素决定。

结构体数组

HDF5 复合类型。结构体中的单个字段对单个数据类型使用相同的数据转换规则。例如,字符串元胞数组变成多个以空值结尾的字符串。

HDF5 对象

如果要写入文件中的数据包含 HDF5 对象,hdf5write 会使用相同的数据类型将数据写入文件。对于所有 HDF5 对象(HDF5.h5enum 对象除外),数据空间的维度与传递到该函数的 HDF5 对象数组的维度相同。对于 HDF5.h5enum 对象,HDF5 文件中数据集的大小和维度与对象的数据字段的大小和维度相同。

版本历史记录

在 R2006a 之前推出

另请参阅

| |