【问题标题】:How to read one component of ArrayType stored in HDF5如何读取存储在 HDF5 中的 ArrayType 的一个组件
【发布时间】:2023-03-08 20:31:01
【问题描述】:

我的文件中有一个 HDF5 数据集,它是使用 H5::ArrayType 为 double[3] 编写的。 DataSpace 是一维的 (rank=1),带有 ndat 条目(每个 double[3] 类型)。

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

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

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

【问题讨论】:

    标签: c++ c hdf5


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-11-02
      • 2014-09-27
      • 1970-01-01
      • 2017-10-18
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 2014-12-01
      相关资源
      最近更新 更多