将数据附加到matlab中hdf5中的同一数据集

时间:2013-03-11 04:29:02

标签: file matlab append hdf5

我必须将所有大数据放在一起放在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函数。

2 个答案:

答案 0 :(得分:2)

您无法使用hdf5write执行此操作,但如果您的Matlab版本不太旧,则可以使用h5createh5write执行此操作。此示例来自doc of 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来实现。

答案 1 :(得分:1)

我相信'追加'模式是将数据集添加到现有文件中。

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

为了帮助您入门,doc页面提供了有关如何附加到数据集的示例。