3

我必须将所有庞大的数据放在 hdf5 中的单个数据集中。现在,问题是,如果您尝试:

>> hdf5write('hd', '/dataset1', [1;2;3])
>> hdf5write('hd', '/dataset1', [4;5;6], 'WriteMode', 'append')
??? Error using ==> hdf5writec
writeH5Dset: Dataset names must be unique when appending data.

如您所见,当您尝试将数据附加到同一数据集时,hdf5write 会报错。我环顾四周,发现一种可能的解决方法是先从数据集中获取数据,然后在 matlab 环境中直接连接数据。当然,这对于小数据来说不是问题。对于这种情况,我们谈论的是千兆字节的数据,Matlab 开始大喊内存不足。

因此,在这种情况下,我有哪些可用选项?

注意:我们的 matlab 版本中没有 h5write 函数。

4

2 回答 2

2

你不能用 来做hdf5write,但是如果你的 Matlab 版本不是太旧,你可以用h5createand来做h5write。此示例取自以下文档h5write

将数据附加到无限数据集。

h5create('myfile.h5','/DS3',[20 Inf],'ChunkSize',[5 5]);
for j = 1:10
    data = j*ones(20,1);
    start = [1 j];
    count = [20 1];
    h5write('myfile.h5','/DS3',data,start,count);
end
h5disp('myfile.h5');

对于旧版本的 Matlab,应该可以使用 Matlab 的 HDF5 低级 API 来完成。

于 2013-03-11T16:32:31.667 回答
2

我相信“附加”模式是将数据集添加到现有文件中。

hdf5write 似乎不支持附加到现有数据集。如果没有较新的 h5write 函数,最好的办法是编写一个小型实用程序,其中包含 H5* 包函数公开的低级 HDF5 库函数。

为了帮助您入门,文档页面有一个关于如何附加到数据集的示例。

于 2013-03-11T13:15:20.457 回答