【问题标题】:Appending data to the same dataset in hdf5 in matlab在matlab中将数据附加到hdf5中的同一数据集
【发布时间】:2013-02-26 04:39:54
【问题描述】:

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

【问题讨论】:

    标签: file matlab append hdf5


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案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 来完成。

      【讨论】:

      • 这对那些拥有较新版本的 Matlab 的人会有帮助,但是对于我们来说,我们在问题中已经写了我们没有 h5write 功能。
      猜你喜欢
      • 2017-06-19
      • 2022-11-12
      • 2014-07-19
      • 2018-02-22
      • 2018-04-14
      • 2011-11-11
      • 2017-10-27
      • 2013-03-01
      • 1970-01-01
      相关资源
      最近更新 更多