如何读取存储在HDF5

时间:2015-08-08 20:01:00

标签: c++ c hdf5

我有一个HDF5数据集存档,使用H5::ArrayTypedouble[3]编写。 DataSpace是一维(rank=1),其中包含ndat个条目(每个类型double[3])。

现在我想只读取每个double[3]中的第二个到double s的1D缓冲区。我怎么能这样做?

如果相反,DataSpace是尺寸为{ndat,3}的2D,我可以简单地使用超平板选择方法来挑选第二维中的中间元素。我也能在这做吗?怎么样?

我对C或C ++中的答案感到满意。

1 个答案:

答案 0 :(得分:0)

好的,所以我对此进行了实验,发现这是不可能,我认为这是HDF5的限制。从本质上讲,HDF5将数据类型视为基本类型,并不会将其分解。因此,对于使用std::array<double,3>编写的HDF5 H5::ArrayType和使用double[3]编写的H5::PredType::NATIVE_DOUBLE根本不同:前者无法读入后者,反之亦然。

所以唯一的解决方案是避免使用H5 :: ArrayType 并使用多维数据空间。