我正在分析大量的文件,以剔除重要的统计信息。该分析程序为每个被分析的文件创建大约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);
}这对于分析第一个文件很有效,但是,当一个接一个地分析多个文件时,现有的表只是被新的数组覆盖,尽管我希望将新的数组分别附加到现有的表中。这种情况下有HDF5功能吗?
发布于 2015-02-12 10:43:17
恐怕您不能使用高级(H5LT)接口进行追加。
这是一个complete example using the low level interface。它要复杂得多,但它可以让你完全控制。
或者,如果你认为这有点过头了,你可以问问自己,你是否真的需要一个大型数据集而不是多个小型数据集。根据您考虑的应用程序,多个数据集可能是更好的设计。
https://stackoverflow.com/questions/28384606
复制相似问题