c++ - 如何读取存储在 HDF5 中的 ArrayType 的一个组件

标签 c++ c hdf5

我有一个 HDF5 数据集,它是使用 H5::ArrayTypedouble[3] 编写的。 DataSpace 是一维的 (rank=1),具有 ndat 条目(每个类型都是 double[3] ).

现在我只想将每个 double[3] 的第二个读取到 double 的一维缓冲区中。我该怎么做?

相反,如果 DataSpace 是维度为 {ndat,3} 的二维,我可以简单地使用 hyper slab 选择方法在第二个中挑选出中间元素方面。我也可以在这里做吗?怎么办?

我对 C 或 C++ 的答案很满意。

最佳答案

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

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

关于c++ - 如何读取存储在 HDF5 中的 ArrayType 的一个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31898010/

相关文章:

c - 如何用 C 语言编写这个简单语句的代码?

c - IN 在 Windows 设备驱动函数中是什么意思?

c - 最后一个难题是在 C 中更改此函数

python - 我可以使用 h5py 在一行中将字符串写入 HDF5 文件,而不是循环遍历条目吗?

python - 写文件时指定h5py路径?

c++ - 对左值执行算术运算

c++ - 递归调用重载的c++函数

c++ - GLfloats之间的比较

c++ - 假设指针是一个结构

搜索 HDF5 数据集