C++ 如何读取HDF5中存储的ArrayType的一个组件
我在文件中有一个HDF5数据集,它是使用C++ 如何读取HDF5中存储的ArrayType的一个组件,c++,c,hdf5,C++,C,Hdf5,我在文件中有一个HDF5数据集,它是使用H5::ArrayType为double[3]编写的。DataSpace是一维(rank=1)的ndat条目(每种类型为double[3]) 现在我只想把每个double[3]中的第二个读入doubles的1D缓冲区。我该怎么做 相反,如果数据空间是二维的,维度为{ndat,3},我可以简单地使用“超板”选择方法来选择第二维度中的中间元素。我也可以在这里做吗?怎么做 我很高兴C或C++中的答案。 < P>好的,所以我在这个实验中发现,这是不可能>,我认为这
H5::ArrayType
为double[3]
编写的。DataSpace
是一维(rank=1
)的ndat
条目(每种类型为double[3]
)
现在我只想把每个double[3]
中的第二个读入double
s的1D缓冲区。我该怎么做
相反,如果数据空间
是二维的,维度为{ndat,3}
,我可以简单地使用“超板”选择方法来选择第二维度中的中间元素。我也可以在这里做吗?怎么做
<>我很高兴C或C++中的答案。 < P>好的,所以我在这个实验中发现,这是<强>不可能>,我认为这是
H5::ArrayType
编写的HDF5std::array
和使用H5::PredType::NATIVE\u double
编写的double[3]
来说,两者有根本不同:前者不能读入后者,反之亦然
<> P> >唯一的解决方案是<强>避免H5::ArrayType < /强>,并使用多维数据集代替.< /P> < P>好的,因此,我对此进行了实验,发现这是<强>不可能>,我认为HDF5<强>限制>强>。从本质上讲,HDF5将数据类型视为基本类型,不会将其分解。因此,对于使用
H5::ArrayType
编写的HDF5std::array
和使用H5::PredType::NATIVE\u double
编写的double[3]
来说,两者有根本不同:前者不能读入后者,反之亦然
因此,唯一的解决方案是避免H5::ArrayType,而是使用多维数据空间