hdf5多个可扩展表

hdf5 multiple extensible tables

本文关键字:可扩展 hdf5      更新时间:2023-10-16

我正在分析大量文件,以提取重要的统计信息。分析程序为每个分析的文件创建大约3000个长度为n(大约100)的双数组,以及命名相应数组内容的字符串。我想将结果写入一个hdf5文件,其中每个数组都被写入一个表,该表的名称是相应的字符串。为此,我使用以下功能:

#include "hdf5.h"
#include "hdf5_hl.h"
 hid_t       file_id;
 hsize_t     dims[RANK]={1,n};
 herr_t      status;

void hdf5_write ( double& array , string arrayname )
{     
 const char * tablename = arrayname.c_str();
 status = H5LTmake_dataset(file_id,tablename,RANK,dims,H5T_NATIVE_DOUBLE,array);
}

这对于分析第一个文件来说很好,但是,当一个接一个地分析多个文件时,现有的表只是被新的数组覆盖,尽管我希望新的数组分别附加到已经存在的表中。这种情况下有hdf 5功能吗?

恐怕您无法使用高级(H5LT)接口进行追加。

下面是一个使用低级接口的完整示例。它要复杂得多,但它可以让你完全控制。

或者,如果你认为这太过分了,你可以问问自己,你真的需要一个大数据集还是多个小数据集。根据您心目中的应用程序,多个数据集可能是更好的设计。