我必须将所有大数据放在一起放在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函数。
答案 0 :(得分:2)
您无法使用hdf5write
执行此操作,但如果您的Matlab版本不太旧,则可以使用h5create
和h5write
执行此操作。此示例来自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页面提供了有关如何附加到数据集的示例。